ATmega128 + Arduino IDE + USBasp

Отладочная плата BK-AVR128

Я уже писал о том, как устанавливать различные отладочные платы и микроконтроллеры Atmel для того, чтобы их можно было программировать, используя среду разработки Arduino IDE в статье Установка дополнительных плат в Arduino IDE. Сегодня я рассмотрю еще один частный случай программирования микроконтроллера ATmega128A, используя программатор USBasp и ардуишную среду.

 

Загрузчик для ATmega128A

Для того, чтобы записать программу в память микроконтроллера непосредственно из Arduino IDE потребуется специальная программа-загрузчик (bootloader), размещенная в специальной области памяти микроконтроллера, которая постоянно опрашивает UART.

Это немного измененная версия загрузчика с сайта www.chip45.com.

Bootloader Mega128
Bootloader Mega128
bootloader_mega128.zip
10.0 KiB
2064 Downloads
Детали

Для компиляции я использовал AVR-GCC.

$ avr-gcc -mmcu=atmega128 -Wall -Os -o boot_mega128.o boot_mega128.c
$ avr-objcopy -O ihex boot_mega128.o boot_mega128.hex

В архиве содержится исходный C-файл, объектый файл и готовый hex-файл. Для дальнейших действий понадобится только последний.

Устанавливаем фьюзы микроконтроллера и прошиваем загрузчик, используя программатор USBasp и AVRDUDE:

$ sudo avrdude -p m128 -c usbasp -P usbasp -Uefuse:w:0xff:m -Uhfuse:w:0xca:m -Ulfuse:w:0xff:m -Ulock:w:0x3F:m
$ sudo avrdude -p m128 -c usbasp -e -U flash:w:boot_mega128.hex -Ulock:w:0x0F:m

В Windows sudo писать не нужно.

Создадим папку atmega128 и перепишем в нее файл boot_mega128.hex в папке с загрузчиками среды Arduino для того, чтобы можно было прошивать bootloader прямо из Arduino IDE.

Создание папки внутри bootloaders в Arduino IDE

В MacOS X путь к папке с загрузчиками выглядит следующим образом:

.../arduino/Contents/Java/hardware/arduino/avr/bootloaders
 

Файл boards.txt

В Windows этот файл расположен в папке с Arduino:

.../hardware/arduino/avr/boards.txt

В Mac OS X:

.../arduino/Contents/Java/hardware/arduino/avr/boards.txt

В конец файла boards.txt среды Arduino добавляем следующие строчки:

###############################################################
atmega128A.name=Custom ATmega 128 Breakout Board using AVRISP

atmega128A.upload.tool=usbasp
atmega128A.upload.maximum_size=126976

atmega128A.bootloader.low_fuses=0xFF
atmega128A.bootloader.high_fuses=0xCA
atmega128A.bootloader.extended_fuses=0xFF
atmega128A.bootloader.path=atmega
atmega128A.bootloader.file=boot_mega128.hex
atmega128A.bootloader.unlock_bits=0x3F
atmega128A.bootloader.lock_bits=0x0F
atmega128A.build.mcu=atmega128
atmega128A.build.f_cpu=8000000L
atmega128A.build.core=arduino
atmega128A.build.variant=mega128

Обратите внимание на фьюзы загрузчика.  Они в точности должны совпадать с указанными при его прошивке!

Тактовая частота микроконтроллера у меня установлена равной 8 МГц.
 

Определяем пины

Для того, чтобы было удобно обращаться к тому или иному пину, необходимо указать их соответствие для нашего микроконтроллера. В папке variants создадим новую папку mega128

Создание папки внутри variants в arduino ide

В папке mega128 необходимо создать файл pins_arduino.h с описанием пинов микроконтроллера ATmega128.

pins_arduino.h для ATmega128
2.5 KiB
1683 Downloads
Детали

 

Hello, world!

Осталось проверить работоспособность. Подключаем к выводу PB4 светодиод (12 пин) и наслаждаемся его незамысловатым миганием, предварительно загрузив представленный ниже скетч в микроконтроллер, выбрав  микроконтроллер Custom ATmega 128 Breakout Board using AVRISP и программатор USBasp из среды Arduino IDE.

int ledPin=12;

void setup() {
  pinMode(ledPin, OUTPUT);
}
void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}
 
Как вы оцениваете эту публикацию? 1 звезда2 звезды3 звезды4 звезды5 звезд (40 голосов, средняя оценка: 4,93 из 5)
Загрузка...

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

3 комментария к записи “ATmega128 + Arduino IDE + USBasp”

  1. Сергей:

    Андрей, можно ли этот бутлоадер пересобрать под atmega64?

    Отличий между 64 и 128 минимум, но есть одно замечание касательно бутлоалдера

    The Boot Loader area is also changed. The following must be considered:

    • The No-Read-While-Write section starts at word address 0xF000 instead of

    0×7000.

  2. sim31:

    Есть еще такой генератор загрузчиков

    homes-smart.ru/index.php/...o/avr-zagruzchik

    сразу hex файл делает на любые рабочие частоты.

  3. А ты уверен что у тебя это заработало?

    даже вот это atmega128A.upload.tool=usbasp

    в файле boards.txt

    сбивает с толку

Оставить комментарий