Що таке скидання коричневого кольору в мікроконтролерах? Як запобігти помилковим падінням енергії

Brown Out Reset - важлива функція підвищення надійності мікроконтролера після запуску. Зазвичай ця стаття використовується для вирішення проблем із джерелом живлення, як Brown Out Reset може запобігти іншим проблемам.

Огляд Brown Out Reset

"Коричневий" мікроконтролера - це часткове та тимчасове зменшення напруги джерела живлення нижче рівня, необхідного для надійної роботи. Багато мікроконтролерів мають схему захисту, яка визначає, коли напруга живлення опускається нижче цього рівня, і переводить пристрій у стан скидання, щоб забезпечити належний запуск при відновленні живлення. Ця дія називається "Скидання коричневого кольору" або BOR. Подібна функція називається детектором низької напруги (LVD), яка є більш складною і додає виявлення різних рівнів напруги і може спричинити переривання до того, як буде здійснено скидання.

BOR часто вмикається бітом у регістрі управління. Зазвичай біт стану встановлюється, коли BOR викликає скидання. Цей біт стану переживає скидання (якщо потужність не надто низька!) І дозволяє програмі виявити проблему та виконати додаткове відновлення або реєструвати подію.

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

таке

V1 - нормальна напруга живлення. V2 - це точка, коли мікроконтролер може працювати ненадійно. Я показую V3 як точку, де робота повністю зупиняється. Між V2 і V3 знаходиться "небезпечна зона", де все може піти не так, а робота ненадійна. Пристрій міг працювати належним чином роками, поки джерело живлення потрапляє в зону небезпеки та виходить з неї, а потім, бам !, виникає збій. Рівень BOR встановлений вище V2 і замінює небезпечну зону скиданням пристрою. Скидання не є добрим, але (як правило) кращим, ніж невизначений.

Далі я розповідаю про ситуацію, коли джерело живлення працював нормально, але БОР використовувався для вирішення іншої проблеми.

Пошук іншого варіанту для скидання коричневого кольору (важкий шлях)

Я розробив схему, що містить мікроконтролер PIC та 18 регуляторів напруги в модулі, що контролює + 5 В потужності до 18 датчиків світла. Дванадцять модулів керували 204 датчиками в масиві. Модулі є частиною системи адаптивної оптики на великому астрономічному телескопі на Мауна-Кеа на Гаваях. Ось внутрішня частина модуля.

Зображення надано телескопом Subaru

Мікроконтролер знаходиться поблизу центру плати, а 18 лінійних регуляторів напруги прикріплені до стінок корпусу. Модулі та датчики встановлені на пластинах з водяним охолодженням для відведення тепла від оптичного стенду, що знаходиться над масивом датчиків. Імпульси від світлових датчиків надходять у модуль, де вони перетворюються на диференціальні сигнали RS-485 і виводяться на роз'єм у верхній середині зображення. Крім того, є модулі управління RS-485, які надходять у модуль. Усі сигнали RS-485 підключаються до ланцюгів у шасі приблизно на 10 метрів. Важливим моментом є те, що всі схеми в модулі працюють від того самого джерела живлення + 5 В.


Ось крупний план мікроконтролера та лінійних драйверів та приймачів RS-485, які є головними у проблемі. Чорний модульний роз'єм - це асинхронний послідовний інтерфейс, який додає ще два сигнали вводу-виводу RS-485.

Модулі пройшли широке тестування на стенді. Немає проблем! Вони пройшли місяці системного тестування в лабораторії. Ідеально! Великою подією стало перше випробування в телескопі. Не вдалося! При вимкненні та ввімкненні живлення зв’язок було втрачено приблизно до половини модулів. Я підключив налагоджувач і виявив, що мікроконтролер працює і виконує код, але були пошкоджені змінні, і послідовний інтерфейс не працював. Дуже дивно.

По-перше, я хочу сказати, що налагодження серед ночі на висоті 4189 метрів з температурою повітря 40 ° F (4 ° C) не є цікавим. Однак давайте рухатись далі. Ось схема, що показує проблему.

Праворуч знаходиться модуль з лінійними приймачами RS-485, підключеними до мікроконтролера та джерелом живлення + 5 В. На лівій стороні є лінійні драйвери на іншому кінці кабелю, які завжди ввімкнені. Насправді є драйвери та приймачі, які рухаються в обидві сторони, але я спрощую. Коли живлення модуля (VCC) було вимкнено, віддалені лінійні драйвери та приймачі все ще були увімкненими (VDD). Сигнали діяли як джерела живлення і знаходили шлях через пристрої інтерфейсу модуля і безпосередньо до джерела живлення + 5 В або через схему захисту від електростатичних розрядів на штифтах мікроконтролера. Вистачало потужності, щоб уникнути повного вимкнення мікроконтролера, і пристрій знаходився в небезпечній зоні.

Коли живлення модуля ввімкнулось, мікроконтролер не запускався із звичайною послідовністю скидання живлення. Він почав працювати, але з проблемами. Чому це не виявилось під час попередніх тестів? Пам’ятаєте пластини з водяним охолодженням? Охолоджуюча рідина у телескопі була трохи холоднішою, ніж охолоджуюча рідина в лабораторії. Моя теорія полягає в тому, що нижчої температури було достатньо, щоб розкрити проблему в деяких модулях.

Виправити це було просто. Я додав заяву в код, щоб увімкнути BOR, і проблема була вирішена. До речі, мені потрібно було набагато більше часу, щоб написати звіт і переконати керівника проекту, що все в порядку, ніж потрібно, щоб вирішити проблему.

Помилкове відключення

Ось схема, що показує загальну проблему.

При відключенні джерела живлення напруга не падає до кінця. Натомість інші джерела живлення утримують напругу живлення в небезпечній зоні. Одним із описів цієї напруги є “False Power”. Немає BOR для виявлення цього стану та спричинення скидання. Пристрій може не пройти звичайну послідовність включення при повторному ввімкненні живлення, оскільки схема скидання живлення може не спрацьовувати. Подальша робота невизначена, оскільки джерело живлення знизилося до мінімуму і скидання не відбувається.

У моєму випадку мікроконтролером був Microchip PIC16F877-20I/L. Ця частина є промисловою версією з діапазоном робочих температур від -40 ° C до + 85 ° C. При тактовій частоті 16 МГц діапазон живлення становить від + 4,0 В до + 5,5 В. Робоча напруга всередині модуля (V1) становила тверду породу + 5 В. Напруга помилкової потужності на мікроконтролері (V2) становила близько + 1,5 В при роботі в телескоп. Я не вимірював його в лабораторії, оскільки проблем не було, і я не знав, чи перевірити це. Крім того, я ніколи не мав можливості перевірити це в лабораторних умовах, оскільки система ніколи не спускалася з телескопа.

Є ще дві відповідні специфікації. “Напруга утримання даних в ОЗП” (\ [V_ \]) становить + 1,5 В, „типово“. «Пускова напруга VDD» (\ [V_ \]) для забезпечення внутрішнього скидання живлення становить 0 В, «типово». Складання всього цього разом говорить мені, що пристрій знаходився в небезпечній зоні. Не можна було очікувати скидання живлення, оскільки напруга була значно вище \ [V_ \]. Крім того, ми не очікували, що False Power збереже пристрій живим, оскільки False Power знаходився на напрузі збереження оперативної пам'яті (\ [V_ \]). Хто знає, що робила решта пристрою?

Чому увімкнення BOR вирішило проблему? Специфікація тригера Brown Out Reset (\ [V_ \]) - це діапазон від + 3,7 В до + 4,35 В, типовий для + 4,0 В. Рівень помилкової потужності значно нижче напруги спрацьовування для BOR. Проблема вирішена. Однак досі існує таємниця, чому мікроконтролери працювали в лабораторії і працювали нормально з багатьма-багатьма циклами живлення.

Висновок

Я знайшов опис цієї ситуації в кінці примітки про додаток Microchip (AN607), яка називає це "помилковим відключенням". Я ще ніде не знайшов цього задокументованого.

Помилкова сила може походити з таких джерел, як:

  • Зовнішні сигнали (мій випадок)
  • Кілька джерел живлення в ланцюзі
  • Конденсаторам потрібен час для повного розряду

Здається, достатньо помилкове джерело живлення, подане безпосередньо на штифт GPIO, і потрапляння в пристрій через схему захисту від електростатичних розрядів може спричинити проблеми, навіть коли BOR увімкнено. Крім того, для конструкцій з дуже низьким енергоспоживанням є причина взагалі не використовувати BOR, оскільки він споживає значну кількість енергії порівняно з режимами глибокого сну деяких пристроїв. Я прийшов до висновку, що BOR та його наступник, LVD, лише ускладнюються, а False Power дає дизайнерам ще одне, що слід врахувати в цій складній частині їхніх конструкцій.