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

Arduino - портится прошивка.Год работала.

Вс сен 23, 2018 14:56:30

Ардуинка - это тот-же АВР, поэтому пишу в этой ветке.
Сделал себе часики с синхронизацией по интернету.
Ничего особенного - Arduino Pro mini + RTC DS1307 + Ethernet ENC28J60 +TM1637 (вывод на7-сегментный индикатор)
Питание от внешних 7 вольт через стабилизатор DC-DC до 5 вольт.
Программа написана в среде Ардуино.
Часы тикают от RTC и каждые 3 часа ходят в инет для синхронизации.
Два года эта поделка исправно показывала время.
Но, в последние два месяца, стал появляться не приятный глюк - после выключении питания, часы (программа в ардуинке) не запускается ?
Все железо исправно (проверено по частям - благо шильды все на разъемах), питание норма, но, стоит выключить (выдернуть питание 7 вольт)
и подать снова - все. Не работает.
Заливаю прошивку заново - работает "как часы".
Дергаешь питание, ресетишь - все работает. Но, через время может опять слететь при выключении/включении.
До этого (полтора года минимум) часы многократно выключались-включались - никаких сбоев не было.
Если пропадал интернет (шнур выдернули случайно) часы идут без синхронизации, по своему кварцу.
В программе особых наворотов нет - все "линейно", (чтобы сказать , что прога сама себя портит - нет там такого)
В Ардуино нельзя сравнить прошивку в кристалле с hex файлом без танцев с бубном. Нужен внешний программатор.
Перепрошивка через USB решает проблему, но, остается неясным - почему она возникает - почему может слетать прошивка ардуинки?

Re: Arduino - портится прошивка.Год работала.

Вс сен 23, 2018 15:29:47

А точно слетает прошивка? Такое может быть когда села батарейка в RTC. После подачи питания инициализируются мусором, а мк впадает от этих значений в ступор. Если так, то кроме батарейки, отца русской демократии спасёт исправленная прошивка, которая при первом запуске читает время с инета, записывает в 1307 и только после возникает первый цикл отображения времени.

Re: Arduino - портится прошивка.Год работала.

Вс сен 23, 2018 19:05:48

boka1733 писал(а):Часы тикают от RTC и каждые 3 часа ходят в инет для синхронизации.
Тогда зачем RTC? Если синхронизироваться каждые 3 часа, время можно считать программно с приемлемой точностью.

Re: Arduino - портится прошивка.Год работала.

Вс сен 23, 2018 19:19:29

БП поменять.

Re: Arduino - портится прошивка.Год работала.

Пн сен 24, 2018 04:26:13

проверьте настройки BOD
можно на reset повесить mcp100

Re: Arduino - портится прошивка.Год работала.

Пн сен 24, 2018 08:44:24

Проверит ту часть программы, что определяет начальную загрузку значения времени в главные часы.
Как я представляю - начальная загрузка то-ли с RTC, то-ли с инета.
Далее ядро часов управляется прерыванием от сигнала RTC.
Вот где-то там и сбой.
Или недостаточна амплитуда от RTC или инет где-то глючит.
:roll:

Re: Arduino - портится прошивка.Год работала.

Пн сен 24, 2018 10:58:41

