Не могу запустить RTC DS1307 на Atmega8

Обсуждаем контроллеры компании Atmel.
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Viper70 Выложи схему часов в протезе , я соберу код для проверки .
Аlex тоже напишет тебе программу . Будет двое часов на халяву :)))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Аlex »

ma5a97 писал(а):Аlex тоже напишет тебе программу
Вы ни чего не перепутали ? :shock:

Добавлено after 2 minutes 39 seconds:
ma5a97 писал(а):Viper70 Выложи схему часов в протезе
Пусть лучше код свой выложит, в котором он так сильно уверен.
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Для такого спеца это проблема ? Или только остальных можем поливать грязью ?
Выложу как будет схема.
Последний раз редактировалось ma5a97 Сб фев 25, 2017 15:49:25, всего редактировалось 1 раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Аlex »

ma5a97 писал(а):Для такого спеца это проблема ?
Нет, не проблема. Но где я в этой теме обещал кому-то программу писать ?
Или я подряжался на этом форуме всем помогать с кодом ? Что-то не припоминаю...

ma5a97 писал(а):Или только остальных можем поливать грязью ?
Покажите, кого я тут грязью облил.
В этой теме я отвечал только вам и на пост, содержащий тупые советы.
Человек вам твердит, что у него DS'ка не отвечает, а вы ему про какую то установку секунд твердите. Как можно в ней что-либо установить, если она "слепа", что обуславливается отсутствием АСК-подтверждением ? :facepalm:
Ещё и про какие-то команды инициализации начали говорить. Бредите ? :facepalm:

ma5a97 писал(а):Выложу как будет схема.
Вы вообще посты читаете ? Такое ощущение, что нет, ну или через строчку :facepalm:
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Да в последнем предложении тупанул , не мне адресовалось :oops:

установить, если она "слепа", что обуславливается отсутствием АСК-подтверждением ?
Неужели трудно попробовать было прежде чем писать ?

Ещё и про какие-то команды инициализации начали говорить. Бредите ?
Имелось ввиду обратится по адресу 00 и записать 00
Во всех устройствах собранных мной , пришлось добавить функцию запуск RTC , а без этого некоторые экземпляры стартовали сразу , а некоторые вели себя так-как будто на квадратной шине :))) пусто . Я надеюсь доступно описал суть .
И в чем корявость перевода того даташита что я выложил.
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

Пробовал по советам выше запустить ДС-ку уменьшив напряжение батареи. Даже старую нашел на 2,3В. Пробовал без батареи и пробовал замыкать контакт батареи на землю. Ответа нет!

Спрошу еще раз: если кварца нет, ДС-ка будет отвечать на команды, пусть даже время стоит? Или ей нужен генератор для работы?

Выше писали как определить обрыв кварца. Я понял что без кварца работает и отвечает, только время не тикает как у многих было. Так?
Одна голова - хорошо, а две - это уже V6
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился , но часы не пошли , а вместо секунд высветило 1212.
Пара картинок ,прикрепляю . Верхняя строка слева , это часы .
Где схема ? Сколько можно гадать :dont_know:
Вложения
rtc .rar
(667.33 КБ) 148 скачиваний
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

ma5a97 писал(а):Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился

Блин. Уже бы попробовали с батарейкой, но без кварца. :?

Вы ведь читали в чем именно вопрос?
Viper70 писал(а):если кварца нет, ДС-ка будет отвечать на команды, пусть даже время стоит?
Одна голова - хорошо, а две - это уже V6
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Если без кварца зависло устройство на стадии загрузки , значит не отвечает !? :)))
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение BOB51 »

Много раз уже говорилось - у 1307 несколько специфичное понимание I2C в отношении операций по предварительно заданному адресу...
Возможно программная ошибка.
:roll:
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

Вот код

Код: Выделить всё

void WriteRTC(){ //Запись I2C RTC
    SSPIF=0;
    if(EEp==0) SEN=1; //Start
    if(EEp==1) {SSPBUF=0b11010000;EEp++;} //RTC запись
    if(EEp==3 && ACKSTAT==0) SSPBUF=EEadd;
    if(EEp>=4 && EEp<11 && ACKSTAT==0) SSPBUF=bufEE[EEp-4]; //Отправка подтверждения
    if(EEp==11) {SSPBUF=bufEE[EEp-4]; ACKDT=1; ACKEN=1;} //Нет подтверждения
    if(EEp==12) PEN=1; //Stop
    EEp++;
}

После запуска подпрограммы заход в нее осуществляется по прерыванию SSPIF. Между операциями проц занят другими задачами
EEadd - внешняя переменная равная 0. bufEE задается изначально

Остановка при EEp=4. Значит после отправки адреса заходит по прерыванию с EEp=3, ACKSTAT=1. Поэтому пропускает шаг и увеличивает EEp до 4

Напомню, что это кусок на Си для PIC
Последний раз редактировалось Viper70 Вс фев 26, 2017 20:01:01, всего редактировалось 1 раз.
Одна голова - хорошо, а две - это уже V6
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение BOB51 »

