Перейти к содержанию

    

atmega 328 странно дохнет

добрый день!

 

суть проблемы

коротко:

- прошивка портится/стирается (непонятным способом)

 

подробно:

- есть рабочий avr-проект, реализован на arduino-nano, работает уже пару лет (до этого arduino-nano работала еще пару лет в другом проект и какие либо проблемы не наблюдались.

 

- примерно полгода назад на рабочей "мандарине" сдох внутренний стабилизатор AMS1117, не стал ничего придумывать, выдернул стабилизатор с платы, "мандарину" отправил работать в стенд, а сюда установил из "новой партии с али"... и ...

 

после замены "манадрины" за последние пол года два раза происходил "полный капец" (subj)

 

первый раз - прошивка подохла сразу, без всяких придуриваний и судорог, прибор сразу перестал работать.

 

второй раз сначало "подохла" функция, которая обрабатывает внешнее прерывание, (ну вот просто не отрабатывалась и все тут :о), потом, пока "разбирался", в течении двух суток "бобик" вообще сдох

 

в обоих случаях помогала стандартная перепрошивка "мандарины", типа вдули мозги заново, она и очухалась :о)

 

до этого только слышал/читал, что бывают подобные "выкрутасы", думал что это "детские болезни авторов", но тут вон аж как, сначало "прерывание сдохло" а потом и "вообще все"...

 

ИТОГО:

- кто ни будь уже сталкивался с такими "выкрутасами ATMega 328P/TQFP32?

- как боролись? или забили и просто выбросили?

- какие будут мысли, высказывайтесь, не стесняйтесь

 

(топик создан, сколько, не для "поиска решения", а для сбора информации и самое - главное ваших мыслей/идей)

 

tag: avr, atmega 328, arduino nano

 

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

 

https://ru.aliexpress.com/item/Freeshipping...2820659521.html

 

Магазин:Thinary Electronic Official Store

 

https://www.aliexpress.com/store/1093624?sp....39675156O9Qttk

 

спасибо

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас трансформаторный БП, то задемпфируйте первичку трансформатора последовательной RC - цепочкой. Очень все это похоже на проблемы с питанием, ну просто очень. Еще вариант - некорректная схемотехника. И еще версия - на какой-то из выводов устройства приходит внешний синал недопустимо большой амплитуды, например, мощная помеха. Кроме того, это может быть, например, из-за сильных электромагнитных помех (рядом с устройством есть контакторы, управляющие мощными двигателями, или что-то в этом роде) ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
проблемы с питанием

+

некорректная схемотехника

+

на выводов приходит синал недопустимо большой амплитуды, например, мощная помеха

нет такого :о)

устройство отлично отработало почти 2 года, а начал бузить другой контроллер из "новой партии с али"

 

из-за сильных электромагнитных помех

тоже таких нет, но, в противовес первым трем причинам, согласен, что - причина, если бы она была - то возможно...

но, опять таки, сильные эл.маг помехи

- могут привести к помехам в питании, что в свою очередь, обычно приводит к зависанию/перегрузкам

- другое делао, как СЭМП воздействуют на кристалл, могут ли "подпортить" память?! сомневаюсь, я с таким не сталкивался, на практике и в литературе/публикациях в инете...

 

если есть мысли по поводу "аргументов" к каждому пункту, механизмов, пруфы, линки - пишите, обсудим :о)

 

зы по поводу питания - согласен, априори должно быть отменным :о)

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
суть проблемы

коротко:

- прошивка портится/стирается (непонятным способом)

Вас это удивляет?

В китае не бывает дешевых нормальных контроллеров, только отбраковка, клоны и тд..

И никакие электромагнитные помехи, питание, тут не причем.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
- кто ни будь уже сталкивался с такими "выкрутасами ATMega 328P/TQFP32?

Уже 6 лет применяю исключительно ATXmega.

Никогда не было проблем. Десятки тысяч разных изделий.

Но пару дней назад попалась ATxmega128A1U-AU с не рабочей flash, дата про-ва 1720.

После программирования не проходит сравнение.

 

- как боролись? или забили и просто выбросили?

Выпаял, сломал пополам и только потом выбросил (шибко злой был).

 

- какие будут мысли, высказывайтесь, не стесняйтесь

Похоже что после развала ATMELа нужно быть готовым к разным сюрпризам!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мысли аналогичные ... да... похоже надо запасаться орехами, что бы грызть их долгими зимними вечерами ...

или уже все орехи понадкушены китаисами?

 

п.с. спасибо за мысли... но, если чего, высказываемся

 

...

 

///////////////////////////////////////////////////////////////////////////////

 

выкусы из инета по данной и сопутствующей теме, надеюсь обществу пригодиться

 

///////////////////////////////////////////////////////////////////////////////

 

портится флеш

 

флеш при пониженных напряжениях питания плохо прошивается, баг выражается в деградации ячеек со временем.

 

Включить в фузах встроенный супервизор

 

Супервизор стоит DS1833-5% + 2SС945 (инвертор), а флэш портится если во время операций с ней проседает напряжение питания

 

///////////////////////////////////////////////////////////////////////////////

 

Контроллер виснет при включении

 

http://kazus.ru/forums/showthread.php?t=102352

 

Иногда при подключении аккумулятора к устройству (на atmega - 8 ) оно зависает в самом начале и приходится "передёргивать" ещё раз батарею.

+

Семейный глюк ATMega.

При медленно нарастающем питании (может и еще из-за чего-то) может зависнуть намертво. Ресет не спасает. Так что и собака не спасет.

Только передергивание питания.

+

Помнится, отчетливо проявлялся (практически с вероятностью 100 %) при отрубании питания и быстром повторном врубании, когда на AVCC было подано напряжение через резистор в несколько десятков Ом и кондер-электролит.

Спасет внешняя собака, которая будет перезапускать питание. Или гарантированная скорость нарастания напряжение при подаче питания.

+

P.S. при таком подвисании мега ведет сябя, как будто находится в режиме ISP программирования. На команды ISP откликается, но не шьется.

Интересно, что в ATMega128 при таком подвисании нога PEN находится в активном низком состоянии. Подтянуть ее к VCC не получается - резисторы не помогают, а напрямую течет бешеный ток. Видимо какие-то cmos структуры защелкиваюся.

Вот как-то так (может еще чего упустил, лет 5 прошло с тех пор, как я этот вопрос изучал)

 

Поставьте внешний супервизор питания, который будет подавать питание на контроллер только после достижения нормального уровня и все решится. Два корпуса SOT-23 места много не займут.

 

Я сделал так - питание подается и снимается с периодом 0.5 - 1 сек, пока с ноги проца не пойдут импульсы (что свидетельствует о том, что процессор запустился).

Но требует одну ногу процессора и обвязку.

 

Видимо так и придётся, хотелось обойтись лёгкой кровью, силами самого контроллера.

У меня после 5-ти вольтового линейного преобразователя стоит керамика 0.1 мкф (она не в счёт) и тантал 470 мкф, стабилизатор на 250 мА, может многовата ёмкость, она медленно заряжается и оттуда проблема ?

-->

99.5% Если кроме меги ничего - уменьшите ёмкость до 4.7..22 мкФ и будет счастье. В любом случае - не более 33..47 мкФ. Стабилизатор должен больше отрабатывать за счёт обратной связи. А такие ёмкости - привет из 80-х, когда параметрические стабилизаторы с эмиттерным повторителем делали.

-->

Типичная ошибка начинающего радиолюбителя. До стабилизатора 47.0, после него 2000.0 При выключении вдобавок еще и обратный ток прикладывается

 

+

 

может быть стоит включить БОД на 4 вольта

->

а он не включен?

-->

я его никогда не включал вообще ....

Убийца! Себя! Головой! Апстену!

А потом начинается битва с зависаниями. После того, как сделано ВСЕ для завешивания.

 

+

 

Значит подвисает при запуске 99% от большой ёмкости конденсатора.

-->

Точнее - от недостаточной скорости нарастания подачи питания.

 

+

 

Проблема была решена фьюзами. На самое продолжительное Start-up time.

 

На 64 меге тоже были глюки. Именно в момент подачи питания. Детально не разбирался, по старой памяти фьюзами выставил максимальное время старта, а также задействовал BOD. Глюки если и остались, то стали крайне редкими

 

+

 

SKOPT включен?

-->

Должен быть запрограммирован ("0") для максимального усиления генератора. см. стр27 ДШ.

Если BOD отключен, SUT1...0 должны содержать 0b11 , если включен, то 0b01.

BODLEVEL лучше сбросить - запрограммировать.

Таким образом младший FUSE должен содержать значение 0b00011111 для включенного BOD и 0b11111111 для выключенного.

Старший в обоих случаях 0bххх0хххх.

Хотя у меня на 12МГц на USB (питание 5в) неплохо работает с BOD=2,5в без CKOPT.

 

+

 

Курите доки. Например, для ATmega32, примечания к "Table 5. Start-up Times for the Crystal Oscillator Clock Selection"). Там написано мелким шрифтом, что некоторые варианты настроек не обеспечивают стабильную частоту генератора во время запуска ИМС.

Время выхода кварцевого генератора на рабочий режим (примерно) прямо пропорционально добротности резонатора и обратно - частоте.

 

///////////////////////////////////////////////////////////////////////////////

 

DiHALT / AVR. Учебный Курс. Конфигурация FUSE бит

 

http://easyelectronics.ru/avr-uchebnyj-kur...a-fuse-bit.html

 

