|
Проблемы с часами DS1307, Не читается, пишется или нет непонятно . |
|
|
|
Aug 26 2005, 09:40
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Привет всем. Не работают часы 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 работаю, посмотрите пожалуйста. Спасибо.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Aug 26 2005, 10:47
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 30-06-05
Пользователь №: 6 414

|
Цитата(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
Сообщение отредактировал kalinka16 - Aug 26 2005, 10:52
|
|
|
|
|
Aug 26 2005, 10:57
|

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Немного невнимательно первый раз прочитал Ваше изложение происходящего. Вы заверяете: Цитата(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 (слава богу такие схемотехнические возможности имеют место) и соответствующий софт, то это замечание отпадает.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Aug 26 2005, 11:05
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 30-06-05
Пользователь №: 6 414

|
Цитата(BVU @ Aug 26 2005, 13:57) Немного невнимательно первый раз прочитал Ваше изложение происходящего. Теперь похоже еще невнимательней Пишет же человек - Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535
|
|
|
|
|
Aug 26 2005, 11:10
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата(hd44780 @ Aug 26 2005, 13:40) Привет всем. Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535. Точнее сказать, я даже не знаю, работают они или нет. TWI на частоте 50 kHz. А откуда взята частота для TWI в 50 кHz? Если мне память не изменяет - по спецификации на шине I2C два режима - 100 и 400 kHz. DS1307 умеет только 100.... Правдя за давностью времени могу ошибаться....
|
|
|
|
|
Aug 26 2005, 11:12
|

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Цитата(kalinka16 @ Aug 26 2005, 15:05) Цитата(BVU @ Aug 26 2005, 13:57) Немного невнимательно первый раз прочитал Ваше изложение происходящего. Теперь похоже еще невнимательней Пишет же человек - Не работают часы DS1307, подключенные к аппратному TWI МК ATMega8535  Да, прошу прощения что-то я перемудрил  Но первая рекомендация - остается в силе.
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Aug 26 2005, 11:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
UART подключен к компу через MAX232 и прекрасно работает. 2 janus: У AVR частота TWI программируется специальным регистром - см. доку на МК. А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину  .
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 26 2005, 12:13
|

Профессионал
    
Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264

|
Цитата(hd44780 @ Aug 26 2005, 15:48) UART подключен к компу через MAX232 и прекрасно работает. 2 janus: У AVR частота TWI программируется специальным регистром - см. доку на МК. А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину  . Привожу выдержку из фирменного описания 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."
--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
|
|
|
|
|
Aug 26 2005, 12:34
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата(hd44780 @ Aug 26 2005, 15:48) 2 janus: У AVR частота TWI программируется специальным регистром - см. доку на МК. А как я понял DS1307 пашет на любой частоте от 0 до 100 kHz. Я взял 50 как золотую середину  . Про регистры TWI я знаю... А в доке на 1307 ничего не сказано про _любую_ частоту в пределах 0-100. И еще момент. У меня знакомые ребята сменили как минимум пару кварцев, пока 1307 запустилась...А у меня - заработало с первого раза... Так что - попробуй сначала частоту поднять, потом кварц поменять... Впрочем это уже танцы с бубном...=)))
|
|
|
|
|
Aug 26 2005, 13:20
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата насчет частоты 0-100 это я взял из таблицы на стр. 10 даташита. Там написано: SCL clock frequency: min=0 kHz, max = 100 kHz, typ - не указан. Может я смысла этого не понял? Пересмотрел даташит на 1307 - действительно, присутствует такое. Вечерком сегодня попробую запустить на 50 kHz, благо стенд еще не разобран....)
|
|
|
|
|
Aug 26 2005, 13:23
|
Участник

Группа: Свой
Сообщений: 47
Регистрация: 12-07-05
Пользователь №: 6 725

|
Внутренняя схема генератора DS1307 рассчитана на работу с кристаллом,имеющего номинальную емкость (CL) 12,5pF. Проверяли с другими емкостями,не хочет работать. Но в партиях кварца всегда попадались битые.И когда не работала ,сразу меняли.Работали и на частотах 50кГц и 100кГц.
|
|
|
|
|
Aug 26 2005, 13:59
|
Участник

Группа: Свой
Сообщений: 47
Регистрация: 12-07-05
Пользователь №: 6 725

|
Оптимальный тип кварца для DS1307 DT-38T.
|
|
|
|
|
Aug 26 2005, 14:10
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
2 damir2: Я кварцы на радиобазаре брал, тип не знаю. У нас в Донецке есть контора одна, всякими детальками торгует, на след. неделе позвоню, спрошу, есть у них такое или нет. 2 janus: это сгенерил CVavr, я всего лишь инициализацию в отдельную функцию вытянул. А с TWI я нормально работаю. ПЗУ-шки у меня нема  .
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Aug 26 2005, 14:24
|
Участник

Группа: Свой
Сообщений: 47
Регистрация: 12-07-05
Пользователь №: 6 725

|
Выглядит кварц DT-38T как маленький полярный конденсатор.Диаметр "боченка" 3мм, высота-9мм,расстояние между выводами - 1,1мм. Маркировки нет,сбоку только частота "32768".
|
|
|
|
|
Aug 26 2005, 14:26
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата(hd44780 @ Aug 26 2005, 18:10) это сгенерил CVavr, я всего лишь инициализацию в отдельную функцию вытянул. А с TWI я нормально работаю. ПЗУ-шки у меня нема  . По-поводу кварцев - прекрасно работает кварц на 32768 выпаянный из старой 386 матери...=) А епромку можно добыть из старого сотового...) нокии какой-нить, к примеру 1610...24С02 вполне подойдет.... CodeVision у меня отсутствует, так что ничего не скажу...но в принципе, работать и так должно....
|
|
|
|
|
Aug 27 2005, 08:02
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата(hd44780 @ Aug 26 2005, 19:38) Кстати тут идея промелькнула - проверить жив ли ds1307 вообще - пустить на него частоту (эти самые 32768 Гц) с микроконтроллера (как я понял, у ds есть такой режим) и посмотреть - заведется схема или нет. Тоже можно....Кстати, я попробовал прогнать твой код у себя, на заведомо рабочем 1307, правда под мегой16, поправил только UART и TWI чуток - может не так поправил...  - хрень какая-то...Похож, надо копаться где-то в районе TWI... А вообще - не в качестве рекламы, а так...=) переползай на gcc+avrlib, я как раз на этой связке свой 1307 очнь быстро запустил...)
|
|
|
|
|
Aug 27 2005, 09:44
|

Частый гость
 
Группа: Свой
Сообщений: 133
Регистрация: 6-12-04
Пользователь №: 1 357

|
Цитата(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 в даташите....
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|