Для чего требуется программатор
Для того, чтобы программировать микроконтроллеры, требуется специальное устройство, которое называется программатор.
Точности ради следует заметить, что программатор на самом деле программирует не микроконтроллер, а память микроконтроллера. Микроконтроллеры серии 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>