Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с часами DS1307
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
hd44780
Привет всем.

Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535.
Точнее сказать, я даже не знаю, работают они или нет.
При считывании любого регистра получаю какой-то случайный мусор.
Впрочем также как и при отсутствующей микросхеме часов (ыдергиваю из колодки).

Даю ссылку на архив с полным текстом микрокода (на cvAVR).
http://hd44780.narod.ru/DS1307-8535.ZIP

МК работает на частоте 4 MHz, внутренний генератор.
Схема подключена к COM-порту компа. Параметры связи и протокол обмена - см.
файл DS1307.txt в архиве.

Регистры DS считываются по командам компьютера. Считанные данные тоже перегоняются в комп.
Обе линии TWI имеют pull-up резисторы 10k, согласно доке по микроконтроллеру.
Между выходом OUT и +5в подключен светодиод через 1k резистор.
Резервная батарейка есть, напряжение на 3 ноге DS1307 - +3.06в.
Кварц припаян непосредственно к ногам 1 и 2 микросхемы.
Корпус кварца не заземлен.

При подаче команды CI часы запускаются (бит CH:=0), в упр. регистр DS
вписывается 10h - светодиод должен мигать с частотой 1 Hz. Но он не мигает, как и при включении питания, а просто светится.

Инициализация TWI - в конце функции setPeriferals, ds1307.c.
Считывание регистра DS - ds1307readRegister, ds1307lib.c
запись - ds1307writeRegister, ds1307lib.c
TWI на частоте 50 kHz.


Может я неправильно с TWI работаю, посмотрите пожалуйста.
Спасибо.
BVU
По всей видимости у Вас нет тактирования часов, если при чтении контроллера DS1307 когда он присутствует или отсутствует результат получается однотипным. Проверьте обвязку генератора, возможно необходим подстроечных емкосной триммер (нехватает сдвига фазы для запуска). На сколько припоминаю в описании на этот часовой контроллер к кварцевому резонатору предьявляются дополнительные требования (обратите на это внимание если это так).
hd44780
Спасибо, посмотрю.
kalinka16
Цитата(hd44780 @ Aug 26 2005, 12:40)
Привет всем.

Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535.
Точнее сказать, я даже не знаю, работают они или нет.
При считывании любого регистра получаю какой-то случайный мусор.
Впрочем также как и при отсутствующей микросхеме часов (ыдергиваю из колодки).

Даю ссылку на архив с полным текстом микрокода (на cvAVR).
http://hd44780.narod.ru/DS1307-8535.ZIP

МК работает на частоте 4 MHz, внутренний генератор.
Схема подключена к COM-порту компа. Параметры связи и протокол обмена - см.
файл DS1307.txt в архиве.

Регистры DS считываются по командам компьютера. Считанные данные тоже перегоняются в комп.
Обе линии TWI имеют pull-up резисторы 10k, согласно доке по микроконтроллеру.
Между выходом OUT и +5в подключен светодиод через 1k резистор.
Резервная батарейка есть, напряжение на 3 ноге DS1307 - +3.06в.
Кварц припаян непосредственно к ногам 1 и 2 микросхемы.
Корпус кварца не заземлен.

При подаче команды CI часы запускаются (бит CH:=0), в упр. регистр DS
вписывается 10h - светодиод должен мигать с частотой 1 Hz. Но он не мигает, как и при включении питания, а просто светится.

Инициализация TWI - в конце функции setPeriferals, ds1307.c.
Считывание регистра DS - ds1307readRegister, ds1307lib.c
запись - ds1307writeRegister, ds1307lib.c
TWI на частоте 50 kHz.


Может я неправильно  с TWI работаю, посмотрите пожалуйста.
Спасибо.
*



Если по миганию светодиода - то при инициализации DS1307 частота выхода настраивается на 4.096 kHz (0xD5 - так я понимаю). Нада 0xD4, тогда два младших бита будут равны 0, а это и есть настройка на 1Hz.
Если после этого замигает - значит проблемы не с обменом с DS1307.

Смотри ds1307init() в ds1307lib.c
BVU
Немного невнимательно первый раз прочитал Ваше изложение происходящего. Вы заверяете:
Цитата(hd44780 @ Aug 26 2005, 13:40)
МК работает на частоте 4 MHz, внутренний генератор.
*

