Вопрос, который при этом немедленно возникает: не жирно ли занимать как минимум три вывода портов (обычно это порт В контроллера) альтернативными функциями? Отвечаю: в большинстве случаев такие выводы можно использовать как обычные порты, программатору это не помешает. Единственная ситуация, в которой возникает конфликт между программатором и схемой, это если выводы MOSI, MISO и SLK используются как входные линии и подсоединены к активным выходам других микросхем, к коллектору открытого транзистора или к конденсатору большой емкости. Поэтому в схеме эти контакты лучше использовать в качестве выходных линий, а если хватает других портов — вообще оставить их только для программирования. На платах Arduino, где контакты штатного SPI-порта совпадают с портом программирования, они выведены, как обычные линии (выводы D11, D12 и D13[33]), и в случае их использования для программирования к ним тоже не рекомендуется подключать низкоомную нагрузку. Естественно, при работе схемы программатор лучше отключать вовсе, только учтите, что по окончании цикла программирования в любом случае схема заработает сразу с начала, как после включения питания.
Все эти проблемы несущественны, если работать с универсальным программатором, где используется параллельное программирование. Тогда при программировании МК приходится вставлять в специальную колодку на корпусе программатора, а в схеме, естественно, для него тогда должна быть предусмотрена установка на панельку. Преимущество универсальных программаторов в том, что можно легко переходить с одного семейства процессоров на другое, причем, независимо от типа корпуса, а также программировать любые микросхемы памяти. Не нужен также и программирующий разъем на плате и связанные с ним резисторы. Но в процессе отладки сложной программы пользоваться универсальным программатором крайне неудобно — МК все время приходится вынимать и вставлять, что сильно замедляет процесс, к тому же есть риск повредить выводы. Поэтому универсальный программатор следует рекомендовать в случаях, когда программа уже более-менее отлажена, например, при тиражировании конструкции.
СофтЕсли мы имеем какой-то программатор с прилагающимся к нему софтом, то, в сущности, нам нужна еще только одна специальная программа — ассемблер (assembler значит «сборщик»). Его можно бесплатно скачать с сайта Atmel в составе AVR Studio (папка avrassembler), файл носит название avrasm2.exe. Практически все существующие ассемблеры запускаются из командной строки (хотя могут быть и упакованы в оболочку с графическим интерфейсом). В качестве параметров для компилятора Avrasm2 указывается имя файла с исходным текстом программы и имена выходных файлов, главным из которых является файл с расширением hex. Чтобы каждый раз не вводить длинную командную строку, пишется соответствующий bat-файл.
* * *