|
Во-первых разводка.
- Если у ПИКа несколько ног земли / питания то все они должны быть соединены по кратчайшему пути. Земля - обязательно без переходных отверстий.
- Непосредственно под кристаллом дОлжно быть земляному полигону.
- любая соседняя пара ног питания должна быть зашунтирована SMD керамикой не далее чем в 3 мм от ног.
- земля на кандюки кварца (если есть) должна идти от ближайшей земляной ноги ПИКа индивидуально и не иметь ответвлений на другие [импульсные] потребители / источники. Корпус кварца также припаивать к земле. А лучше вообще без кварца - только Internal RC.
- Земля на RC-цепочку сброса - также по кратчайшему пути от ног питания ПИКа. Кандюк на сбросе обязателен независимо от наличия или отсутствия супервизора. Кстати последние обычно не ставлю, поскольку в действительно плохой шумовой обстановке часто дают ложные сбросы. Эту проблему частично решает кандюк непосредственно на питании супервизора и его кратчайшая разводка к ногам ПИКа. Впрочем, встроенный супервизор ПИка, ИМХО, просто великолепен.
Во-вторых питание. Полностью линейные источники крайне неприятны поскольку не в состоянии хорошо подавить шумы первичного источника. По этой причине вся прецизионная измерительная техника промышленного назаначения или устройства работающие в тяжелой шумовой обстановке оснащаются исключительно _ОБРАТНОХОДОВЫМИ_ импульсными преобразователями от первичной сети.
В третьих, только однократки. Никаких флешей, особенно если топологические нормы кристалла 0,7 мкм и мельче. Избегайте кристаллов с малыми топологическими нормами.
В четвертых - структура программы. Здесь правила уже тяжело формулировать, они слишком индивидуальны. Вот самые простые, но не единственно верные:
- Пишите программы в стиле "одного большого цикла", где вся логика построена на переменных. Зачем? Одна точка с WDT, улететь по сбою в "неправильное" место и не вернуться гораздо труднее. Можно вставить единый контроль состояния системы и реинициализации в этот цикл.
- Как можно меньше call. Макросы, инклюды - рулез форева пока места хватает. Никаких WDT в теле call.
- Как можно реже пользовать прерывания. Если все же пришлось - обязательно вставить блокировку сброса WDT если долго нет прерываний, вставить реинициализацию всего что можно в основной цикл и т.п.
- Корректный перезапуск. Аккуратно контролировать источник перезапуска, делать выводы по возможности. Будьте здесь осторожны - если ошибиться в логике, легко получить обратный эффект - система не восстановится даже по сбросу...
- По возможности мониторить и сохранять лог аварийных событий для анализа - позволит выявить слабые места программы.
Перечисленные методы позволили располагать газоанализаторы прямо в промышленных озонаторных установках (кто не знает - это что-то вроде шокера на несколько кВт), располагать ПИКи в 10 сантиметрах от цепей 5кВ 100кГц (там даже Альтера 7000-я сбивалась регулярно) без всяких экранировок и гальваноразвязок, делать устройства устойчивые к разряду шокера на на земляную заливку на плате и т.п.
E-mail: info@telesys.ru