Батарейку на RTC проверил самой первой - норма, те более, что её менял всего пол года назад.
При севшей батарейке RTC , при отключении питания, часы просто слетают в 00:00:00 или вообще не инициализируются - на табло 45:45:45.
Программа написана так, что инициализация RTC и считанные из него данные никак не влияют на работу.
Можно включить вообще без шильда часов - на табло будет мусор, но табло будет работать!
При старте программы первой инится TM1637 и зажигаются точки во всех разрядах - признак, что мы "живы".
Затем инит ENC28J60, получаем IP, если неудачно, то все равно проваливаемся дальше и только потом идем часы инить, читаем из них данные.
Если IP получен, то ходим в интернет и читаем текущее время, которое и устанавливаем в RTC.
И дальше просто обновляем табло два раза в секунду, по часам.
Не думаю, что дело в программе - ну очень все там просто, да и работало почти два года без проблем.
Такое впечатление, что Ардуинка (при подаче питания) по какой-то причине переходит в режим загрузки по USB и портит прошивку.
После сбоя не зажигается дисплей, т.е не выполняется самая первая команда уже в Setup, которая никак не связана с часами или инетом.
void setup () {
// зажигаем точки во всех разрядах как признак инициализации часов
LEDdata[0] = 0;
LEDdata[0] |= dot; // точка
LEDdata[1] = 0;
LEDdata[1] |= dot; // точка
LEDdata[2] = 0;
LEDdata[2] |= dot; // точка
LEDdata[3] = 0;
LEDdata[3] |= dot; // точка
tbright=EEPROM.read(EEBright);
tbright&=0x07;
display.setBrightness(tbright | 0x08); // макс яркость для LED 0x07 маска параметра 0x08
display.setSegments(LEDdata);
..........
Дисплей должен ожить в любом раскладе, даже если дальше все зависнет - TM1637 статическая.

Начну с блока питания - надо подкинуть другой и внимательно посмотреть на первый.

Re: Arduino - портится прошивка.Год работала.

Пн сен 24, 2018 11:12:14

Проверь все электролиты.

Re: Arduino - портится прошивка.Год работала.

Пн сен 24, 2018 13:30:43

При подаче питания ессно первым запускается бутлоадер, а затем секунды через 2 и сама програма.
Только вот стартануть "просто так" нормальный бутлоадер вряд-ли сможет.
Другое дело какой сбой при инициализации многокристальной самоделки.
Ведь каждый из блоков имеет свою "голову и мозги".
По стандартному должен быть или единый для всех подчиненных сигнал сброса (простейшее решение), генерируемый ведущим после запуска участка инициализации железа и минимального софта.
Или хорошо продуманный протокол синхронизации готовности устройств.
Как вариант - ОБЯЗАТЕЛЬНЫЙ СОФТ-СБРОС периферийных модулей, если таковой предусмотрен даташитом на используемую элементную базу.
Просмотри внимательно инициализацию (и реинициализацию) дисплейного модуля.
Особо статус, когда может произойти аварийный перезапуск устройства (пиковый бросок тока при активации светодиодов или еще какого непредвиденного потребителя).
TM1637 это самостоятельное изделие - по сему начинаем с замены оного на заведомо годный.
Как вариант - не промыто от "левого" активного флюса (частенько сим адуринкины модули грешат, особо ежли разьемы УЖЕ были запаяны). Приходится входной контроль с полным демонтажем , отмывкои и последующей пересборкой делать.
А тот активный флюс не прочь и резисторами/дорожками апетит умилостивить...
И весьма внимательно отследить блокировку произвольного статуса на линиях штатного Rx/Tx канала адуринки на первых паре - тройке секунд запуска. Только при их участии чего с бутлоадером может происходить (желательно в самоделках применять только для связи с ПК).
:roll:

Re: Arduino - портится прошивка.Год работала.

Ср сен 26, 2018 18:03:48

Завершу тему, раз я её начал. Может, ещё кому интересно, кроме меня :)
Дефект в своих часах я нашел и устранил.
Все оказалось банально просто - плохо пропаян провод +5в шлейфа от основной платы к плате индикатора.
Нет питания - нет и индикации...
Почему я заподозрил прошивку?
Когда часы потухли , то просто отключение/включение питания не помогает.(разъем сбоку)
Беру часы в руки, переворачиваю, (USB снизу), подключаю шнур, прошиваю, переворачиваю обратно (провод +5 встает на место) и все работает !
До тех пор, пока часы кто-нибудь не подвигает пыль протереть :) но об этом не сказать ("....не знаю, потухли и все...")
Правда, попутно, выявил ещё парочку моментов.
Литиевая батарейка 3V в RTC оказалась вздутой. Весьма ощутимо. С чего бы её так разнесло? Брак? Дает 3,1V , но заменил на новую.

И "нашел" одну недоделку, которую просто забыл. Она, в теории, могла "гадить" по прошивке.
Внешний блок питания дает 12в/1А постоянки (взял от какой-то почившей железки)
Далее, на борту часов стоит DC на 3,3в для Ethernet шильда и .... забыл поставить DC-DC для 5V всего остального!
Запитался (временно) от стабилизатора на плате ардуинки, а он там совсем дохленький.
Запустил часы, сделал корпус, и на радостях забыл поставить DC-DC нормальный.
Тянуть 6 штук крупных индикаторов, многовато для бортового стабилизатора ардуинки..... хотя, два года как-то работает :dont_know:
Вся схема потребляет 120мА.
В общем, всегда надо сначала искать простую причину неожиданного отказа.
Вот так часики выглядят
Изображение Изображение
Всем удачи в ремонте! :solder:

Re: Arduino - портится прошивка.Год работала.

Чт сен 27, 2018 10:17:11

Батарейка RTC неверно подключена - или не к своему выводу, а к выводу 5 вольт питания да без диодного разделителя или внутри RTC чего отгорело.
"раздувает" при варианте паразитной зарядки от основного 5-вольтового источника.
:roll:

Re: Arduino - портится прошивка.Год работала.

Пт сен 28, 2018 08:54:12

Батарейка RTC не предназначена для зарядки, а на некоторых модулях стоит резисторный делитель для зарядки.

(бывает такого же типоразмера аккум, он не раздувается)

Re: Arduino - портится прошивка.Год работала.

Пт сен 28, 2018 19:04:37

Батарейка RTC не предназначена для зарядки, а на некоторых модулях стоит резисторный делитель для зарядки. (бывает такого же типоразмера аккум, он не раздувается)

А ведь и правда....
Я этот модуль RTC купил давно, и он валялся без дела.
Когда понадобился, то на батарейке было меньше вольта, и это оказалась не батарейка, а аккумулятор.
Зарядку уже не брал - пришлось выкинуть.
Под рукой такого-же не было - воткнул батарейку CR2032.
Про цепь заряда я и не подумал, а в схеме про это черным по английскому написано!
Изображение
Спасибо!
Надо будет удалить эти детальки с платы. ну, или заказать у китайцев аккумулятор.

Re: Arduino - портится прошивка.Год работала.

Пт сен 28, 2018 21:04:39

Завершу тему, раз я её начал. Может, ещё кому интересно, кроме меня :)
Дефект в своих часах я нашел и устранил.
Всем удачи в ремонте! :solder:

Хорошо все что хорошо кончается!!! А прошивка может слетать по некоторым причинам, вот одна из них.
На Меге8 у меня часики есть не стандартные. Так что получилось, работали мои часики отлично, пока не выключили эл.энергию по неизвестной причине. и через какое то время опять дали. Я заметил что мои часики показывают какую то охинею. Пытался запустить выключением от сети, не получилось. Вытянул я мегу8 прочел хекс, сравнил с оригиналом и увидел перекос. Залил оригинальный хекс, часики запустились. А теперь самое интересное. По питанию на входе я поставил в нестандартные часики 2200мкф. Часики работали пока присутствовало стабильное напряжение. Как только рубанули свет циферблат потух, а мега8 работала до полной разрядки конденсатора, и весе что шло из DS1307 попадало в М/К, так как напряжение питания меги8 ниже нормы, по этой причине произошли изменения в прошивке.
Как я вышел из вопроса: прописал к старым фьюзам защиту, BODEN и BODLEVEL, конденсатор выпаивать не стал, после этого косяки пропали.
СпойлерИзображение

Re: Arduino - портится прошивка.Год работала.

Сб сен 29, 2018 07:29:11

Завершу тему, раз я её начал. Может, ещё кому интересно, кроме меня :)
Дефект в своих часах я нашел и устранил.
Всем удачи в ремонте! :solder:

Как я вышел из вопроса: прописал к старым фьюзам защиту, BODEN и BODLEVEL, конденсатор выпаивать не стал, после этого косяки пропали.

Именно эту версию я и начал изучать первой.
Это актуально, когда делаешь проект "от кристалла" сам.
НО - у меня платка ARDUINO Nano, стоит там Мега 328 с boot лоадером.
Соответственно, исправлять что-либо в загрузчике и фьюзах самостоятельно нет необходимости.

Как и оказалось в итоге - был мой косяк в пайке.
Ответить