Зміст

Программирование микроконтроллеров

Программатор

AVR910

Программатор от PROTTOSS

Работа с программатором от Prottoss в Linux

Альтернативные прошивки для AVR910 by PROTTOSS, AVR-Doper, USBasp

USBasp

http://www.fischl.de/usbasp/

PonyProg

PonyProg

Arduino

Arduino – это очень популярная платформа для разработки устройств на базе микроконтроллеров AVR (в разных моделях встречаются микроконтроллеры ATMega328P, ATmega32U4, ATtiny85 и другие).

Программное обеспечение

Типичный набор инструментов для разработки программ на языке C для микроконтроллеров семейства AVR включает следующее:

В операционной системе Debian GNU/Linux всё это есть в официальных репозиториях, поэтому установка стандартна:

sudo apt-get install gcc-avr avr-libc avrdude

Последовательность действий

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

1. Написать программу на языке 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-биты1) устанавливают режим работы микроконтроллера, поэтому их можно записать при первом программировании, а затем изменять только основную программу.

Ссылки

Using the USBtinyISP programmer with AVRDUDE

AVR Tutorial: Choosing a programmer

AVR Tutorial: Starting out with avrdude

Using AVR microcontrollers: Minimalist target boards

1)
Существуют удобные калькуляторы FUSE-битов для разных микроконтроллеров – пример