Аlex тоже напишет тебе программу . Будет двое часов на халяву
Не могу запустить RTC DS1307 на Atmega8
Re: Не могу запустить RTC DS1307 на Atmega8
Viper70 Выложи схему часов в протезе , я соберу код для проверки .
Аlex тоже напишет тебе программу . Будет двое часов на халяву
Аlex тоже напишет тебе программу . Будет двое часов на халяву
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Не могу запустить RTC DS1307 на Atmega8
Вы ни чего не перепутали ?ma5a97 писал(а):Аlex тоже напишет тебе программу
Добавлено after 2 minutes 39 seconds:
Пусть лучше код свой выложит, в котором он так сильно уверен.ma5a97 писал(а):Viper70 Выложи схему часов в протезе
Re: Не могу запустить RTC DS1307 на Atmega8
Для такого спеца это проблема ? Или только остальных можем поливать грязью ?
Выложу как будет схема.
Выложу как будет схема.
Последний раз редактировалось ma5a97 Сб фев 25, 2017 15:49:25, всего редактировалось 1 раз.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Не могу запустить RTC DS1307 на Atmega8
Нет, не проблема. Но где я в этой теме обещал кому-то программу писать ?ma5a97 писал(а):Для такого спеца это проблема ?
Или я подряжался на этом форуме всем помогать с кодом ? Что-то не припоминаю...
Покажите, кого я тут грязью облил.ma5a97 писал(а):Или только остальных можем поливать грязью ?
В этой теме я отвечал только вам и на пост, содержащий тупые советы.
Человек вам твердит, что у него DS'ка не отвечает, а вы ему про какую то установку секунд твердите. Как можно в ней что-либо установить, если она "слепа", что обуславливается отсутствием АСК-подтверждением ?
Ещё и про какие-то команды инициализации начали говорить. Бредите ?
Вы вообще посты читаете ? Такое ощущение, что нет, ну или через строчкуma5a97 писал(а):Выложу как будет схема.

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

- Вложения
-
- rtc .rar
- (667.33 КБ) 148 скачиваний
- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
ma5a97 писал(а):Специально отпаял кварц и батарейку , не работает без них . Постоянно пытается поднять шину , но она не поднимается (устройство одно). Потом впаял по очереди кварц и батарейку на место , и контроллер сразу загрузился
Блин. Уже бы попробовали с батарейкой, но без кварца.
Вы ведь читали в чем именно вопрос?
Viper70 писал(а):если кварца нет, ДС-ка будет отвечать на команды, пусть даже время стоит?
Одна голова - хорошо, а две - это уже V6
Re: Не могу запустить RTC DS1307 на Atmega8
Если без кварца зависло устройство на стадии загрузки , значит не отвечает !? 
Re: Не могу запустить RTC DS1307 на Atmega8
Много раз уже говорилось - у 1307 несколько специфичное понимание I2C в отношении операций по предварительно заданному адресу...
Возможно программная ошибка.

Возможно программная ошибка.
- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
Вот код
После запуска подпрограммы заход в нее осуществляется по прерыванию SSPIF. Между операциями проц занят другими задачами
EEadd - внешняя переменная равная 0. bufEE задается изначально
Остановка при EEp=4. Значит после отправки адреса заходит по прерыванию с EEp=3, ACKSTAT=1. Поэтому пропускает шаг и увеличивает EEp до 4
Напомню, что это кусок на Си для PIC
Код: Выделить всё
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
Re: Не могу запустить RTC DS1307 на Atmega8
Я в СИ не соображаю...
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...

Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
BOB51 писал(а):Я в СИ не соображаю...
![]()
Для работы по составлению прожек пользуюсь вот этой картой
http://img.radiokot.ru/files/20529/17hf9pt0nk.GIF
там внизу описание...
Картинка класная, но там ошибка как по мне в последовательности передачи
Но у меня и до этого места не доходит
Одна голова - хорошо, а две - это уже V6
Re: Не могу запустить RTC DS1307 на Atmega8
По даташиту такого обращения быть не должно - там только обмен массивом закладывался.
По факту - модификация рестарта "с тараканами" относительно того, кому АСК выставлять.
Работает весьма уверенно (особенно если побайтовый доступ к ОЗУ используется).
А реализацию - смотреть самому.

