Для чего требуется программатор

Для того, чтобы программировать микроконтроллеры, требуется специальное устройство, которое называется программатор.

Точности ради следует заметить, что программатор на самом деле программирует не микроконтроллер, а память микроконтроллера. Микроконтроллеры серии ATmega оснащены следующими типами памяти, которые доступны для программирования с помощью программатора:

  • Память программ (Flash - flash)
  • Память данных (EEPROM - eeprom)
  • Младший байт предохранительных бит (Low Fuse Bits - lfuse)
  • Старший байт предохранительных бит (High Fuse Bits - hfuse)
  • Расширенный байт предохранительных бит (Extended Fuse Bits - efuse), который присутствует не во всех моделях микроконтроллеров

Память ОЗУ в микроконтроллерах ATmega с помощью ICSP-программатора не программируется, для этого требуется отладчик JTAG, который в данном случае мне пока не требовался.

Программаторы бывают профессиональные, которые поддерживают целый спектр типов микросхем постоянной памяти (Flash, ROM, PROM, EEPROM и т.п.) и микроконтроллеров. Такие программаторы стоят и профессиональных денег. Гораздо дешевле, но не обязательно, стоят программаторы специализированные, которые позволяют программировать только отдельные серии типов ПЗУ или микроконтроллеров.

Кроме программаторов существуют программаторы-отладчики, например отладчики JTAG стандарта IEEE 1149. Они позволяют устанавливать в программе точки останова, выполнять программу пошагово, то есть в целом это удобная вещь, но опять же профессиональная, а потому не всегда бюджетная по стоимости. Ведь для программирования микроконтроллера стоимостью в 200-300 рублей нет смысла приобретать JTAG-отладчик стоимостью в 25-40 тысяч рублей.

Поэтому производители микроконтроллеров универсального назначения, таких как ATmega, оснащают микроконтроллеры альтернативными возможностями программирования, как например In Curcuit Serial Programming (ICSP) - цепь, которая позволяет программировать микроконтроллер через Serial Peripheral Interface (SPI) при низком уровне сигнала nRESET.

Этот метод программирования микроконтроллеров настолько удобен и прост, что запрограммировать чип можно даже с помощью трёх резисторов и пяти проводков, подключив микроконтроллер к параллельному (принтерному) порту компьютера, и умудрившись при этом этот самый порт случайно не сжечь. Современные компьютеры не всегда оснащаются параллельным портом, поэтому я порекомендовал бы использовать для этих целей например программатор UsbASP.

Сам же я в своё время внимательно прочитал, каким образом можно случайно сжечь принтерный порт, и решил, что стоит рискнуть, да так с тех пор сделать программатор никак руки не дойдут, что называется.

Автор: Андрей Шаройко <vanyamboe@gmail.com>