Обсуждаем контроллеры компании Atmel.
Ответить

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 00:00:40

Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 06:57:13

ivanov6 писал(а):Вопрос к автору
Собрал часы, но вопрос по температуре остался. При "потере" датчика "замерзают" показания индикаторов температуры. За сутки реально так случилось. Выключил - включил -Fnd0. Перестыковал датчики - нормально. Кстати в Протеусе, если при работе отключить термометры(установить кнопку), то ситуация аналогичная. Срочно нужен совет по программе - все уже в корпусе.

Программа производит поиск датчика при включении часов. Хотите верте хотите нет, но у меня ни разу не отваливаль датчики.

Я использую новый провод хорошего качества. Если включать в программу переоческий поиск датчика значит нужно жестко пивязывать датчики с воответствующим индикаторам.

А зачем? Это радиолюбительская котструкция и ее работа не планировалась в жестких условиях эксплуотации.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 07:16:50

Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!

Конечно можно.
И в этих часах и во всех других.
А еще вместо DS1820 можно использовать кремневый диод (при измерении положительных температур), только вот вопрос, а зачем? ради чего?
DS1307 + батарейка = два бакса

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 10:09:31

Danko писал(а):
Aaantonnn15 писал(а):Вопрос автору. Интересно можно ли обойтись без ds1307 в конструкции? На борту у меги ведь есть встроенные таймеры!

Конечно можно.
И в этих часах и во всех других.
А еще вместо DS1820 можно использовать кремневый диод (при измерении положительных температур), только вот вопрос, а зачем? ради чего?
DS1307 + батарейка = два бакса


Забыли еще кварц часовой! В моей практике ds не очень точно идет. Постоянно убегает. А точность зависит от часового кварца, правильной разводки платы и еще некоторых параметров. Да и зачем тратить лишних два бакса если ds Вы используете всего как часы? А она ведь гараздо больше может!

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 10:26:13

Здесь идет обсуждение данных часов, а по теоретическим вопросам лучше в ЛС, аську, скайп, маил.ру агент и пр.

Да Мега может многое, да DS1307 врет, но применение её освобождает програмиста от многих проблем. Например резервное питание, а если в схеме используется DS1820, то ...

Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пн сен 17, 2012 15:04:53

Подскажите, прошивку залил в HEX с сайта, ничего не добавлял, подключаю два индикатора (минуты) сначало показавает нули потом восмёрки. я так понимаю программу дополнять надо? Сильно не ругайте, пока пытаюсь разобраться с компиляцией и всем остальным, пока готово только железо.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Ср сен 19, 2012 16:23:54

Вроде разобрался, но не до конца, у меня индикаторы ОА, часы идут нормально, а температурные горят те индикаторы которые не должны гореть - показывают инверсно, в схеме я к ним добавил по ULN2803, почему так может происходить? да и индикаторы на девять вольт и использовал два транзистора в общем аноде.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 08:14:48

m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)



Неужили кто то собирал по этой плате и у него работало!!! или никто по ней за год так и не собирал??? я тут начал было собирать, но что то там нестыковочка какая-то, прикрепляю рисунок со схемой и платой, смотрите как стыкуются две микрухи ULN2803A и 74HC595...
Вложения
схема.JPG
(234.33 KiB) Скачиваний: 1061

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 08:38:40

А в чем вопрос именно?
какие соединения вас смущают?

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 09:28:37

santy писал(а):
m169 писал(а):Доброго времени суток. Плата под данный проект. Пользуйтесь на здоровье. (2стр. 7 пост, от 7 октября 2011 г.)



Неужили кто то собирал по этой плате и у него работало!!! или никто по ней за год так и не собирал??? я тут начал было собирать, но что то там нестыковочка какая-то, прикрепляю рисунок со схемой и платой, смотрите как стыкуются две микрухи ULN2803A и 74HC595...

И в чём проблема?

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 17:09:57

по схеме 1 нога 74й идет на 2 ULN, а по печатке уже 1 нога 74й идет на 7 ULN, и так далее...

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 20:30:48

Тю, а я то думал ...

Все будет работать, но только в программе нужно несколько строк подправить.

m169, я не не ошибаюсь?

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 20:43:08

ну так Ваша прошивка то работать не будет?...

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 18, 2012 20:55:47

В целом будет, но только вместо цифр на экране будут крякозябры :)

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Пт окт 19, 2012 05:32:53

вот именно, опять к Вам обращаться придется, что бы прошивку переделали!

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Вт окт 23, 2012 09:27:00

Danko писал(а):Тю, а я то думал ...

Все будет работать, но только в программе нужно несколько строк подправить.

m169, я не не ошибаюсь?

ошибаетесь, пусть изучает документацию на эти микросхемы.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 25, 2012 13:06:54

Danko писал(а):Кроме DS1307 есть более дешевые и лучшие микросхемы. Например M41T56.

Что дешевле, это верно. В чем она лучше?

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Чт окт 25, 2012 13:51:01

Аппаратная коррекция хода.

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сб ноя 17, 2012 00:25:48

Здравствуйте Danko, помогите пожалуйста по вашей формуле вычисления дня недели по дате, сделать код, без дополнительных функций, только время дата, месяц, год и день недели.
Ранее я тут писал в другом форуме

Спойлер
TovsCat писал(а):Здравствуйте подскажите как всетаки вычисляется этот день недели...
[spoiler]
Danko писал(а):Нет это обычный счетчик от 1 до 7. То что выставишь то и будет считать.

Я в своих часах его вообще не использую, а вычисляю.

Формула есть на Википедии.

Кусок кода из моих часов (Си CVAVR):
Код:
// в данной версии данные хранятся не в двоичной, а в двоично-десятичной системе
unsigned char
myhour, mymin, mysec,    // текушее время
mydate, mymonth, myyear, // текущий календарь
myday;                   // день недели


// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;

   y = bcd2bin(myyear);
   m = bcd2bin(mymonth);

   if (m > 2) { m -= 2;       }
   else       { m += 10; y--; }

   myday = (unsigned char)((bcd2bin(mydate) + y + (y>>2) + ((31 * m) / 12)) % 7);
   
   if (myday == 0) myday = 7;
}//----------

У меня компилятор ругается на undefined symbol 'bcd2bin' , как нужно его правильно прописать?
Мой код
[spoiler]
Код:
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Chip type               : ATmega8
AVR Core Clock frequency: 4,000000 MHz
*****************************************************/
#include <mega8.h>

#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#asm
   .equ __ds1302_port=0x15 ;PORTC
   .equ __ds1302_io=5
   .equ __ds1302_sclk=4
   .equ __ds1302_rst=3
#endasm
#include <ds1302.h>
unsigned char hour,min,sek;   //часы, минуты, секунды
unsigned char day,month,year;   //часы, минуты, секунды
unsigned char   myday;           // день недели


// ---------- вычислить день недели по дате ----------
void date2day(void) {
unsigned int y, m;

   y = bcd2bin(year);
   m = bcd2bin(month);

   if (m > 2) { m -= 2;       }
   else       { m += 10; y--; }

   myday = (unsigned char)((bcd2bin(day) + y + (y>>2) + ((31 * m) / 12)) % 7);
   
   if (myday == 0) myday = 7;
}//-
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;

// DS1302 Real Time Clock initialization
// Trickle charger: Off
rtc_init(0,0,0);
lcd_init(16);

while (1)
      {
              rtc_get_time(&hour,&min,&sek);   //считать время
           rtc_get_date(&day,&month,&year);  //считать дату   
                         lcd_gotoxy(0,0);                               
                          lcd_putchar(hour/10+0x30);
                          lcd_putchar(hour%10+0x30);
                          lcd_putchar(':');
                          lcd_putchar(min/10+0x30);
                          lcd_putchar(min%10+0x30);
                          lcd_putchar('.');
                          lcd_putchar(sek/10+0x30);
                          lcd_putchar(sek%10+0x30); 
                         
                    lcd_gotoxy(0,1);                               
                          lcd_putchar(day/10+0x30);
                          lcd_putchar(day%10+0x30); 
                          lcd_putchar('.');
                          lcd_putchar(month/10+0x30);
                          lcd_putchar(month%10+0x30);
                          lcd_putchar('.');
                          lcd_putsf("20");
                          lcd_putchar((year/10)%10+0x30);
                          lcd_putchar(year%10+0x30); 
                            lcd_putchar(' ');   
                          lcd_putchar(myday%10+0x30);
                       

      };
}


Архив с проектом и протеусом приложил к сообщению...;

Re: Часы-термометр-будильник 12LED(mega8/88+DS1307+DS18x20*2

Сб ноя 17, 2012 20:16:51

без дополнительных функций,
Без каких?
Без этих: bcd2bin() или bin2bcd() ?

У меня в программе (коде) есть четыре глобальных переменных. У Вас они обозначены как:
Код:
unsigned char day,month,year;   //часы, минуты, секунды
unsigned char   myday;           // день недели


Перед вызовом функции date2day() в первые три нужно занести соответствующие значения дня, месяца и года и по результату выполнения функции в четверной будет искомый результат.

т.к. в моем коде значения в переменных day,month,year хранятся в двоично-десятичном формате то и применяются функции преобразования bcd2bin() и bin2bcd().

Если у Вас значения в переменных хранятся в двоичном коде то функции преобразования из кода можно удалить.

Danko (в миру Даниил).
Ответить