Обсуждаем контроллеры компании Atmel.
Ответить

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн янв 06, 2020 18:08:57

sergsurf писал(а):Часы прошиты прошивкой указанной в начале темы.
Я насчитал штук 6 прошивок, и два или три типа контроллера. Конкретней, какая?

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Ср янв 08, 2020 18:44:19

sergsurf писал(а):Часы прошиты прошивкой указанной в начале темы.
Я насчитал штук 6 прошивок, и два или три типа контроллера. Конкретней, какая?

Часы уже так давно работают что я уже не помню. Да и не стоит заморачиваться пусть себе и дальше так работают, Все уже привыкли. Спасибо за участие.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 16:10:48

Всем. Привет.
Может кто подскажет в чем дело. Часы работали. Решил поменять батарейку. Вставил новую. На часах надпись "Fn:d0" и висит до бесконечности. В режим часов не переходит.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 16:46:51

Часы работали.


У меня так же часы работали, но из-за чужих кривых рук по настройкам зависли. Помогла перепрошивка МК. :))

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 16:59:41

Перепрошивка МК помогла но опять до тех пор пока не вытащил батарейку. Но это не выход. Нужно понять в чем дело.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 17:17:29

Перепрошивка МК помогла но опять до тех пор пока не вытащил батарейку. Но это не выход. Нужно понять в чем дело.

Варианты:
1 - Не выставлены фьюзы BODEN и BODLEVEL. Из-за этого, когда передергиваете питание, происходит программный сбой, программа могла улететь куда угодно и записать что-то в EEPROM. Отсюда, при включении питания считываются неверные параметры и зависание часов. Методы решения: выставить фьюзы. Я не знаю, какое напряжение питания МК. Исходить из этого. Идем дальше. Никогда не использовать нулевой (первый по порядковому номеру) байт EEPROM. В конце каждого обращения к EEPROM выставлять указатель EEPROM в нуль.
Пример на ассемблере


Пример на си


В идеале, в начале программы нужно сделать проверку данных на корректность. Я думаю здесь проблемы. Параметры вышли за пределы, а проверки на валидность нет.

Мне некогда и лень искать архив. Дайте ссылку на исходники часов. Посмотрю, что да как.

Посмотрел схемы часов в начале темы. Речь о батарейке для DS3107? Эта микросхема капризная, я от нее отказался. Встает раком чуть ли не от чиха. Решение. Переинициализация микросхемы. Щупать ее как-то, проверять, жива ли. Использовать вывод IRQ, часы настроить на дрыгание выводом IRQ с частотой 1 Гц.

Есть еще решение. Считывать управляющий регистр микросхемы, проверять его. Но, может быть такой вариант, что в часах может оказаться полная каша. Я, когда баловался, пробовал часы сделать, делал полную переинициализацию микросхемы. Запуск, настройка, задание времени указанное в проекте. Скажем, 6.00. Если вывод IRQ замолчал, можно считать, что микросхема зависла.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 18:12:15

Да речь идет о DS1307. Прочитал половину форума. Сколько осилил. У многих эта проблема. Но решение так и не увидел. Проблема в SMD корпусе DS1307. Другие часы с Dip корпусом DS1307 без проблем переносят извлечение батарейки. Исходники есть на первой странице.

Добавлено after 6 minutes 11 seconds:
Собрал 3 шт. часов на платах из одной партии. У у всех одна и та же "болезнь" с извлечением батарейки. Что самое удивительное после перепрошивке все работает. Я думаю проблема в коде связанном с DS1307.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 18:24:11

Я думаю проблема в коде связанном с DS1307.

Проблема комплексная. Микросхема боится помех по питанию. Я когда делал макет, сначала у меня платка с часами висела на проводочках. Потом впаял в макетку. Один хрен, часы вставали, достаточно было дотронуться отверткой до питания или просто выводов деталей.
Поэтому, решение - написано выше. Проверять вывод IRQ. Если часы встали, считать это равнозначно вытаскиванию батарейки и сбою микросхемы. В таком случае полная переинициализация часов. Можно сделать какую-то индикацию, что микросхема сбойнула и нужно переустановить дату, время.

Нашел, кстати видеоотчет одного своего проекта. Часы заменил на DS3231. Обращение к микросхеме в основном идентично, есть пара нюансов. В этом проекте у меня комплексная проверка работоспособности микросхемы. При первом включении устройства после прошивки, перепрошивки. После сбоя микросхемы. После сбоя по питанию устройства.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 18:37:36

