|
Странное поведение DS1302 |
|
|
|
Dec 21 2007, 10:19
|
Участник

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511

|
Прикупил RTC DS1302. хочу подключить ее к МК AVR. использую Attiny2313. подключил 4 7-ми сигментных индикатора и хочу отображать время в режиме ЧЧ:ММ пишу на ASM`е. написал программную реализацию протокола... и вот тут у меня начались приколы: к примеру, записал в регистр секунд значение 0! и в вечном цикле опрашиваю RTC и вывожу значение секунд на индикатор. на индикаторе идут секунды, все хорошо, но!!! если значение секунд четное то на индикаторе появлятются 00!!! если не четные, то все нормально... проверял - это касается не только секунд, но и всего остального пробовал даже записывать данные в RAM - та же история: в ячейку RAM пишу 0х55 - читается как 0х55, записываю в эту же ячейку 0хАА - читается как 0х00!  может быть кто нить сталкивался с такой проблемой? Прощу прощения у модераторов за размещение темы не в нужном месте  внимания сразу не обратил, а как перенести не нашел
Сообщение отредактировал Pepper - Dec 21 2007, 10:37
|
|
|
|
|
 |
Ответов
|
Dec 27 2007, 08:58
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
В начале программы хорошо бы сделать инициализацию ds1303. А именно установку в "0" 7-го бита "CH" (CLOCK HALT FLAG) и "WP"(WRITE-PROTECT BIT)в "0". Попробуйте изменить кусок кода чтения байта из мс. У Вас получается после прохождения цикла лишний такт (восьмой) а по даташиту их получается семь т.к. установка по по спадающему фронту. ну к примеру так: Код ... // Передача адреса закончена, переходим к приему данных rcall PortToIn // Переводим порт на вход DelayUs 10 // Задержка ldi r18, 7 // Инициализация счетчика бит clr r17 // Очищаем регистр выходных данных DelayUs 10 sbis PIND, IO // Проверяем бит на входе rjmp dr_l4 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l4: DelayUs 10 sbi PORTD, CLK // сформировать нарастающий фронт CLK DelayUs 10 // подержать 10 мкс cbi PORTD, CLK // сформировать стадающий фронт CLK DelayUs 10 // подержать 10 мкс lsr r17 // Сдвигаем вправо на 1 бит sbis PIND, IO // Проверяем бит на входе rjmp dr_l5 // переход, если = 0 ori r17, 0x80 // Если 1, то устанавливаем 1 в старший разряд выходного регистра dr_l5: dec r18 // уменьшить счетчик бит на 1 brne dr_l4 // Если переданы не все 8, то переход // Адрес и данные переданы, завершаем сеанс .....
Сообщение отредактировал adc - Dec 27 2007, 09:28
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Dec 27 2007, 11:30
|
Участник

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511

|
у меня стоит начальная инициализация: Код // Сбросить защиту от записи ldi r16, 0x8E ldi r17, 0x00 rcall DataWrite и CH сбрасывается при установке секунд Код // Установить секунды ldi r16, 0x80 ldi r17, 0x00 rcall DataWrite код переписал с учетом ваших рекомендаций - стало еще хуже... на экране откуда-то взялось число 57, причем оно меняется на 12, и 25. закономерность не пойму. откоментировал код инициализации, там выставлено время 12:30. записываю его в МК - тот же результат, 57, 12, 25... попробовал переделать на 3,3 В, не помогло... в общем ясно, что это глюк RTC нужно покупать новую разобрался в чем дело!!!!!!!! подключаю основное питание, запскаю контроллер, он инициализирует RTC. на экране чёрти чё... отключаю основное питание. батарейка на месте, и на экране и четные значения, и идут и все как положено... в общем это, я так понимаю, все таки RTC бракованная походу блин, вот гемор... не думал, что могут возникнуть такие проблемы...
|
|
|
|
|
Dec 27 2007, 11:32
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(Pepper @ Dec 27 2007, 13:59)  разобрался в чем дело!!!!!!!! yeah.gif Странно?! такое разве может быть?.. т.е. стабильное питание необходимо для мс RTS? Если после изменения кода произошли изменения в отображении, значит всетаки глюки в программе есть..это факт. Надо копать глубже! 12 это "1100", а 25 -"11001".. очень похоже на интерфейсные дела.. с чтением. Увеличивайте везде задержки, для чистоты эксперимента! зы: на счет другой мс я использовал DS1307.
Сообщение отредактировал adc - Dec 27 2007, 11:43
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Dec 27 2007, 11:59
|
Участник

Группа: Новичок
Сообщений: 22
Регистрация: 21-12-07
Из: г.Астрахань
Пользователь №: 33 511

|
Цитата(adc @ Dec 27 2007, 14:32)  Странно?! такое разве может быть?.. т.е. стабильное питание необходимо для мс RTS? Если после изменения кода произошли изменения в отображении, значит всетаки глюки в программе есть..это факт. Надо копать глубже! 12 это "1100", а 25 -"11001".. очень похоже на интерфейсные дела.. с чтением. Увеличивайте везде задержки, для чистоты эксперимента! зы: на счет другой мс я использовал DS1307. забыл уточнить: эти цифры появлялись на 2 версиях кода процедуры чтения. вашем и поем... т.е. дело не в нем... я решил взять DS3234 - у нее кварц интегрянный, и есть датчик температуры для компенсации ухода часов... стоит 140 рублей... а эту я брал за 90... в общем спасибо за помощь, думаю тему можно закрывать
|
|
|
|
Сообщений в этой теме
Pepper Странное поведение DS1302 Dec 21 2007, 10:19 sergik_vrn Цитата(Pepper @ Dec 21 2007, 13:19) Прику... Dec 21 2007, 10:26 Pepper Цитата(sergik_vrn @ Dec 21 2007, 13:26) н... Dec 21 2007, 10:35  sergik_vrn Цитата(Pepper @ Dec 21 2007, 13:35) Код//... Dec 21 2007, 11:48   Pepper Цитата(sergik_vrn @ Dec 21 2007, 14:48) с... Dec 21 2007, 11:57    sergik_vrn Цитата(Pepper @ Dec 21 2007, 14:57) в том... Dec 21 2007, 12:13     Pepper Цитата(sergik_vrn @ Dec 21 2007, 15:13) п... Dec 21 2007, 12:18  adc Маленький совет по динамической индикации:Во время... Dec 27 2007, 05:44   Pepper Цитата(adc @ Dec 27 2007, 08:44) Маленьки... Dec 27 2007, 06:03 Pepper Прикупил RTC DS1302. хочу подключить ее к МК AVR. ... Dec 21 2007, 10:54 Pepper Принял на заметку... исправил... не помогло...
во... Dec 21 2007, 11:32  adc Цитата(Pepper @ Dec 21 2007, 14:32) //Уст... Dec 21 2007, 12:06 Pepper и снова вы правы, но опять не помогло
поставил зад... Dec 21 2007, 12:14  sergik_vrn Цитата(Pepper @ Dec 21 2007, 15:14) и сно... Dec 21 2007, 12:51   Pepper Цитата(sergik_vrn @ Dec 21 2007, 15:51) р... Dec 21 2007, 12:57    sergik_vrn Цитата(Pepper @ Dec 21 2007, 15:57) согла... Dec 21 2007, 13:12     Pepper Цитата(sergik_vrn @ Dec 21 2007, 16:12) д... Dec 21 2007, 13:21      sergik_vrn Цитата(Pepper @ Dec 21 2007, 16:21) к сож... Dec 21 2007, 13:27       Pepper Цитата(sergik_vrn @ Dec 21 2007, 16:27) п... Dec 21 2007, 14:12        sergik_vrn Цитата(Pepper @ Dec 21 2007, 17:12) тогда... Dec 21 2007, 14:24         Pepper Цитата(sergik_vrn @ Dec 21 2007, 17:24) с... Dec 21 2007, 14:30 adc Цитата(Pepper @ Dec 21 2007, 13:54) // Пе... Dec 21 2007, 12:15  Pepper Цитата(adc @ Dec 21 2007, 15:15) Все хоро... Dec 21 2007, 12:24 adc пожалуйста код в студию.
Обращаю Ваше внимание на... Dec 21 2007, 11:10 adc эээ приведите код где у вас массив "Digits... Dec 21 2007, 12:35 Pepper Цитата(adc @ Dec 21 2007, 15:35) эээ прив... Dec 21 2007, 12:40 adc Цитата(Pepper @ Dec 21 2007, 15:40) там в... Dec 21 2007, 13:02 Pepper Цитата(adc @ Dec 21 2007, 16:02) да.. дол... Dec 21 2007, 13:13 sergik_vrn Цитата(adc @ Dec 21 2007, 16:02) Что Вы п... Dec 21 2007, 13:15 Pepper только что обнаружил еще более странный глюк: при ... Dec 26 2007, 11:53 adc Цитата(Pepper @ Dec 26 2007, 14:53) тольк... Dec 26 2007, 12:20  Pepper Цитата(adc @ Dec 26 2007, 15:20) Выложите... Dec 26 2007, 12:36 Pepper Я кажется понял где грабли:
у меня моя железка пит... Dec 26 2007, 14:04 adc Скажите, а в схеме у Вас батарейный элемент питани... Dec 27 2007, 06:37 Pepper Цитата(adc @ Dec 27 2007, 09:37) Скажите,... Dec 27 2007, 06:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|