Страница 4 из 5

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

Добавлено: Сб фев 25, 2017 15:16:43
ma5a97
Viper70 Выложи схему часов в протезе , я соберу код для проверки .
Аlex тоже напишет тебе программу . Будет двое часов на халяву :)))

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

Добавлено: Сб фев 25, 2017 15:25:40
Аlex
ma5a97 писал(а):Аlex тоже напишет тебе программу
Вы ни чего не перепутали ? :shock:

Добавлено after 2 minutes 39 seconds:
ma5a97 писал(а):Viper70 Выложи схему часов в протезе
Пусть лучше код свой выложит, в котором он так сильно уверен.

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

Добавлено: Сб фев 25, 2017 15:30:20
ma5a97
Для такого спеца это проблема ? Или только остальных можем поливать грязью ?
Выложу как будет схема.

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

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

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

Добавлено: Сб фев 25, 2017 16:11:31
ma5a97
Да в последнем предложении тупанул , не мне адресовалось :oops:

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

Ещё и про какие-то команды инициализации начали говорить. Бредите ?
Имелось ввиду обратится по адресу 00 и записать 00
Во всех устройствах собранных мной , пришлось добавить функцию запуск RTC , а без этого некоторые экземпляры стартовали сразу , а некоторые вели себя так-как будто на квадратной шине :))) пусто . Я надеюсь доступно описал суть .
И в чем корявость перевода того даташита что я выложил.

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

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

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

Выше писали как определить обрыв кварца. Я понял что без кварца работает и отвечает, только время не тикает как у многих было. Так?

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

Добавлено: Сб фев 25, 2017 19:38:24
ma5a97
Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился , но часы не пошли , а вместо секунд высветило 1212.
Пара картинок ,прикрепляю . Верхняя строка слева , это часы .
Где схема ? Сколько можно гадать :dont_know:

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

Добавлено: Вс фев 26, 2017 00:09:48
Viper70
ma5a97 писал(а):Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился
Блин. Уже бы попробовали с батарейкой, но без кварца. :?

Вы ведь читали в чем именно вопрос?
Viper70 писал(а):если кварца нет, ДС-ка будет отвечать на команды, пусть даже время стоит?

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

Добавлено: Вс фев 26, 2017 09:29:55
ma5a97
Если без кварца зависло устройство на стадии загрузки , значит не отвечает !? :)))

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

Добавлено: Вс фев 26, 2017 09:54:09
BOB51
Много раз уже говорилось - у 1307 несколько специфичное понимание I2C в отношении операций по предварительно заданному адресу...
Возможно программная ошибка.
:roll:

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

Добавлено: Вс фев 26, 2017 11:20:30
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

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

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

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

Добавлено: Вс фев 26, 2017 20:09:29
Viper70
BOB51 писал(а):Я в СИ не соображаю...
:sleep:
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
8)
Картинка класная, но там ошибка как по мне в последовательности передачи
Но у меня и до этого места не доходит

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

Добавлено: Вс фев 26, 2017 20:26:32
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:

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

Добавлено: Вс фев 26, 2017 21:50:54
Viper70
BOB51 у меня по сути так же. Только нет керамики по питанию. Но ведь это не критично? Меня не глюки достают - вообще не работает
И кварц у вас без всяких полигонов под ним и не заземлен его корпус наверное и все работает

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

Кварц новый, маленький. Еще меньше вашего. А вот микросхему я уже выпаивал с похожей схемы. Там не был реализован код и она не проверялась. Была новая микруха. Потом собрал новую плату, доделал код и перепаял ДС-ку. Может перегрел? Просто на тот момент другой небыло :?

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

Добавлено: Пн фев 27, 2017 08:37:18
BOB51
Может и кварц... "Слишком мелкие" весьма капризны - а вот такой как на платке как-бы "стандартный" (в простонародном слэнге "спиралька" вроде).
Можно еще содрать с бэушного кассового аппарата...
:roll:

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

Добавлено: Пн фев 27, 2017 22:40:19
Viper70
Выпаял сегодня кварц с материнки. С виду - часовой. Маркировка KDS7K.
Попробовал заменить свой - все равно не стартует. Следующий шаг - замена ДС-ки :(

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

Добавлено: Пн фев 27, 2017 23:07:36
ma5a97
Пробовал делать что я предлагал ? С матери хороший должен быть кварц , туда фуфло не ставят .
Выложи схему и исходники :)))

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

Добавлено: Пн фев 27, 2017 23:09:43
А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 программным.

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

Добавлено: Вт фев 28, 2017 00:11:47
Viper70
Аlex писал(а): Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит.
Я и не спешил выкладывать код, чтоб не морочить голову вам.
Вы не внимательно смотрите. Инкремент в конце процедуры.
На плате стоит дисплей 20х4. На него при старте выводится EEp. Если запись во флеш, то светится EEp=14.
Нужно очень внимательно смотреть, чтобы понять почему именно 14 :)))
Если запись в RTC то светится EEp=4. Потому что нет ASK от RTC.
В симуляторе Протеуса обе процедуры отрабатывают правильно

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