У многих эта проблема. Но решение так и не увидел. Проблема в SMD корпусе DS1307.

Дело в том, что при подаче питания на DS1307 начальное состояние всех регистров не определено. Поэтому необходимо принудительно включать тактовый генератор (СН = 0). Я в своих программах с использованием DS1307 настраиваю выход SQW на частоту 1 Гц и при старте МК проверяю данный выход… если он «не тикает» значит необходима инициализация часов с запуском тактового генератора. А если тикает, то инициализация не сброшена при замене батарейки...
Последний раз редактировалось Самсусамыч Чт янв 30, 2020 18:42:20, всего редактировалось 2 раз(а).

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 18:39:02

Дело в том, что при подаче питания на DS1307 начальное состояние всех регистров не определено. Поэтому необходимо принудительно включать тактовый генератор (СН = 0). Я в своей программах с использованием DS1307 настраиваю выход SQW на частоту 1 Гц и при старте МК проверяю данный выход… если он «не тикает» значит необходима инициализация часов с запуском тактового генератора. А если тикает, то инициализация не сброшена при замене батарейки.

Ну вот, о чем и речь. Кстати, в моем проекте микросхема считывается один раз, после включения устройства. В дальнейшем время тикает по выводу IRQ.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 18:45:20

В дальнейшем время тикает по выводу IRQ.

Разве есть такой вывод у DS1307? :)

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт янв 30, 2020 19:25:30

Прошу прощения, последнее время работал с микросхемами, у них выводы так обзываются. SQW/OUT

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт янв 31, 2020 11:48:56

Провел ряд экспериментов. Питание, фьзы здесь ни причем. При замене батарейки не происходит иницилизация DS1307. У автора есть условия проверки на сбой микросхемы. Там он через 1,5 секунд сравнивает время. Если одинаковое то запускает генератор. Это если есть что сравнивать. Выход из этой ситуации вижу пока так. На свободный пин подцепить джампер, и программно отследить, если джампер в нуле то инициализировать DS (режим первого вкл.).

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт янв 31, 2020 17:22:26

Лишняя сущность. Ввести пункт меню.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 13:07:27

Лишняя сущность. Ввести пункт меню.


Интересно, как Вы в это меню попадете. В режиме "Fn:d0" кнопки не активны. Выше я предложил поставить джампер и вкл. питание. Это и будет условием для инициализации DS.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 13:52:06

Я не знаю, что это за функция. И глупо делать режим, в котором все кнопки не активны. Я предложил вариант. Исхожу из оптимизации. Если есть лишний вывод и желание разбирать корпус, чтобы ставить джампер, ради бога. Можно джампер, можно потайную кнопку, а можно пункт меню.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 14:28:26

Какой пункт меню. Я Вам объясняю. При замене батарейки появляется надпись "Fn:d0" и на на этом все. На кнопки нет никакой реакции. И как попасть в Ваше "предполагаемое" меню, даже не предполагаю. ЕСть вариант использовать кнопки БУД1 или БУД2. ЕСли удерживать какуюто из кнопок и при этом вкл. питание, то все нормально заходит в нужный режим. ВЫбор типа индикатора или запись в ячеки епрома.

Добавлено after 13 minutes 47 seconds:
Если есть лишний вывод и желание разбирать корпус, чтобы ставить джампер,


Интересно. А для замены батарейки, корпус разбирать не нужно? Ели корпус при замене батарейки уже разобран, то почему не поставить джампер, а после вкл. его снять и собрать корпус.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 14:55:23

CNCBaby, можно фото где прилеплен кварц DS1307? И откуда вы этот кварц взяли?

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 16:49:25

Я про то, чтобы переделать проект. Перепрошивать каждый раз после сбоя или замены батарейки это как то не нормально, не находите?

Добавлено after 3 minutes 7 seconds:
Я про то, чтобы переделать проект. Перепрошивать каждый раз после сбоя или замены батарейки это как то не нормально, не находите?

Я мог бы этим заняться. Вижу, что тема живая, многие повторили поделку. Создать новый проект с нуля, легко редактируемый. Исходники этого проекта сырые. Программа плохо структурирована, и плохо предназначена для дальнейшей работы.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб фев 01, 2020 17:01:10

Я мог бы этим заняться.

Так что от нас нужно благославление? :)) Так это мы благославляем! :beer: :beer: :beer:
Ответить