Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

DS1307 стоят. Хотя CH = 0. Почему???

Непрочитано 18.03.2011, 19:16  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

А этапы инициализации у меня правильные??? Последовательность не важна??? Или сначала установить время, а потом только вкл. (CH=0) ?

P.S. Я пока кварц из часов припаяю.
Реклама:
mr_smit вне форума  
Непрочитано 18.03.2011, 19:17  
baiderin
Почётный гражданин KAZUS.RUN
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,739
Сказал спасибо: 2,487
Сказали Спасибо 897 раз(а) в 584 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

ПОмню, пытался завести эту 1307. Там толи задержка при пуске где-то нужна, то ли что.Не помню уже. С бубном, но завелась.
baiderin вне форума  
Непрочитано 18.03.2011, 19:18  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Сообщение от baiderin Посмотреть сообщение
ПОмню, пытался завести эту 1307. Там толи задержка при пуске где-то нужна, то ли что.Не помню уже. С бубном, но завелась.
Вспоминайте, очень надо
mr_smit вне форума  
Непрочитано 18.03.2011, 19:53  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
Вопрос Re: DS1307 стоят. Хотя CH = 0. Почему???

Поставил кварц из часов. Всё заработало.

Сделал выводы:
1. Если микросхема (кварц) только что из магазина, это не значит что она рабочая...
2. Не надо паять в 12 часов ночи, а потом с утра вопросы на форумах задавать (про осциллограф я вчера не подумал).

И последний вопрос. Где лучше опрашивать DS1307 ? По таймеру или в основном цикле? Просто не хочется дополнительно нагружать основной цикл этим:
Код:
rtc_get_time(&hour,&min,&sec); //считать время
rtc_get_date(&day,&month,&year); //считать дату
min = bcd2bin(min);
hour = bcd2bin(hour);
...
Пока преобразует... А приэтом за пультом ДУ надо ещё следить. К тому же год, месяц, дату достаточно вызвать 1 раз в сутки. У меня ATMega8. Заняты все внешние прерывания (TSOP и синхронизация с сетью) и 2 таймера. Остался последний таймер. Что если настроить его на 10 мс, ввести переменную time_status. По переполнению таймера увеличивать её на 1. И в основном цикле проверять если ›6000 (60 сек) то запрашивать время. Ну как то так:
Код:
int time_status = 0;
...
// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
time_status++;
}
...
while (1) {
  ...
  if (time_status › 6000) {
    time_status = 0;
    rtc_get_time(&hour,&min,&sec); //считать время
    min = bcd2bin(min);
    hour = bcd2bin(hour);
    ... // вывод на ЖКИ
    if (hour == 0) {
      rtc_get_date(&day,&month,&year); //считать дату
      ... // вывод на ЖКИ
    }
  }
  ...
}
Насколько оправдан такой подход?

Последний раз редактировалось mr_smit; 18.03.2011 в 20:17.
mr_smit вне форума  
Непрочитано 18.03.2011, 20:04  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Такой подход вообще не оправдан, равно как и применение этой пустой меги. Ставьте проц с внешним генератором, запускайте RTC нем и все у вас получится. Я год назад купил подобные часы, если не эти же самые. Так до сих пор не применил нигде. Глупо как-то вешать отдельно такую лабуду. Вот когда у вас три-пять устройств на i2c, тогда еще можно. Даже с точки зрения экономии электричества совершенно не оправдано.
Easyrider83 вне форума  
Непрочитано 18.03.2011, 20:04  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Что делает TIMER1 понятно. Для чего используется TIMER0?
omercury вне форума  
Непрочитано 18.03.2011, 20:21  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Сообщение от omercury Посмотреть сообщение
Что делает TIMER1 понятно. Для чего используется TIMER0?
TIMER0 - отсчет интервалов для приема команд от пульта ДУ.
TIMER1 - открытие симистора и формирование импульса для открытия

Так всё же. Как быть? Чтобы не гонять постоянное считывание времени в основном цикле?

P.S.
И ещё. Сейчас время/дата выводятся в формате, например, 5 часов 7 минут. Как вывести 05 часов 07 минут?
Код:
char cnt[];
...
sprintf(cnt,"%u:%u:%u",hour,min,sec);           // преобразование времени в строку
put_string(20, 90,cnt, 0x07E0, 2);  // выводим на экран
Как изменить форматирование sprintf ?
mr_smit вне форума  
Непрочитано 18.03.2011, 20:23  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Так получится?
PHP код:
sprintf(cnt,"%2u:%2u:%2u",hour,min,sec); 
omercury вне форума  
Непрочитано 18.03.2011, 20:49  
mr_smit
Временная регистрация
 
Аватар для mr_smit
 
Регистрация: 14.09.2009
Сообщений: 87
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
mr_smit на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Сообщение от omercury Посмотреть сообщение
Так получится?
PHP код:
sprintf(cnt,"%2u:%2u:%2u",hour,min,sec); 
Вместо нолика получилось пустое место (перед двойкой)
Миниатюры:
Нажмите на изображение для увеличения
Название: display.jpg
Просмотров: 38
Размер:	327.1 Кб
ID:	19926  

Последний раз редактировалось mr_smit; 18.03.2011 в 21:05.
mr_smit вне форума  
Непрочитано 18.03.2011, 21:10  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: DS1307 стоят. Хотя CH = 0. Почему???

Теперь осталось найти, какой символ поставить перед %...($ - hex и т.д.)
omercury вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему диммер на симисторе не продляет, а укорачивает жизнь лампам накаливания? Alex9797 Источники питания и свет 106 21.05.2016 01:54
Есть схема, имеются простые вопросы: почему так, а не этак? already_over Электроника - это просто 4 17.11.2010 22:27
ATmega64 и DS1307 sersne Микроконтроллеры, АЦП, память и т.д 1 08.06.2010 21:54
RTC DS1307, контроллер, LCD... какая идеология работы? chapa Микроконтроллеры, АЦП, память и т.д 4 24.11.2009 18:28


Часовой пояс GMT +4, время: 20:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.