Чи є в нових варіантах “PB” ATmega помилка в сповіщувачі коричневого кольору?


9

Ми багато років успішно використовуємо мікроконтролери ATmega48 / 88/168/328 у багатьох наших продуктах. Зараз ми розглядали можливість переходу з варіантів A і PA на новий варіант PB (тому що нам знадобляться додаткові штифти, таймери та UART в нових продуктах, тому що вони дешевші, і тому, здається, старі варіанти будуть скасовані), тому ми вимкнули ATmega328A з ATmega328PB. Здається, дуже часто після перерв живлення ходити по сітці . Такі проблеми ніколи не виникали зі старими варіантами.

Регулярні переривання живлення є нормальними для використання у наших продуктах. Ми використовуємо джерело живлення комутації (наприклад, цей ), встановлений на 5 В, і є конденсатори в діапазоні 220 мкФ на VCC ATmega, щоб підтримувати SRAM живим для перерв живлення в межах декількох хвилин, щоб зберігати внутрішні стани, які не є місією критично, але значно збільшують досвід роботи користувача, миттєво доступні при перезапуску (ці стани змінюються досить часто, щоб зробити EEPROM непридатним). Це завжди працювало.

Однак, з новим ATmega328PB, після перерви живлення, мікросхема скидається без умови скидання в MCUSR, і годинник, здається, переходить у сірий простір.

  • детектор коричневого кольору встановлюється на запобіжник. Ми пробували кожен доступний рівень bodlevel, помилка трапляється на всіх них.
  • ми використовуємо зовнішні 20 МГц, також встановлені правильно на запобіжник.
  • ми спробували 3 різних мікросхема, тож це не було жодної пайки або іншої технічної несправності.

Після того, як виходить помилка, годинник часто встановлюється на 2,5 рази меншою швидкістю, що вказує на те, що МКУ спрацьовує через 8 МГц внутрішній генератор. Однак іноді уповільнення буває близько 6 разів. Це означає, що це не може бути програмна помилка, що змінює подільник годинника, оскільки я не можу встановити запобіжники від програмного забезпечення, і подільник годин не може розділити годинник на 2,5 або 6.

Отже, моїм першим підозрюваним став новий запобіжник виявлення несправностей годинника. Однак незалежно від того, включено чи вимкнено, поведінка залишається такою ж.

Щоб виключити особливості програмного забезпечення, я написав просту програму тестування з нуля, яка не робить нічого іншого, як перемикає висновок на 100 Гц від перерви таймера і вказує за допомогою світлодіодів після кожного перезавантаження, які умови скидання були активовані (як прочитано з MCUSR). Решта обладнання також було вилучено, тільки mcu та регулятор є (і індикатор має серійні резистори).

Результати

Приблизно в 2/3 часу нічого цікавого не відбувається. Після перерви живлення mcu відновить роботу, і індикатори відключення коричневого відключення, і індикатори скидання живлення загорілися.

(на зображенні червоний колір - це перемиканий штифт, а синій - VCC. На цьому зображенні добре видно вимкнення 2,7 В. Я зробив ті ж тести з іншими налаштуваннями коричневого відтінку, результати точно такі ж, тому я опущу ці фотографії)

він прекрасно запускається

Приблизно в третині часу виникає вищезгадана помилка, і коли живлення знову повертається, жоден із індикаторів скидання коричневого скидання та скидання живлення не загоряється! Вихід різний, як би mcu тикав дивним годинником. Це не хаотично, однак він продовжує тикати з однаковою частотою.

він перезавантажується в шаленому стані

Цікаво, що в цій ситуації детектор коричневого кольору видається абсолютно неактивним, тому що після чергового переривання живлення (де інколи відновлюється правильний годинник, іноді немає), добре видно, що вихід буде добре змінюватись після коричневого кольору. рівень пройдений У таких ситуаціях годинник часом стає швидшим, а іншим - повільніше:

Жодного коричневого кольору, годинник стає швидше Жодного коричневого кольору, годинник стає повільніше

Під час цих тестів я використовував 16K CK / 14CK + 4,1 мс для затримки запуску (але затримка 65 мс не усуває проблем).

Ось знімок із збільшенням зображення, на якому чітко видно, що VCC досягає стабільного стану при 5 В менше 2 мс:

вдалий старт, збільшений масштаб

На наведеному малюнку mcu запустився правильно.

Цікаво, що коли цього не відбувається, напруга живлення стає швидше до стабільних 5 В (здається, багато частин МКУ не вмикаються, тому під час запуску вона приводить менше струму)

Нижче наведено зображення з невдалого початку:

невдалий старт, збільшення масштабу

Зауважте, що програмне забезпечення починає працювати через понад 85 мс після стабілізації напруги живлення, а не 10,5 мс, необхідних для іншого. Запобіжники для затримки запуску залишаються однаковими, 16K CK / 14CK + 4,1 мс.

Цікаво також зазначити, що після відключення живлення VCC стабілізується на рівні від 1,1 до 1,2 Вольт (старий варіант ATmega328A знизився до 0,6 - 0,7 В). Це зберігає кілька хвилин. Якщо я чекаю досить довго (на замовлення півгодини і більше), mcu завжди починається правильно! Тож здається, що проблема полягає в тому, що є 1,1 Вольт навколо, що, згідно з даними, не гарантується, що буде достатньо для скидання живлення. Але його повинно вистачити для скидання коричневого кольору!

За винятком цих ситуацій, коричневий детектор працює чудово. Це видно на першому зображенні (вихідний сигнал припиняється, коли досягнутий рівень рівня тіла, і падіння напруги сповільнюється, коли частини mcu вимикаються). Я робив тести, коли я знижував VCC трохи нижче рівня рівня тіла і дозволяв йому знову підніматися назад, mcu завжди перезапускався правильно за таких умов, тільки загорівся індикатор коричневого відключення.

Я пропустив щось очевидне, чи ATmega328PB має серйозну помилку в його коричневому детекторі?

Редагувати:

Цікаво, що вищезазначені проблеми виникають лише тоді, коли я перериваю подачу перед регулятором. Якщо я перервую його після регулятора (або використовую лабораторний блок живлення), проблем ніколи не станеться. Ніби форма піднімається напруги викликала проблеми. Однак, як видно з останнього зображення, підвищення напруги є досить приємним і воно швидко стабілізується.

EDIT 2

Я спробував це з 16 МГц замість 20 МГц, але точно такі ж проблеми трапляються.


Ви зв’язалися з Атмелом чи заглянули в їхні помилки? У цей день та вік помилки в дизайні ІС досить поширені.
Едгар Браун

Я переглянув помилки (не знайшов нічого в цьому напрямку), і ми розглядаємо можливість зв’язатися з Атмелом, але не перед тим, як зробити ще кілька тестів і трохи озирнутися.
vsz

3
За моїм досвідом, не витрачайте час, перш ніж звертатися до виробника або користуватися їх форумами. Ви зробили налагодження більш ніж достатньо, щоб представити дуже вагомий випадок. Більше того, TI надіслав мені свою внутрішню (неопубліковану) помилку для одного із своїх ІМС, який задокументував нашу проблему.
Едгар Браун

Мої два центи варті: я бачив проблеми з іншими процесорами, якщо потужність зростає занадто швидко. Деякі виробники визначають максимальний час підйому, але частіше це не згадується.
Oldfart

Відповіді:


3

Я не думаю, що це помилка з коричневим детектором, але як ви використовуєте чіп.

Як ви самі сказали, порог скидання при включенні живлення 1,1 В не буде досягнуто, якщо джерело живлення просто ненадовго відключено та підключено, тому POR не буде.

Коричневий детектор теж не може допомогти тут. Ви використовуєте AVR на частоті 20 МГц, і для цього потрібна напруга живлення 4,5 В або вище, або ви порушуєте характеристики. І БПК не гарантує, що він буде спрацьовувати при 4,5 В, як правило, менше, ніж, скажімо, 4,3 В. Отже, навіть до того, як спрацює БПК, немає гарантії, у якому стані закінчується AVR, але БПК повинен спрацьовувати, за винятком того, що він може не працює завдяки вашому тактові частоти 20 МГц. Коли напруга знову починає зростати, БПК відключається, перш ніж напруга живлення знову буде на безпечному рівні 4,5 В. Якщо вона спрацьовувала правильно. Час затримки при запуску повинен бути встановлений на достатньо високий рівень, щоб напруга змінилося, щоб піднятися з рівня дезактивації БПК до 4,5 В до звільнення внутрішнього скидання.

Але все це може вийти з ладу, оскільки для роботи на 20 МГц йому потрібно щонайменше 4,5 В. Таблиця даних AVR згадує, що якщо система внутрішнього скидання є непридатною, тоді використовуйте зовнішній мікросхема скидання, і в цьому випадку, схоже, це вирішить ваші проблеми щодо скидання AVR до падіння напруги до 4,5 В.


Я припускав, що BOD не використовує сам процесор, але це спеціальне обладнання. Може вони змінили його на варіант PB? Я був би здивований, якби вони більше не підтримують BOD для 20 МГц. Найвищий рівень тіла - 4,3 В, тож для 20 МГц потрібен зовнішній БПК? Тим не менш, я сумніваюся, що це одна саме причина. Я зробив тест з 20 МГц, 2,7 В бодловим рівнем, встановив VCC на 3V, він пройшов нормально. Коли я знизив напругу вручну трохи нижче 2,7, вихід припинився, коли я збільшив її вище 2,7, вихід поновлювався, завжди він ніколи не виходив з ладу, навіть не один раз. Лише запуск від 1,1 В, здається, відключає BOD.
vsz

Швидше за все, це виділене обладнання, але під час перенапруги, перш ніж BOD запускається, чи можете ви бути впевнені, що правильні дані отримують із спалаху для виконання процесора, і чи правильно ЦП виконує їх? Він може або просто записувати випадкові дані в зарезервовані регістри, які роблять не визначені речі. Характеристики змінилися для варіанту PB, і вони не підтримували BOD для 20 МГц ні на старій мікросхемі. У варіанта PB криві BOD і POR дійсно відрізняються і пізніше виникають при менших напругах.
Justme

Будь ласка, погляньте на мою другу картинку. BOD, здавалося б, був задіяний правильно і скинув чіп. Він не вдається ініціалізуватися при наступному запуску. Крім того, я загнав цю мікросхему на 3 В і вона функціонувала правильно, ніколи не виходила з ладу жодного разу.
vsz

Ну, на мою думку, мікросхемі не потрібно працювати поза безпечною робочою зоною, але продовжимо. BOD не скидає детектор відмов годинника, тому з внутрішнього годинника вимкнеться лише скидання живлення та зовнішнє скидання. Тому двічі перевірте параметри запобіжника CFD. Використовуєте зовнішній кришталь або зовнішній годинник? Запобіжник CFD, можливо, раніше був запобіжником Full Swing. А оскільки немає повного запобіжника, максимальна частота для кристала становить 16 МГц, а 20 МГц вимагає тактового сигналу зовнішнього логічного рівня. Так що може бути і проблема запуску кристалів, тому покладіть область на кришталеві шпильки.
Justme

Я використовую кристал. Гарна ідея, я розберуся в цьому. Зауважте, що та сама поведінка, яку я зображувала із зображеннями, мала місце незалежно від того, було чи вимкнено CFD.
vsz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.