BODLEVEL и BODEN — это режим контроля за напряжением. Дело в том, что при определенном пороге напряжения, ниже критического уровня, контроллер может начать сильно глючить. Самопроизвольно может запортачить, например, EEPROM или еще что откосить. Ну, а ты как думал, не покорми тебя с пару недель — тоже глючить начнешь :)

 

Так вот, для решения этой проблемы есть у AVR встроенный супервизор питания. Он следит, чтобы напруга была не ниже адекватного уровня. И если напруги не хватает, то просто прижимает RESET и не дает контроллеру стартовать. Вот эти два фуза и рулят этой фичей. BODEN включает, а BODLEVEL позволяет выбрать критический уровень, один из двух. Какие? Не буду раскрывать, посмотри в даташите (раздел System Control and Reset).

 

///////////////////////////////////////////////////////////////////////////////

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
п.с. спасибо за мысли... но, если чего, высказываемся

Очень трудно о чем-то говорить, т.к. этот эффект у вас проявляется крайне редко и для его повторения надо долго ждать. Версии - некорректная схемотехника, некорректная разводка, проблемы с питанием. Еще версия - эл.магн. помехи. Например, с некоторых пор рядом с вашим объектом обосновался какой-то оператор такси и своим никуда не годным передатчиком засоряет эфир ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
п.с. спасибо за мысли... но, если чего, высказываемся

А что хотите услышать?

С вашей проблемой все ясно, будете продолжать кормить китайцев?

И зачем вывалили сюда кучу никому ненужного мусора?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А что хотите услышать?

от вас, видимо, НИ-ЧЕ-ГО :)

 

будете продолжать кормить китайцев?

не-е-е... теперь буду лобзиком и рубанком стругать AVR-ки...

 

вывалили сюда кучу никому ненужного мусора?

это он вам, видимо, не нужный ... а кому надо, тому пригодиться, т.к. собирались выкусы имено по подобным и сопутствующим темам и имеют непосредственное отношение к теме (а вы читали сами эти выкладки?!)

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Моя версия.

В контроллерах применяемых в Arduino присутствует программа-прошивальщик, зашитая на заводе (чтоб удобно было программировать через UART или USB).

При помехах по питанию, программный счётчик может "перепрыгнуть" в том числе и на код прошивальщика, и рандомно что-то стереть/записать в памяти программ.

 

Предложение - затереть код прошивальщика, и поменять "ардуиновские" значения бит BootRST и BootSize на стандартные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
это он вам, видимо, не нужный ... а кому надо, тому пригодиться,

Так я не понял, у Вас супервизор выключен что ли?

Или какие выводы мы должны сделать на основании опубликованных Вами выкусов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
программа-прошивальщик

bootloader (загрузчик)

 

при помехах по питанию, программный счётчик может "перепрыгнуть"

хрена себе... :о) это предположение или есть пруфи, линки, преценденты?

 

рандомно что-то стереть/записать в памяти программ

загрузчик заливает прошивку простым потоком, начиная с "начала" и заканчивая "концом" :о)

на другом форуме предположили, что "прошиваться" может как-то иначе, но пока нет этому подтверждения (да и нахрена?!!! когда можно ПРОСТО И НАДЕЖНО ЗАЛИТЬ ВСЕ ОДНИМ БЛОБОМ!!!)

 

и у нас "имеется" два разных случая "порчи памяти" с соотв. выводами ...

 

Предложение - затереть код прошивальщика, и поменять "ардуиновские" значения бит BootRST и BootSize на стандартные

расшифруйте свою мысль подробнее

вы хотите, что бы я заливал прошивку через ISP или что?

 

+

 

Так я не понял, у Вас супервизор выключен что ли?

Или какие выводы мы должны сделать на основании опубликованных Вами выкусов?

 

попробуем прочитать еще раз и сделать соотв. выводы:

выкусы из инета по данной и сопутствующей теме, надеюсь обществу пригодиться

 

если и сейчас не понятно:

выкусы из инета по данной и сопутствующей теме

 

если и это не понятно:

выкусы из инета ... и ... надеюсь обществу пригодиться

Изменено пользователем sunjob

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
попробуем прочитать еще раз и сделать соотв. выводы:

если и сейчас не понятно:

если и это не понятно:

Ваша забота об обществе, вне всяческих сомнений, достойна похвалы!

А про супервизор вы так и не ответили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А про супервизор вы так и не ответили.

 

ок, пару слов про супервизор:

- проект написан на Arduino/Wiring и соотв. используются все "встроенные фишки"

- внешнего с.вайзера - нет

- встроенный... так, с этим надо уточнять, лезть в доки по загрузчику, потому как, считаю, что в манадрине "инициализацией" занимается загрузчик (т.е. поведение загрузчика "по умолчанию", т.к. использутеся станданртный)

 

может кто из гуру подскажет по этому поводу? (как в arduino используется встроенный с.вайзер) ... пока нет возможности загрызть даташиты и доки

 

спасибо

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
- встроенный... так, с этим надо уточнять

Вот это поворот!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти