Мои наблюдения за природой микроконтроллеров...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено undefined 07 ноября 2003 г. 15:42
В ответ на: А еще вопрос можно? :) Встала такая проблема - выбор между Microchip (PIC18) и Atmel (Atmega). По характеристикам больше подходит атмел, но встал вопрос о надежности. Во многих промышленных устройствах я видел именно Microchip, с чем это связано? Он надежнее? Сравнивал ли кто-нить микроконтроллеры этих фирм по этому показателю? отправлено Laser 06 ноября 2003 г. 23:06

Надо различать виды сбоев. Вот кратенькая распальцовка:
- Выжигание портов и кристалла. Сюда же - все виды КМОП защелкивания и пр. Единственный случай, когда твердо можно сказать из какого места растут руки схемотехника.
- Заводской брак кристалла. Как правило - неработающая флешь, епромина, ОЗУха. Тестировать все что можно в свободное время. Набирать статистику по кристаллам.
- Самопроизвольная смена данных в флеши и епромине. См. пункт выше.
- Сбой ядра с прекращением исполнения нужного алгоритма. Область сплошного шаманства. Ниже - курс начинающего шамана.

Во-первых разводка.
- Используйте корпуса с минимальной длиной выводов и минимальным расстоянием от подложки кристалла до ближайшего земляного полигона. Используйте кристаллы с парным расположением ног питания и земли. Старайтесь использовать кристаллы где только одна пара ног питания ядра контроллера.
- Используйте корпуса с минимальным расстоянием от подложки кристалла до ближайшего земляного полигона. Непосредственно под кристаллом дОлжно быть земляному полигону. В особо тяжелых случаях (мощные СВЧ-передатчики, мощные искры индуктивного характера в непосредственной близости) закрывайте кристалл и сверху земляным лепестком-экранчиком.
- Если у кристалла несколько ног земли / питания то все они должны быть соединены по кратчайшему пути. Земля - обязательно без переходных отверстий. В первую очередь это относится к цепям питания ядра.
- любая соседняя пара ног питания должна быть зашунтирована SMD керамикой не далее чем в 3 мм от ног.
- земля на кандюки кварца (если есть) должна идти от ближайшей земляной ноги ПИКа индивидуально и не иметь ответвлений на другие [импульсные] потребители / источники. Корпус кварца также припаивать к земле. В тяжелых случаях используйте модули кварцевых генераторов. А лучше вообще без кварца - только Internal RC.
- Земля на RC-цепочку сброса - также по кратчайшему пути от ног питания. Кандюк на сбросе обязателен независимо от наличия или отсутствия супервизора. Кстати последние обычно не ставлю, поскольку в действительно плохой шумовой обстановке часто дают ложные сбросы. Эту проблему частично решает кандюк непосредственно на питании супервизора и его кратчайшая разводка к ногам контроллера.
Многие производители заявляют встроенные супервизоры, но они, как правило, неудовлетворительно работают. Впрочем, я встречал отличные встроенные супервизоры почти у всего Майкрочипа и некоторых изделиях Атмела.

Во-вторых питание. Полностью линейные источники крайне неприятны поскольку не в состоянии хорошо подавить широкий спектр шумов первичного источника. По этой причине вся прецизионная измерительная техника промышленного назаначения или устройства работающие в тяжелой шумовой обстановке оснащаются исключительно обратноходовыми импульсными гальваноразвязанными преобразователями с фиксированной частотой преобразования.
Их преимущества:
- В отличие от линейных источников импульсники дают фиксированный спектр и характер шума (только свой собственный), под который легко подобрать фильтры.
- В импульсниках проще запасти бОльшую энергию на единицу веса/объема на случай кратковременных пропаданий первичного источника (удельная плотность энергии в электролитических конденсаторах растет с рабочим напряжением).
- Импульсники легче спроектировать для сверхширокого диапазона напряжений питания (типа 30...300В).
- Импульсники легче заставить при включении давать фронт напряжения с предсказуемой длительностью нарастания.
Недостатки:
- Какой-то спектр шумов есть всегда. В лабораторных условиях не всегда приемлемо. Неприемлемо также для устройств со специфическими требованиями к спектру шума.
- Гораздо легче выходят из строя при перенапряжениях в первичной сети.
Многие неприемлют преимущества импульсников по принципам "внутренних ощущений", и, возможно, существуют приложения где это так. Но для 99.9% низкочастотной измерительной аппаратуры (и тем более микроконтроллеров) это верно.

Основное требование контроллеров к источнику питания - время нарастания напряжения питания и величина "остаточного" напряжения питания после выключения.
Время нарастания очень критичный параметр, старайтесь принимать специальные меры для удержания этого параметра в пределах сотен миллисекунд даже для самых дубовых контроллеров. Время нарастания в секунды приведет к почти гарантированному зависанию или даже порче данных в энергонезависимой памяти. И никакие спервизоры не помогут.
Отсюда вывод: не увлекайтесь огромными электролитами по питанию.


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

В четвертых - структура программы. Здесь правила уже тяжело формулировать, они слишком индивидуальны. Вот самые простые, но не единственно верные:
- Пишите программы в стиле "одного большого цикла", где вся логика построена на переменных. Зачем? Одна точка с WDT, улететь по сбою в "неправильное" место и не вернуться гораздо труднее. Можно вставить единый контроль состояния системы и реинициализации в этот цикл.
- Как можно меньше call. Макросы, инклюды - рулез форева пока места хватает. Никаких WDT в теле call.
- Как можно реже пользовать прерывания. Если все же пришлось - обязательно вставить блокировку сброса WDT если долго нет прерываний, вставить реинициализацию всего что можно в основной цикл и т.п.
- Корректный перезапуск. Аккуратно контролировать источник перезапуска, делать выводы по возможности. Будьте здесь осторожны - если ошибиться в логике, легко получить обратный эффект - система не восстановится даже по сбросу...
- По возможности мониторить и сохранять лог аварийных событий для анализа - позволит выявить слабые места программы.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru