УДК 004.451:004.31-022.53
В. С. Гассельберг, А. В. Синельщиков
ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ В УСТРОЙСТВАХ С ПОВЫШЕННОЙ НАДЕЖНОСТЬЮ
Современные микроконтроллеры (МК) предоставляют разработчику широкие возможности для реализации его идей. Это развитая периферия, встроенные механизмы защиты от сбоев, объемы памяти программ. Разработчики приложений для МК давно отказались от низкоуровневого программирования на языке Ассемблер и используют среды программирования на языках С, Паскаль и т. д. Фирмы, производящие МК, сами способствуют этому, выпуская бесплатные среды программирования и отладки, заявляют об оптимизации архитектуры МК под какой-либо высокоуровневый язык программирования. Для еще большего удобства работы с периферией разработаны различные операционные системы реального времени, в частности RTOS (Real-Time Operating System), иногда называемые многозадачным ядром реального времени. В такой ситуации для обеспечения безотказной работы МК производители ввели в их архитектуру два устройства: детектор понижения питания BOD (Brown Out Detector), именуемый также супервизором питания, и сторожевой таймер WT (Watchdog Timer), предотвращающий зависание процессора.
TW1 USART SPI
Muhipiar FVnk EPROM
А па log Comparator CPU CORE SRAM
I ! Сопуиг+вг : Brown Out Deleter ftngiitvr File I/O pint
Analog ЙЛг*п« AVR Pull-Upi On DomoflH
Kiut Circuitry Progra mmoble Waichdos High Cufrtn* CXtpU* Calibrate) Otdlkrtw
On-Chip P*bu<j InSyifam Programming
JTAG Boundary Scan LCD InHrfdM
Рис. 1. Архитектура микроконтроллера семейства ЛУЯ
В большинстве случаев для устройств, работающих непродолжительное время (СВЧ-печи, стиральные машины) или имеющих простой доступ для перезапуска (сотовые телефоны), встроенных механизмов защиты достаточно. Но наблюдения за автомобильными блоками управления показали две основные причины выхода из строя устройств на МК.
Первая, схемотехническая - сверхдлительное падение напряжения питания (рис. 2).
Ситуация достаточно редкая, но возможная в случае, если автомобиль длительное время (2-3 месяца) не эксплуатировался и его аккумулятор, вследствие саморазряда или в силу других причин, разрядился до уровня ниже уровня срабатывания BOD. Именно сверхдлительное падение питания приводит к тому, что встроенный BOD, который, по сути, является компаратором, не срабатывает или срабатывает слишком поздно, когда ядро МК уже не реагирует на сигнал RESET и перезапуск возможен только при полном отключении питания. Такая ситуация приводит к различным последствиям. В основном это потеря данных в EPROM, поскольку ядро при пониженном питании хаотично обращается ко всей периферии и может «затереть» память. Нередки случаи, когда ядро хаотично включает порты ввода-вывода. Например, система управления доступом автомобиля WV Touareg, имеющая в своем составе импульсный источник питания внешних антенн, сожгла силовые транзисторы этого источника, включив их одновременно. При применении внешних супервизоров питания таких проблем не наблюдается. Возможно, заявление производителей о том, что супервизор питания, входящий в состав МК, независим от ядра, лишь условность. Учитывая низкую стоимость, малые габариты и дополнительный надежный формирователь сигнала RESET, при проектировании ответственных устройств необходимо применять внешние супервизоры питания. На рис. 3 представлена типовая схема включения супервизоров питания.
Рис. 3. Схема включения супервизора питания
Вторая причина - программная. Применение операционных систем реального времени позволяет программисту меньше задумываться о механизмах прерываний, однако большинство сбоев наступает именно при их отработке. Поскольку время ожидания прерывания не нормировано, разработчики МК ввели возможность включения и отключения WT для обеспечения работы МК во время отработки прерывания. Поэтому, если зависание МК наступает во время выполнения подпрограммы прерывания, то МК останется в зависшем состоянии до тех пор, пока не появится внешний сигнал RESET или не отключится питание.
Среда программирования предоставляет ряд библиотечных функций, которые упрощают написание программ. Например, функция задержки Delay X, где X - время в микросекундах, по сути, является подпрограммой из нескольких сотен строк кода [1].
При этом код, выполненный по рекомендациям производителя, будет выглядеть корректно (рис. 4).
Enable WT WT Reset код код
WT Reset код
Delay X
код
WT Reset
Рис. 4. Участок кода с расставленными сбросами WT
Но поскольку сама функция Delay X состоит из объемной части кода, то при ее исполнении или при выходе из этой функции по прерыванию может произойти перезапуск. Зачастую программисты перед такими функциями ставят Disable WT, предполагая, что вероятность зависания в одной строчке минимальна.
В условиях ограниченного доступа к устройству это неприемлемо. Для исключения таких ситуаций существуют два пути. Первый рекомендован разработчиками - делать обработчики прерываний компактней, состоящими из нескольких строк, и не использовать функции из сторонних библиотек внутри обработчика прерывания. Логика тут проста - чем меньше подпрограмма, тем меньше вероятность зависания. Если использование библиотечных функций необходимо, ни в коем случае не выключать WT, а расставить его сбросы внутри них. Даже при выполнении всех требований были случаи зависания МК по циклу, внутри которого окажется сброс WT. Тогда таймер не сможет перезапустить МК. Второй способ - схемотехнический, для устройств с повышенными требованиями к надежности. По сути, это аппаратный WT. Для реализации этого способа необходимо во время выполнения программы периодически включать и выключать какой-либо выход. Выход соединить с супервизором со встроенным WT (как представлено на рис. 5).
Vdd
Супервизор/ детектор напряжения RST Микроконтроллер, процессоры DSP, ASIC, PGA и/или Digital State Machine
WDI
Я*
<WD <WD
>WD
Рис. З. Использование супервизора в качестве сторожевого таймера
Периодически на выходе будет появляться сигнал сброса WDI. Если по каким-либо причинам сигнал не появится на время большее tWD, то МК будет перезапущен по входу RESET.
Возможно, этих мероприятий будет недостаточно и для особо ответственных устройств потребуется ввести еще один MK, связанный с основным, например, по UART (синхронноасинхронный приемопередатчик). Тогда основной во время работы главного цикла программы будет пересылать сообщение о своем состоянии, а вспомогательный, принимая это сообщение, будет оценивать его работоспособность. В этом случае важно, чтобы вспомогательный сохранял работоспособность при пониженном напряжении питания. Например, связка ATmega128 (З В) и ATiny 13 (3 В).
Существует также способ перезагрузки МК внешним генератором, исполненным на логических интегральных схемах, независимо от состояния один раз в несколько минут. Однако такой способ не подходит в случаях, если потери данных в период перезапуска неприемлемы, например в блоках управления двигателем автомобиля.
Немаловажную роль в надежности работы устройств играют качество питания МК и стабильность тактового генератора.
В целях снижения энергопотребления все чаще стали применяться импульсные источники питания, которые, при всех своих положительных качествах, имеют один труднопреодолимый недостаток - появление высокочастотных импульсных помех на выходе. Эти помехи в первую очередь влияют на качество тактирования, на работу схем управления МК, на схему формирования сброса. Соответственно, МК реагирует при таком питании по-разному. В некоторых случаях МК останавливается, что является признаком остановки тактового генератора, в некоторых случаях перезапускается - воздействие на схему сброса, в некоторых перестает выполнять
ряд функций, что в конечном итоге приводит к перезапуску МК. Если уровень помех не приводит к остановке, то могут быть другие проявления. Так, при разработке устройства мониторинга подвижных объектов на базе Atmega128 была отмечена нестабильная работа UART, выражающаяся в сбоях при передаче. При применении линейного источника питания сбои исчезли. В конечном итоге была применена схема питания, состоящая из последовательно включенных импульсного понижающего преобразователя напряжения с 12 до 4,2 В, после чего напряжение 4,2 В понижалось до 3,3 В линейным стабилизатором.
В том же устройстве был отмечен положительный эффект при применении кварцевых генераторов вместо кварцевых резонаторов. Существенно снизились зависания МК, улучшилось качество передачи по UART. Однако стоимость генератора сопоставима со стоимостью МК, что сказывается на цене готового изделия, поэтому генераторы применяются в наиболее ответственных устройствах. Использование внешних и встроенных керамических резонаторов крайне нежелательно ввиду зависимости частоты от температуры, от напряжения питания и других внешних факторов. При использовании в устройстве нескольких модулей, обменивающихся данными по UART, отмечена почти полная его неработоспособность при тактировании от встроенного резонатора. На качество передачи по UART очень влияет выбор частоты работы процессора. Если для устройства важно качество передачи по UART, то необходимо использовать резонаторы с дробной (UARTовской) частотой. Например, резонатор на частоту 3,6864 МГц дает все возможные скорости UART, а близкий к нему 4 МГ ц - только некоторые из ряда частот, например на скорости 4 800 и 9 600 бит/с ошибка составляет около 1 %. На других скоростях ошибка вообще неприемлема.
Внешние электромагнитные помехи (ЭМП) приводят к таким же проявлениям, как и помехи от источников питания, однако избавиться от них намного сложнее. Связано это с тем, что такого рода помеха может проникать в МК как по цепям питания, по цепям портов ввода-вывода, так и по «воздуху». В первом случае применяют фильтрацию цепей питания и помехоподавляющие керамические конденсаторы на портах, во втором случае применяется экранировка [2]. В наиболее ответственных приборах используется полная экранировка устройств. Так, например, блоки управления двигателем автомобиля выпускаются в металлических корпусах, если применяется пластмассовый корпус, микропроцессоры помещаются в экран на печатной плате. Существует ряд процессоров для работы в условиях сильных ЭМП. Для обеспечения их работоспособности разработчики организовали раздельное питание ядра и портов ввода/вывода. Например, многие 32-разрядные и 8-разрядные микроконтроллеры КЕС имеют раздельные шины питания для внутренних периферийных устройств, процессорного ядра и цепей портов ввода/вывода. На рис. 6 схематично показано такое разделение.
Рис. 6. Структурная схема питания микроконтроллеров фирмы КБС
Такое же разделение имеют некоторые МК Analog Devices, например ADUC7026BSTZ62, со структурой питания, аналогичной V850ES/Hx2 от NEC.
Напротив, в МК Atmel, которые анонсируются как предназначенные для автомобильного применения, таких как AT90CAN32/64/128, ATmega164P/324P/644P и ATmega32M1/64M1/32C1/64C1, разделение шин питания портов ввода/вывода и шин питания ядра не предусмотрено. В результате возрастает возможность отказа из-за помех, наведенных по цепям ввода/вывода в ответственных применениях.
Распространенный МК MSP430F148 также не имеет разделения шин питания ядра и портов ввода/вывода. Можно также вспомнить еще одного очень популярного производителя микросхем -компанию Microchip. С МК данного производителя мы не работали, однако, если посмотреть на них с точки зрения разделения шин питания, то в определенном смысле концепция развязки портов ввода/вывода и периферийных устройств реализована в семействе PIC24FJ64GA/128GA/256GA. На рис. 7 видно, что цепи питания ядра VDDCORE и портов ввода/вывода VDD разделены. Однако общий провод VSS остался гальванически не развязанным для этих двух цепей питания. По предварительным оценкам, помехозащищенность этих МК будет ниже, чем у ADUC7026 от Analog Devices или V850 от NEC.
2,5 В 3,3 В ______________________
PIC24FJ64GA
^DD
DISVREG
^ddcore/^cap
vss
Рис. 7. Цепи питания МК PIC24FJ64GA фирмы Microchip
При работе с устройством сбора телеметрической информации обозначилась также проблема «паразитного питания» сопряженных устройств от МК через порты ввода вывода и через UART. В нашем случае это ATmega 128 и модуль GPRS SIM-300DZ от Simcom. Проявлялась эта неисправность по-разному. В основном не включался модуль SIM-300. Несколько раз стирался скрипт производителя. Выяснилось, что проблема была в «запитке» отключенного SIM-300 через порты управления и через UART. Судя по отзывам специалистов, такие же модули ранних лет выпуска работали безупречно. При запросах представителям компании Simcom выяснилось, что в ранних моделях применялась энергонезависимая память другого типа. В поздних версиях применили память, работающую при более низких напряжениях питания. Именно это приводило к тому, что выключенный SIM-300 «запитывался» от портов МК и «затирал» свою память. Для обеспечения бесперебойной работы пришлось применить на портах буферные микросхемы с логикой «И», один из входов которой подключался к специально отведенному для этого выводу МК -«Готовность SIM» [3]. Несмотря на усложнение схемы и программной части МК, учитывая стоимость в 5 раз ниже по сравнению с модулями с интегрированными буферами с защитой от паразитного включения, такое схемотехническое решение оправдано.
Таким образом, для обеспечения безотказной работы устройств необходимо определиться с внешними факторами, влияющими на работу устройства, выбрать соответствующие способы защиты от сбоев, выполнять рекомендации производителя МК при написании управляющей программы. При разработке схемотехники разрабатываемого устройства необходимо также придерживаться рекомендаций производителей в части электромагнитной совместимости и проектирования печатной платы.
СПИСОК ЛИТЕРАТУРЫ
1. Программирование на языке С для AVR и PIC микроконтроллеров / сост. Ю. А. Шпак. - Киев: МК-Пресс, 2006. - 402 с.
X
2. Atmel Application Note AVR040: EMC Design Considerations / http://www.atmel.com/dyn/resources /prod_documents/doc 1619.pdf.
3. Atmel Application Note AVR042: AVR Hardware Design Considerations.
http://www.atmel.com/dyn/ resources/prod_documents/doc2521.pdf.
Статья поступила в редакцию 14.01.2011
THE APPLICATION OF MICROCONTROLLERS IN THE DEVICES OF ADVANCED RELIABILITY
V. S. Gasselberg, A. V. Sinelshchikov
The reasons of failure of microcontroller devices are expounded. The ways of providing the continuity of devices operation by entering into the scheme of the external watchdog timer and the restart of microcontrollers in the event of malfunction are proposed. The programming mistakes resulting in microcontroller deadlocks are pointed out.
Key words: power drop detector, power supervisor, watchdog timer, microcontroller, real-time operating system.