Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.03.2011, 12:33
|
|
Временная регистрация
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
DS1307 стоят. Хотя CH = 0. Почему???
Здравствуйте. DS1307 не стартует. Хотя CH = 0. Параметры считываются. А часы не идут.
Код:
|
unsigned char hour,min,sec; //часы, минуты, секунды
unsigned char day,month,year; //день, месяц, год
...
void DS1307_on () {
unsigned char tmp;
tmp = rtc_read(0x00);
tmp &=~(1‹‹7);
rtc_write(0x00, tmp); //включение DS1307, бит 7 ноль
tmp = rtc_read(0x02);
tmp &=~(1‹‹6);
rtc_write(0x02, tmp); // бит 6 ноль - 24ох часовой режим
}
...
DS1307_on ();
rtc_init (0,0,0);
rtc_set_time (bin2bcd(20),bin2bcd(47),bin2bcd(12));
rtc_set_date (bin2bcd(17),bin2bcd(03),bin2bcd(11));
...
while (1) {
rtc_get_time(&hour,&min,&sec); //считать время
rtc_get_date(&day,&month,&year); //считать дату
sec = bcd2bin(sec);
min = bcd2bin(min);
hour = bcd2bin(hour);
day = bcd2bin(day);
month = bcd2bin(month);
year = bcd2bin(year);
sprintf(cnt,"%u:%u:%u",hour,min,sec);
put_string(50, 60,cnt, 0x07E0, 2); // выводим на экран время
sprintf(cnt,"%u:%u:%u",day,month,year);
put_string(20, 90,cnt, 0x07E0, 2); // выводим на экран дату
} |
[attachment=99832:Дисплей.jpg]
Использую аппаратный TWI. Т.е. rtc_get_time / rtc_get_date вроде считывает правильно всё. Что установили то и отображается на экране. Но часы не идут. Стоят. Что за ерунда. Схема во вложении. Тестирую в железе.
|
|
|
|
18.03.2011, 12:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
В железе пойдут. То, что вы пририсовали кварц и подсписали его 32768 еще не означает, что он будет работать. Ставьте примитив генератор на эту частоту.
|
|
|
|
18.03.2011, 13:14
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
У меня такая же хрень была на MicroC.Использовал свои библиотеки.Хотя в CVAVR, IAR и WinAVR для avr, в PIC CCS для PIC-ов, Keil для 51 ничего подобного не случалось.
|
|
|
|
18.03.2011, 14:21
|
|
Временная регистрация
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Сообщение от Easyrider83
|
В железе пойдут...
|
У меня в железе не идет! А схема просто чтобы показать как всё подключено...
Последний раз редактировалось mr_smit; 18.03.2011 в 14:23.
|
|
|
|
18.03.2011, 14:54
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Сообщение от mr_smit
|
У меня в железе не идет! А схема просто чтобы показать как всё подключено...
|
А конденсаторы кварц подпирают?
|
|
|
|
18.03.2011, 17:01
|
|
Временная регистрация
Регистрация: 04.04.2008
Сообщений: 49
Сказал спасибо: 29
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Судя по даташиту конденсаторы не нужны.
|
|
|
|
18.03.2011, 17:06
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Вообще 32768 прекрасно видно осциллографом. Есть там что-нибудь?
Вы испсользуете встроенные библиотеки. Как они работают, знают только разработчики.
|
|
|
|
18.03.2011, 18:08
|
|
Временная регистрация
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Взял осциллограф. Фото прилагается.
И тут я вспомнил что у меня где то валялись старые электронные часы без батареек. Там же есть кварц!!! Нашел их. Там нужны 2 маленьких круглых батарейки. Их естественно нет. Просто подал 2,5 В с блока питания. Часы включились. И бодро пошли. Приложил щупы к ногам кварца НА ЧАСАХ и увидел там точно такую же картину 50 Гц. Что то я в замешательстве. Часы то идут!!!
P.S. Сделал rtc_init(1, 1, 0); - на 7 ножке должно быть 4096 Гц. На 7 ножке при этом тихо.
Что я делаю не так??? И почему rtc_get_time / rtc_get_date вроде как считывают установленное???
Последний раз редактировалось mr_smit; 18.03.2011 в 18:28.
|
|
|
|
18.03.2011, 18:29
|
|
Временная регистрация
Регистрация: 04.04.2008
Сообщений: 49
Сказал спасибо: 29
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Сообщение от mr_smit
|
и увидел там точно такую же картину 50 Гц
|
Дык должно быть 32768 а не 50, наверно врет ваш осциллограф.
|
|
|
|
18.03.2011, 18:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: DS1307 стоят. Хотя CH = 0. Почему???
Сообщение от mr_smit
|
И почему rtc_get_time / rtc_get_date вроде как считывают установленное???
|
А чего бы им не читать? Шина I2C асинхронная, ей тактирование извне подается. Писать/читать будет. А вот чтоб часы пошли должен генератор завестись. Конденсаторы ему не нужны, а вот отмытый флюс обязательное условие стабильной работы. Там микротоковый реижим и любая утечка срывает генерацию. Так что прогрейте выводы связанные с резонатором, отмойте флюс. Если не поможет - меняйте кварц.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:44.
|
|