Микроконтроллеры AVR можно программировать через ICSP (ISP) интерфейс. Делать это не сложнее, чем пользоваться платой Arduino с загрузчиком (bootloader) в микроконтроллере. С технологией ICSP Вам также будет доступна среда программирования Arduino, а кроме того, и много других возможностей.

Возьмём AVR микроконтроллер ATtiny13 или ATtiny85 и попробуем программировать его используя технологию ICSP.

Для программирования микроконтроллера по технологии  ICSP нужен программатор. Чаще всего, подойдёт самый дешёвый USBASP программатор. Казалось бы, программатор лишнее устройство, ведь для платы Arduino он не нужен. Но на плате Arduino уже припаяна микросхема, выполняющая ту же роль что и программатор USBASP для отдельно взятого микроконтроллера. И стоимость платы Arduino примерно равна стоимости микроконтроллера с программатором USBASP. Для знакомства с программированием микроконтроллеров проще приобрести плату Arduino, а работать с микроконтроллерами удобнее с программатором.

Рис. 1. Программатор USBASP.

Рис. 2. Интерфейс программатора для внутрисхемного программирования микроконтроллеров.

Рис. 3. Варианты интерфейсов для внутрисхемного программирования микроконтроллеров.

Рис. 4. Микроконтроллер  AVR ATtiny13.

Для программирования микроконтроллера по технологии  ICSP будем подключать к программатору следующие ножки микросхемы ATtiny13:

Pin м-к Сигнал Описание Pin ISP6PIN Pin ISP10PIN
5 MOSI Вход данных при программировании 4 1
6 MISO Выход данных при программировании 1 9
7 SCK Вход тактового сигнала при программировании 3 7
1 RESET Сброс 5 5
4 GND Общий провод 6 4, 6, 8, 10
8 VCC Питание микросхемы 2 2

Табл. 1.

Обратите внимание, что ножки микроконтроллера 5, 6, 7 задействованные в программировании микроконтроллера, после программирования могут быть задействованы как и все другие ножки микроконтроллера в ваших схемах. Если же к этим ножкам уже припаяны периферийные устройства, они не помешают перепрошивке микроконтроллера в дальнейшем.

Подключаем микроконтроллер к программатору согласно рис. 2, 3, 4 и табл. 1. Подключаем программатор в USB порт компьютера и пытаемся с помощью программы avrdude считать сигнатуру микроконтроллера:

sudo avrdude -pt13 -cusbasp
avrdude: warning at /home/dior/.avrduderc:56: part 8052 overwrites previous definition /home/dior/.avrduderc:5.

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9206 (probably t45)
avrdude: Expected signature for ATtiny13 is 1E 90 07
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Считаем сигнатуру другого микроконтроллера:

sudo avrdude -pt13 -cusbasp
avrdude: warning at /home/dior/.avrduderc:56: part 8052 overwrites previous definition /home/dior/.avrduderc:5.

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: Expected signature for ATtiny13 is 1E 90 07
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.