Может и мелкосхема "пыток не вынесла"...
У меня вот такой выносной модуль для проб и издевательства
http://img.radiokot.ru/files/20529/dtg3kkk1v.jpg
http://img.radiokot.ru/files/20529/dtg3s5koa.jpg
http://img.radiokot.ru/files/20529/vcyn4aqbt.GIF
сам - по себе тихонько тикает, когда и куда понадобится по мере спроса/необходимости подтыкивается.

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

- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
BOB51 у меня по сути так же. Только нет керамики по питанию. Но ведь это не критично? Меня не глюки достают - вообще не работает
И кварц у вас без всяких полигонов под ним и не заземлен его корпус наверное и все работает
Похоже у меня проблема либо в кварце, либо в микросхеме?
Кварц новый, маленький. Еще меньше вашего. А вот микросхему я уже выпаивал с похожей схемы. Там не был реализован код и она не проверялась. Была новая микруха. Потом собрал новую плату, доделал код и перепаял ДС-ку. Может перегрел? Просто на тот момент другой небыло
И кварц у вас без всяких полигонов под ним и не заземлен его корпус наверное и все работает
Похоже у меня проблема либо в кварце, либо в микросхеме?
Кварц новый, маленький. Еще меньше вашего. А вот микросхему я уже выпаивал с похожей схемы. Там не был реализован код и она не проверялась. Была новая микруха. Потом собрал новую плату, доделал код и перепаял ДС-ку. Может перегрел? Просто на тот момент другой небыло
Одна голова - хорошо, а две - это уже V6
Re: Не могу запустить RTC DS1307 на Atmega8
Может и кварц... "Слишком мелкие" весьма капризны - а вот такой как на платке как-бы "стандартный" (в простонародном слэнге "спиралька" вроде).
Можно еще содрать с бэушного кассового аппарата...

Можно еще содрать с бэушного кассового аппарата...
- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
Выпаял сегодня кварц с материнки. С виду - часовой. Маркировка KDS7K.
Попробовал заменить свой - все равно не стартует. Следующий шаг - замена ДС-ки
Попробовал заменить свой - все равно не стартует. Следующий шаг - замена ДС-ки
Одна голова - хорошо, а две - это уже V6
Re: Не могу запустить RTC DS1307 на Atmega8
Пробовал делать что я предлагал ? С матери хороший должен быть кварц , туда фуфло не ставят .
Выложи схему и исходники
Выложи схему и исходники
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
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
Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит. Но, сдаётся мне, проблема именно в коде, а не в микросхеме. Я бы на Вашем месте не торопился бежать в магазин за новой, а, для начала, сделал бы общение тупым последовательным методом. Плюс ещё и сам I2C программным.
- Viper70
- Первый раз сказал Мяу!
- Сообщения: 20
- Зарегистрирован: Чт фев 23, 2017 20:03:07
- Откуда: Украина
Re: Не могу запустить RTC DS1307 на Atmega8
Аlex писал(а):Если это автомат, то где изменение (инкремент, в данном случае) переменной EEp ?
Где обработка ошибки (как Вы выражаетесь "останов") ?
Каким образом смотрите что происходит ? Отладчик, или что ?
По этому куску тяжело судить о том, что в реальности происходит.
Я и не спешил выкладывать код, чтоб не морочить голову вам.
Вы не внимательно смотрите. Инкремент в конце процедуры.
На плате стоит дисплей 20х4. На него при старте выводится EEp. Если запись во флеш, то светится EEp=14.
Нужно очень внимательно смотреть, чтобы понять почему именно 14
Если запись в RTC то светится EEp=4. Потому что нет ASK от RTC.
В симуляторе Протеуса обе процедуры отрабатывают правильно
А в магазинах у нас такой микрухи нет. Или из Китая заказывать или их другого города. Из Китая дешевле намного, но очень долго.
Если бы мог купить микросхему тут - давно бы перепробовал все варианты и не стал бы спрашивать
Одна голова - хорошо, а две - это уже V6