Программаторы
Для того чтобы загрузить программу во flash-память, служат специальные программаторы, которые делятся на последовательные и параллельные (существуют еще стандартизированный согласно IEEE Std 1149.1-1990 интерфейс JTAG для отладки и тестирования микроконтроллерных устройств. С его помощью, например, выполняется всем известная «перешивка» готовых устройств. Но мы не будем здесь на этом останавливаться, т. к. в любительских конструкциях, да и во многих профессиональных, он никогда не употребляется).
Последовательные программаторы еще называют ISP (In-System Programmer, что переводится как «внутрисистемный программатор»), потому что они обычно не предполагают специального устройства для подсоединения и питания программируемой микросхемы, а заканчиваются обычным плоским кабелем с двухрядным штырьковым разъемом типа IDC или PLD (таким же, какие служат для подсоединения периферии к материнским платам ПК), который подсоединяется к специально предусмотренной штыревой части, располагаемой прямо на плате вашего устройства (подробнее см. главу 14). Питание на программатор при этом поступает от самой схемы.
Такой способ программирования очень удобен для отладки, т. к. МК находится в «родном» окружении и сразу после программирования автоматически начинает работать. Причем внешние элементы (с некоторыми оговорками) процессу программирования обычно не мешают. Далее я расскажу, как с помощью этого способа программирования превратить любую схему в отладочный модуль, что позволяет избежать необходимости приобретения дорогих универсальных модулей и обойтись без изучения фирменной среды программирования AVR Studio. Недостатки способа — дополнительная площадь, которая будет занята «лишними» элементами на плате, а также некоторое снижение помехоустойчивости (о том, какие дополнительные меры следует принять, я обязательно расскажу, когда мы будем рассматривать конкретные схемы). Зато вы всегда без лишних сложностей сможете поправить ошибку в программе и дополнить ее функциональность хоть через месяц, хоть через год» что особенно важно для любительских конструкций, которые, как правило, выпускаются в одном-двух экземплярах.
Подробности
Последовательное программирование AVR есть, по сути, использование стандартного последовательного интерфейса SPI в специфических целях, причем следует учитывать, что в некоторых моделях (ATmega64 и АТтеда128) выводы собственно SPI с выводами программирования не совпадают. Процесс последовательного программирования начинается с того, что на вывод SCK подается напряжение уровня «земли», после этого на Reset поступает короткий положительный импульс, и затем последний также оставляют в состоянии низкого уровня не менее, чем на 20 мс (можно и просто предварительно подключить эти выводы к низкому уровню, а затем включить питание контроллера). При этом микросхема переходит в режим ожидания команд программирования. Отсюда понятно, почему снижается помехоустойчивость: такое сочетание уровней вполне может возникнуть в процессе эксплуатации из-за наводок на выводы разъема программирования. У автора этих строк в контроллере, расположенном в цехе со множеством работающих механизмов, при срабатывании мощного пускателя в нескольких метрах от устройства стиралась память программ! Правда, исправить ситуацию оказалось довольно просто установкой дополнительных «подтягивающих» резисторов.
Последовательное программирование поддерживают не все контроллеры AVR, из семейства Tuny так можно программировать только ATtuny12 и ATtuny15. В отличие от последовательного, параллельный способ программирования применяется для кристалла вне схемы. Программаторы такого рода, как правило, в той или иной степени универсальны и подходят для множества различных программируемых чипов, начиная от микросхем ПЗУ (в том числе и компьютерной BIOS) и заканчивая большинством МК.
Например, показанный на рис. 13.1 популярный AutoProg поддерживает около 4000 типов микросхем. Такие программаторы, естественно, относительно дороги (не самый дорогой в своем классе AutoProg стоит почти 9000 руб.), что и понятно — представьте, сколько труда вложено в программное обеспечение с поддержкой такого количества чипов. Экономически целесообразны они для тех, кто много работает с различными семействами микросхем, а также при изготовлении серийной продукции с отлаженной программой, в которой разъемы ISP-систем будут только мешать. Для отладки универсальные программаторы неудобны, т. к. приходится часто вытаскивать и вставлять микросхему в панельку с риском ее повредить, а для некоторых типов корпусов это может быть вообще исключено, если нет соответствующего переходника. Если вы работаете только с одним типом микросхем, но хотите тиражировать отлаженное изделие без лишних разъемов на плате, то вам ничего не стоит изготовить отдельный программатор на основе ISP-системы. Правда, «оживить» чипы AVR, в которых по ошибке были неправильно запрограммированы fuse-биты, отвечающие за источник тактового сигнала (об этом см. в конце главы), можно только с помощью параллельного программатора.
Читать дальше
Конец ознакомительного отрывка
Купить книгу