Следуя из документации на DS1307 необходимый кварц для ее работы - 32.768 kHz !
Далее Вы используете:
Цитата(hd44780 @ Aug 26 2005, 13:40)
Схема подключена к COM-порту компа. Параметры связи и протокол обмена - см.
*

DS1307 имеет последовательную двунаправленную шину стандарта I2C ничего общего с UART не имеющим. Как вы присоединяете ее к COM своего PC? Если Вы на COM имеете преобразователь I2C (слава богу такие схемотехнические возможности имеют место) и соответствующий софт, то это замечание отпадает.
kalinka16
Цитата(BVU @ Aug 26 2005, 13:57)
Немного невнимательно первый раз прочитал Ваше изложение происходящего.


Теперь похоже еще невнимательней wink.gif
Пишет же человек - Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535 laugh.gif
janus
Цитата(hd44780 @ Aug 26 2005, 13:40)
Привет всем.

Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535.
Точнее сказать, я даже не знаю, работают они или нет.

TWI на частоте 50 kHz.

*


А откуда взята частота для TWI в 50 кHz?
Если мне память не изменяет - по спецификации на шине I2C два режима - 100 и 400 kHz. DS1307 умеет только 100....
Правдя за давностью времени могу ошибаться....
BVU
Цитата(kalinka16 @ Aug 26 2005, 15:05)
Цитата(BVU @ Aug 26 2005, 13:57)
Немного невнимательно первый раз прочитал Ваше изложение происходящего.


Теперь похоже еще невнимательней wink.gif
Пишет же человек - Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535 laugh.gif
*



Да, прошу прощения что-то я перемудрил wub.gif
Но первая рекомендация - остается в силе.
hd44780
UART подключен к компу через MAX232 и прекрасно работает.

2 janus:
У AVR частота TWI программируется специальным регистром - см. доку на МК.
А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину smile.gif .
BVU
Цитата(hd44780 @ Aug 26 2005, 15:48)
UART подключен к компу через MAX232 и прекрасно работает.

2 janus:
У AVR частота TWI программируется специальным регистром - см. доку на МК.
А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину  smile.gif .
*


Привожу выдержку из фирменного описания DS1207:
"Each data transfer is initiated with a START condition and terminated with a STOP condition. The
number of data bytes transferred between START and STOP conditions is not limited, and is
determined by the master device. The information is transferred byte-wise and each receiver
acknowledges with a ninth bit. Within the 2-wire bus specifications a standard mode (100kHz clock
rate) and a fast mode (400kHz clock rate) are defined. The DS1307 operates in the standard mode
(100kHz) only
."
janus
Цитата(hd44780 @ Aug 26 2005, 15:48)
2 janus:
У AVR частота TWI программируется специальным регистром - см. доку на МК.
А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину  smile.gif .
*


Про регистры TWI я знаю...
А в доке на 1307 ничего не сказано про _любую_ частоту в пределах 0-100.

И еще момент. У меня знакомые ребята сменили как минимум пару кварцев, пока 1307 запустилась...А у меня - заработало с первого раза...
Так что - попробуй сначала частоту поднять, потом кварц поменять...
Впрочем это уже танцы с бубном...=)))
hd44780
поставил частоту TWI 100 khz - ничего не изменилось, кварц попробую поменять, есть парочка в запасе.

насчет частоты 0-100 это я взял из таблицы на стр. 10 даташита.
Там написано: SCL clock frequency: min=0 kHz, max = 100 kHz, typ - не указан.
Может я смысла этого не понял?
janus
Цитата
насчет частоты 0-100 это я взял из таблицы на стр. 10 даташита.
Там написано: SCL clock frequency: min=0 kHz, max = 100 kHz, typ - не указан.
Может я смысла этого не понял?
*


Пересмотрел даташит на 1307 - действительно, присутствует такое. Вечерком сегодня попробую запустить на 50 kHz, благо стенд еще не разобран....)
damir2
Внутренняя схема генератора DS1307 рассчитана на работу с кристаллом,имеющего номинальную емкость (CL) 12,5pF. Проверяли с другими емкостями,не хочет работать. Но в партиях кварца всегда попадались битые.И когда не работала ,сразу меняли.Работали и на частотах 50кГц и 100кГц.
hd44780
Я свои проверял тестером, измерял емкость, как у конденсатора - 1 .. 3 pF.
А если параллельно кондер прицепить, нормально будет?
damir2
Оптимальный тип кварца для DS1307 DT-38T.
janus
И еще совет махонький, к слову о танцах с бубном..=)

Если есть любой какой-нить I2C EEPROM, попробуй его на TWI повесить и почитать-пописать в него...

Кста, посмотрел код, не понял ты перед вызовом setperipherals()
прерывания не запрещаешь, а после разрешаешь...
hd44780
2 damir2:

Я кварцы на радиобазаре брал, тип не знаю.
У нас в Донецке есть контора одна, всякими детальками торгует, на след. неделе позвоню, спрошу, есть у них такое или нет.

2 janus:

это сгенерил CVavr, я всего лишь инициализацию в отдельную функцию вытянул. А с TWI я нормально работаю. ПЗУ-шки у меня нема sad.gif .
damir2
Выглядит кварц DT-38T как маленький полярный конденсатор.Диаметр "боченка" 3мм, высота-9мм,расстояние между выводами - 1,1мм. Маркировки нет,сбоку только частота "32768".
janus
Цитата(hd44780 @ Aug 26 2005, 18:10)
это сгенерил CVavr, я всего лишь инициализацию в отдельную функцию вытянул. А с TWI я нормально работаю. ПЗУ-шки у меня нема  sad.gif .
*


По-поводу кварцев - прекрасно работает кварц на 32768 выпаянный из старой 386 матери...=) А епромку можно добыть из старого сотового...) нокии какой-нить, к примеру 1610...24С02 вполне подойдет....

CodeVision у меня отсутствует, так что ничего не скажу...но в принципе, работать и так должно....
hd44780
2 damir2:
все мои 3 кварца так выглядят. Но цифры 32768 только на одном из них.

2 janus:
Я понял, когда попаду на радиобазар, поспрашиваю. Спасибо за совет.

Кстати тут идея промелькнула - проверить жив ли ds1307 вообще - пустить на него частоту (эти самые 32768 Гц) с микроконтроллера (как я понял, у ds есть такой режим) и посмотреть - заведется схема или нет.
janus
Цитата(hd44780 @ Aug 26 2005, 19:38)
Кстати тут идея промелькнула - проверить жив ли ds1307 вообще - пустить на него частоту (эти самые 32768 Гц) с микроконтроллера (как я понял, у ds  есть такой режим) и посмотреть - заведется схема или нет.
*


Тоже можно....Кстати, я попробовал прогнать твой код у себя, на заведомо рабочем 1307, правда под мегой16, поправил только UART и TWI чуток - может не так поправил... smile3046.gif - хрень какая-то...Похож, надо копаться где-то в районе TWI...

А вообще - не в качестве рекламы, а так...=)
переползай на gcc+avrlib, я как раз на этой связке свой 1307 очнь быстро запустил...)
hd44780
janus, а можешь дать кусок кода работы с DS1307, хоть для mega16, я раньше с TWI не работал.
хоть почтой, хоть в ящик на этом форуме.
janus
Цитата(hd44780 @ Aug 27 2005, 12:45)
janus, а можешь дать кусок кода работы с DS1307, хоть для mega16, я раньше с TWI не работал.
хоть почтой, хоть в ящик на этом форуме.
*

Могу, только оно вряд ли тебе чем поможет...gcc+avrlib, вся работа с TWI из avrlib, я только обмен с 1307 делал....
Кстати, посмотрел в ДШ на меги, там одно отличие от того что у тебя,
после TWIwait должно быть вот такое:

/*Check value of TWI Status
Register. Mask prescaler bits. If
status different from MT_SLA_ACK
go to ERROR.
*/
if ((TWSR & 0xF8) != MT_SLA_ACK)
ERROR();

Посмотри повнимательней обмен по I2C в даташите....
hd44780
Посмотрю, мож прозевал чего.

Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.