Я в СИ не соображаю...
:sleep:
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
8)
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

BOB51 писал(а):Я в СИ не соображаю...
:sleep:
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
8)

Картинка класная, но там ошибка как по мне в последовательности передачи
Но у меня и до этого места не доходит
Одна голова - хорошо, а две - это уже V6
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение BOB51 »

По даташиту такого обращения быть не должно - там только обмен массивом закладывался.
По факту - модификация рестарта "с тараканами" относительно того, кому АСК выставлять.
Работает весьма уверенно (особенно если побайтовый доступ к ОЗУ используется).
А реализацию - смотреть самому.
8)
Может и мелкосхема "пыток не вынесла"...
:cry:
У меня вот такой выносной модуль для проб и издевательства
http://img.radiokot.ru/files/20529/dtg3kkk1v.jpg
http://img.radiokot.ru/files/20529/dtg3s5koa.jpg
http://img.radiokot.ru/files/20529/vcyn4aqbt.GIF
сам - по себе тихонько тикает, когда и куда понадобится по мере спроса/необходимости подтыкивается.
:dont_know:
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

BOB51 у меня по сути так же. Только нет керамики по питанию. Но ведь это не критично? Меня не глюки достают - вообще не работает
И кварц у вас без всяких полигонов под ним и не заземлен его корпус наверное и все работает

Похоже у меня проблема либо в кварце, либо в микросхеме?

Кварц новый, маленький. Еще меньше вашего. А вот микросхему я уже выпаивал с похожей схемы. Там не был реализован код и она не проверялась. Была новая микруха. Потом собрал новую плату, доделал код и перепаял ДС-ку. Может перегрел? Просто на тот момент другой небыло :?
Одна голова - хорошо, а две - это уже V6
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15547
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение BOB51 »

Может и кварц... "Слишком мелкие" весьма капризны - а вот такой как на платке как-бы "стандартный" (в простонародном слэнге "спиралька" вроде).
Можно еще содрать с бэушного кассового аппарата...
:roll:
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

Выпаял сегодня кварц с материнки. С виду - часовой. Маркировка KDS7K.
Попробовал заменить свой - все равно не стартует. Следующий шаг - замена ДС-ки :(
Одна голова - хорошо, а две - это уже V6
ma5a97
Прорезались зубы
Сообщения: 217
Зарегистрирован: Чт мар 12, 2015 01:37:52
Откуда: Донецк

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение ma5a97 »

Пробовал делать что я предлагал ? С матери хороший должен быть кварц , туда фуфло не ставят .
Выложи схему и исходники :)))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Аlex »

Viper70 писал(а):Вот код

Код: Выделить всё

void WriteRTC(){ //Запись I2C RTC
    SSPIF=0;
    if(EEp==0) SEN=1; //Start
    if(EEp==1) {SSPBUF=0b11010000;EEp++;} //RTC запись
    if(EEp==3 && ACKSTAT==0) SSPBUF=EEadd;
    if(EEp>=4 && EEp<11 && ACKSTAT==0) SSPBUF=bufEE[EEp-4]; //Отправка подтверждения
    if(EEp==11) {SSPBUF=bufEE[EEp-4]; ACKDT=1; ACKEN=1;} //Нет подтверждения
    if(EEp==12) PEN=1; //Stop
    EEp++;
}

После запуска подпрограммы заход в нее осуществляется по прерыванию SSPIF. Между операциями проц занят другими задачами
EEadd - внешняя переменная равная 0. bufEE задается изначально

Остановка при EEp=4. Значит после отправки адреса заходит по прерыванию с EEp=3, ACKSTAT=1. Поэтому пропускает шаг и увеличивает EEp до 4

Напомню, что это кусок на Си для PIC
Вообще, не очень понятно, что и до куда доходит и где что останавливается.
Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит. Но, сдаётся мне, проблема именно в коде, а не в микросхеме. Я бы на Вашем месте не торопился бежать в магазин за новой, а, для начала, сделал бы общение тупым последовательным методом. Плюс ещё и сам I2C программным.
Аватара пользователя
Viper70
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт фев 23, 2017 20:03:07
Откуда: Украина

Re: Не могу запустить RTC DS1307 на Atmega8

Сообщение Viper70 »

Аlex писал(а):Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит.

Я и не спешил выкладывать код, чтоб не морочить голову вам.
Вы не внимательно смотрите. Инкремент в конце процедуры.
На плате стоит дисплей 20х4. На него при старте выводится EEp. Если запись во флеш, то светится EEp=14.
Нужно очень внимательно смотреть, чтобы понять почему именно 14 :)))
Если запись в RTC то светится EEp=4. Потому что нет ASK от RTC.
В симуляторе Протеуса обе процедуры отрабатывают правильно

А в магазинах у нас такой микрухи нет. Или из Китая заказывать или их другого города. Из Китая дешевле намного, но очень долго.
Если бы мог купить микросхему тут - давно бы перепробовал все варианты и не стал бы спрашивать :)
Одна голова - хорошо, а две - это уже V6
Ответить

Вернуться в «AVR»