Для работы с микроконтроллером ATmega8 или с Arduino устройством на ATmega8 в среде разработки Arduino программу Arduino необходимо настроить. Нужно добавить в файл hardware/arduino/boards.txt параметры поддерживаемых устройств на микроконтроллере ATmega8.

Возможно, будет необходимо добавить файлы bootloader (загрузчик) в папку hardware/arduino/bootloaders/optiboot.

Микроконтроллер ATmega8 может работать на частоте 0-16МГц при напряжении ~5В, а ATmega8L на частоте 0-8МГц и ATmega8A на частоте 0-16МГц в широких пределах напряжения питания. Это по паспорту, а практически, при напряжении 5В, все микроконтроллеры серии ATmega8 могут работать на частоте 16МГц с внешним кварцевым резонатором и на частотах 8, 4, 2, 1МГц с внутренним генератором.

Существует вариант платы Arduino на микроконтроллере ATmega8, это Arduino NG. Среда разработки Arduino (Arduino IDE) готова к работе с микроконтроллером ATmega8, но только с одним устройством - это плата Arduino NG с микроконтроллером ATmega8 на частоте 16МГц с внешним кварцевым резонатором. Так обстоят дела в Arduino v. 1.0.6. Кроме того, для Arduino NG предлагается не самый оптимальный и главное не удобный bootloader.

Для того, чтобы была возможность программировать микроконтроллеры ATmega8 работающие на разных частотах с кварцевым резонатором и без него необходимо внести изменения в файл hardware/arduino/boards.txt Например, можно добавить в него следующие секции:

# http://optiboot.googlecode.com
# http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

##############################################################

atmega8o.name=ATmega8 (optiboot 16MHz ext)
atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.low_fuses=0xbf
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot50
atmega8o.bootloader.file=optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8
atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino:arduino
atmega8o.build.variant=arduino:standard

##############################################################

a8_8MHz.name=ATmega8 (optiboot 8 MHz int)
a8_8MHz.upload.protocol=arduino
a8_8MHz.upload.maximum_size=7680
a8_8MHz.upload.speed=115200
a8_8MHz.bootloader.low_fuses=0xa4
a8_8MHz.bootloader.high_fuses=0xdc
a8_8MHz.bootloader.path=optiboot
a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex
a8_8MHz.build.mcu=atmega8
a8_8MHz.build.f_cpu=8000000L
a8_8MHz.build.core=arduino
a8_8MHz.build.variant=standard

##############################################################

a8_1MHz.name=ATmega8 (optiboot 1 MHz int) 
a8_1MHz.upload.protocol=arduino 
a8_1MHz.upload.maximum_size=7680 
a8_1MHz.upload.speed=9600 
a8_1MHz.bootloader.low_fuses=0xa1 
a8_1MHz.bootloader.high_fuses=0xdc 
a8_1MHz.bootloader.path=optiboot 
a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex 
a8_1MHz.build.mcu=atmega8
a8_1MHz.build.f_cpu=1000000L 
a8_1MHz.build.core=arduino 
a8_1MHz.build.variant=standard

##############################################################

a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int)
a8noboot_8MHz.upload.maximum_size=8192
a8noboot_8MHz.bootloader.low_fuses=0xa4
a8noboot_8MHz.bootloader.high_fuses=0xdc
a8noboot_8MHz.build.mcu=atmega8
a8noboot_8MHz.build.f_cpu=8000000L
a8noboot_8MHz.build.core=arduino
a8noboot_8MHz.build.variant=standard

##############################################################

Теперь в программе Arduino в меню Сервис / Плата появятся следующие устройства:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1 MHz int)
  • ATmega8 (no boot 8 MHz int)

Первые три устройства на микроконтроллере ATmega8 содержат bootloader, являются Arduino совместимыми и в них непосредственно можно загружать скетчи (программы) из среды разработки Arduino. Четвертое устройство не содержит bootloader, это может быть отдельная микросхема ATmega8. В ATmega8 (no boot 8 MHz int) скетчи из программы Arduino можно загружать через программатор, в том числе и через программатор на базе платы Arduino.

ATmega8 (optiboot 16MHz ext) работает с внешним кварцевым резонатором, остальные устройства с внутренним генератором.

Параметры в файле hardware/arduino/boards.txt определяют fuse биты, путь к файлу загрузчика (bootloader), тип микроконтроллера и его частоту. Fuse биты записываются в микроконтроллер (с загрузчиком или без него) когда вы выбираете пункт меню Сервис / Записать загрузчик. Fuse биты определяют на какой частоте будет работать Ваш микроконтроллер и другие важные параметры, в том числе и такие, от которых зависит его работоспособность, перепрограммируемость и т.д.

Fuse биты НЕ записываются в микроконтроллер когда вы заливаете скетчи. Если в меню Сервис / Плата будет выбрано не подходящая платформа то:

  • При загрузке скетчей
    • Не подходящая частота - приводит к изменению скорости работы программ
    • Не подходящий процессор - приводит к неработоспособности программ
  • При записи загрузчика
    • Не подходящая частота - может привести к неработоспособности микроконтроллера в данной системе
    • Не подходящий процессор (fuses) - к блокировке микроконтроллера

Внимание, Ваши не корректные действия могут вывести из строя микроконтроллер для восстановления которого потребуется программатор.

Bootloader для микроконтроллера ATmega8.

Оптимальный bootloader для микроконтроллеров ATmega 8 можно скачать с сайта проекта Optiboot.

Optiboot bootloaders для различных рабочих частот микроконтроллера можно скачать с сайта Конструктор загрузчика.

Bootloaders Optiboot - это не зависимая свободная разработка загрузчиков, признанная разработчиками Arduino. Optiboot предназначен для использования в разных вариантах Arduino и для множества микроконтроллеров Atmel. Основные отличия загрузчика Optiboot от конкурентов - это до четырех раз уменьшенный размер  кода, сокращение бесполезных задержек в работе микроконтроллера, высокая скорость загрузки скетчей с компьютера.

Размещайте файлы bootloaders в программе Arduino в соответствии с тем, что написано в файле hardware/arduino/boards.txt. Например, для устройства ATmega8 (optiboot 16MHz ext) файл загрузчика необходимо поместить в папку hardware/arduino/bootloaders/optiboot50 и имя файла должно быть optiboot_atmega8.hex