Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.12.2008, 12:03
|
#1
|
Частый гость
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
DS1307 и глюки при чтении
Народ, помогите разобраться пожалуйста.
Имеем в связке mega32, DS1307 и граф. дисплей. Мега пашет на 16 мегагерцах, на кварце.
Проблема в том, что данные из RTC читаются не всегда корректно. DS подключен по мануалу, с батарейкой. Но после включения всего девайса на дисплей вместо времени выводится какая-то ерунда, например 65:65:65. То же самое с датой. Иногда, после включения все пашет корректно и время с датой выводится правильно. Причем, DS данные не сбрасывает. Такое ощущение, что контроллер неправильно читает по i2c.
Читал ветку по DS-у в этом форуме, все перепробовал. Не помогает.
void main(void)
{
delay_ms(2000);
// I2C Bus initialization
i2c_init();
rtc_init(0,0,0);
/*
rtc_write(0,0);
rtc_set_date(2,2,2);
rtc_set_time(1,1,1);
*/
rtc_get_time(&hour, &minute, &sec);
LCD_PUTSF_(1, 1, hour, font);
......................
Вот так вывожу время. Код слегка урезал, чтобы не был громоздким.
-- Прилагается рисунок: --
|
|
|
|
02.12.2008, 15:28
|
#2
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Проверь протокол чтения и записи.
Такие глюки были в меня при неверной посылке последнего бита (или кана там называют - конца чтения).
При неверном формировании конца пакета - таймер выдает непонятно что, тем более после записи даты. Убери запись даты и запусти только чтение часов.
|
|
|
|
02.12.2008, 17:36
|
#3
|
Частый гость
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ua_gruzin, в последней версии прошивки нет строчки установки датывремени. DS-ка тикает от батарейки. Контроллер только читает.
Софт пишу в CVAVR. Как там можно проверить куда чего передается, если библиотеки так сказать "заводские"?
|
|
|
|
02.12.2008, 18:27
|
#4
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Я писал на асме.
Точно такая была проблема при неверном формировании пакета.
Не факт что "заводские" библиотеки подходят, поскольку чипы могут изменятся.
Поставь запрет на пирывание, возможно что-то ребутит чип или влазит в прогу. Отмени ватчдог.
Как проверить...
Собери все в проеусе.... если нет осцилографа.
В протеусе есть и мега, есть и осцил. Бальше просто пошагово посмотриш что и как идет на ДС-ку и что идет в ответ. Правда, в меня в протеусе работало, а на железе пришлось переделать немного, но тож пошло.
|
|
|
|
02.12.2008, 19:13
|
#5
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Что ставил на подтяжку шины ?
Должны стоять pullup...
__________________
Осторожно , злой кот
|
|
|
|
02.12.2008, 20:29
|
#6
|
Гражданин KAZUS.RU
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
|
Тоже столкнулся с похожей проблемой. Возникает только при включении МК и после запроса времени (использовал стандартную библиотеку от Code Vision)от DS приходит значение 165 и для часов и для минут постоянно. Помогает перезагрузка МК, и то не всегда. Обидно то, что может работать несколько дней нормально, а потом начинает сбиваться именно при включении МК (если МК включился, и пришло правильное время, то он будет работать нормально до выключения). Менял несколько DS 1307 – результат один и тот же.
|
|
|
|
02.12.2008, 21:55
|
#7
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
а вобще складывается впечатление что все эти готовые процедуры написаны как то уж карявчато..
у меня тоже была проблема.. с дисплеем и с интерфейсом I2C ни тот ни другой так и не захотели запускаться так как положено .. в итоге пришлось сесть за ассемблер и написать свои собственные процедуры для работы с этими девайсами..
пробовал в протеусе.
P.S. ... вот и ответил на свой же вопрос...
для чего нужно знать ASM ...
|
|
|
|
02.12.2008, 22:12
|
#8
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Согласен с worldmasters на 100%!!!
Применял готовые процедуры и... в итоге переделывал под свои нужды (и аппаратные и программные и с прерываниями...).
Напиши ОДИН РАЗ свою на асме и вставляй ее потом куда хочешь ( прикольный коламбур получился).
P.S. Вот нате на растерзание...
Прикрепленный файл: 8115885.rar
__________________
Если мы вам не подходим, вы нам вовсе не нужны!
Услышал и забыл, увидел и запомнил, сделал и понял!
Нейрон - штука тонкая!
Чудес на свете не бывает!
|
|
|
|
02.12.2008, 23:50
|
#9
|
Частый гость
Регистрация: 12.11.2007
Сообщений: 24
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ra9mig, разбираюсь. Спасибо большое. Написать свое, да еще и на асме - это идеальный вариант конечно. Но думал, что в CVAVR нормально все пашет... Кстати, не нашел там библиотеку реализации i2c. Заголовочный файл валяется, а где коды процедур искать, кто знает?
Zemlyanov, проблема один-в-один. Надо победить.
dosikus, пулап поставил. Все по мануалу.
Мда... В протеусе все пашет замечательно и без глюков, но девайс, похоже, живет своей жизнью и на протеус плевать хотел...
|
|
|
|
03.12.2008, 12:28
|
#10
|
Прописка
Регистрация: 24.09.2008
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
__________________
Если мы вам не подходим, вы нам вовсе не нужны!
Услышал и забыл, увидел и запомнил, сделал и понял!
Нейрон - штука тонкая!
Чудес на свете не бывает!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:20.
|
|