====== Программирование микроконтроллеров ====== ===== Программатор ===== ==== AVR910 ==== [[http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm| Программатор от PROTTOSS]] [[http://avr.ru/tools/linux/prottoss | Работа с программатором от Prottoss в Linux]] [[http://electronix.ru/forum/index.php?s=7a78d36a043e334fc8708f2e38b8e081&showtopic=74181&view=findpost&p=732924 | Альтернативные прошивки для AVR910 by PROTTOSS, AVR-Doper, USBasp]] ==== USBasp ==== http://www.fischl.de/usbasp/ ==== PonyProg ==== [[ponyprog| PonyProg]] ==== Arduino ==== [[arduino|Arduino]] -- это очень популярная платформа для разработки устройств на базе микроконтроллеров AVR (в разных моделях встречаются микроконтроллеры ATMega328P, ATmega32U4, ATtiny85 и другие). ===== Программное обеспечение ===== Типичный набор инструментов для разработки программ на языке C для микроконтроллеров семейства AVR включает следующее: * Компилятор avr-gcc * Библиотеку C для AVR -- avr-libc * Программатор avrdude В операционной системе Debian GNU/Linux всё это есть в официальных репозиториях, поэтому установка стандартна: sudo apt-get install gcc-avr avr-libc avrdude ===== Последовательность действий ===== Для того, чтобы загрузить собственную программу в микроконтроллер, необходимо: **1.** [[avr-examples|Написать программу]] на языке C **2.** Скомпилировать её командой avr-gcc -g -Os -mmcu=atmega16 program.c -o program.bin Здесь в параметре ''-mmcu'' указывается модель микроконтроллера. Список допустимых значений этого параметра можно узнать, выполнив ''avr-gcc --target-help'' **3.** Сконвертировать в HEX-файл, подходящий для программатора: avr-objcopy -j .text -j .data -O ihex program.bin programk.hex **4.** Записать в микроконтроллер: avrdude -c avr910 -P /dev/ttyACM0 -p m16 -U flash:w:program.hex:i -U lfuse:w:0xee:m -U hfuse:w:0xd9:m Здесь параметры обозначают следующее: ''-c avr910'' -- модель программатора ''-P /dev/ttyACM0'' -- последовательный порт, через который подключён программатор ''-p m16'' -- модель микроконтроллера ATMega16 Эта команда записывает в микроконтроллер саму программу в HEX-формате (''program.hex'') и т.н. FUSE-биты, состоящие из младшего байта (''lfuse'') и старшего байта (''hfuse''). FUSE-биты((Существуют удобные калькуляторы FUSE-битов для разных микроконтроллеров -- [[http://www.engbedded.com/fusecalc/ | пример]])) устанавливают режим работы микроконтроллера, поэтому их можно записать при первом программировании, а затем изменять только основную программу. ====== Ссылки ====== [[https://learn.adafruit.com/usbtinyisp/avrdude | Using the USBtinyISP programmer with AVRDUDE]] [[http://ladyada.net/learn/avr/programmers.html | AVR Tutorial: Choosing a programmer]] [[http://ladyada.net/learn/avr/avrdude.html | AVR Tutorial: Starting out with avrdude]] [[http://www.evilmadscientist.com/2007/using-avr-microcontrollers-minimalist-target-boards/ | Using AVR microcontrollers: Minimalist target boards]]