MicroDuino своими руками

2015-10-1 23:49 AVR

    Загорелся однажды изучить микроконтроллеры семейства AVR (Atmega) и их программирование. Решил начать с популярного и простого решения, с макетных плат Arduino. Но покупать Arduino не хотелось из принципа. Решил собрать сам! Некоторое время выбирал, какую же версию собрать и выбрал Microduino. Супер маленький и всё что нужно есть.

    С официального сайта (www.microduino.cc) скачал фотки платок, нашел даже фотки разводки дорожек с двух сторон и схемы. Дело осталось за малым: развести платы по схемам, изготовить и начать учиться.

    Плата ядра microduino состоит из atmega328, кварцевого резонатора, фильтрующих конденсаторов, светодиодов, пары резисторов и цанговых коннекторов. Но Arduino так устроено, что прошивку нужно как-то загружать из среды разработки. Для этого понадобираться ещё одна плата из серии microduino. На дополнительной плате как раз и будет собран usb com port. Имея на руках 2 этих платки, можно будет начинать разрабатывать программы и собирать устройства на макетке.

    Схемотехника достаточно простая, единственное, что нужно это навык изготовления двух сторонних плат. У меня получилось достаточно хорошо. Но я не сторонник следовать правилам. Atmega328 у меня не было в наличии и поэтому я собрал microduino на Atmega8, причем кварцевого резонатора у меня тоже не было в нужном корпусе, поэтому на первое время я использовал microduino с внутренним резонатором. Изменять схему не пришлось, т.к. распиновка Atmega328 и Atmega8 практически одинаковая.

2015-10-022015-10-022015-10-022015-10-02

    Платы разведены в формате Sprint Layout 6.0 и скачать их можно ниже:

microduino-core.zip

microduino-usbttl.zip

    Для прошивки ядра microduino я развел платку адаптер microduino -> ICSP. Он будет нужен для прошивки загрузчика arduino в Atmega. Без загрузчика нельзя будет загружать прошивки из среды Arduino. Прошиваю с помощью программатора Willem PCB 4.5. Но можно использовать простейший программатор - LPT + 5 проводков.

    Если развести сигнал D10 соединить с ICSP Reset и отключить основной сигнал Reset, то можно будет прошивать другие Atmega используя скетч Arduino ISP.

2015-10-02

    Печатная плата также разведена в формате Sprint Layout 6.0:

microduino-ICSP.zip

    После сборки microduino настало время проверить устройство в работе, но не тут то было. Поскольку я использую не Atmega 328, и без внешнего кварцевого резонатора, нужно было искать загрузчик arduino именно для своей конфигурации microduino.

    Среда разработки Arduino устанавливается с набором прошивок загрузчиков для разных конфигураций Arduino. Нужную мне я нашел в папке

Arduino\hardware\arduino\bootloaders\atmega8\

    Нужное имя файла в этой папке:

ATmegaBOOT-prod-firmware-2009-11-07.hex

    Поскольку я использую microduino без внешнего кварцевого резонатора, то при прошивке конфигурацией фьюзов указываем это нашей Atmega8:

fuse low bits: 0xE4
fuse high bits: 0xCA

    Для прошивки всего этого дела я пользовался программатором Willem PCB 4.5 + адаптер AVR ICSP, о которых рассказывал тут.

    Дальше нужно добавить конфигурацию microduino в среду Arduino. Для этого нужно добавить в файл Arduino\hardware\arduino\boards.txt следующий код:

##############################################################
microduino_atmega8.name=Microduino ATmega8 (8 MHz internal OSC)
microduino_atmega8.upload.protocol=arduino
microduino_atmega8.upload.maximum_size=7168
microduino_atmega8.upload.speed=9600
microduino_atmega8.bootloader.low_fuses=0xc4
microduino_atmega8.bootloader.high_fuses=0xca
microduino_atmega8.bootloader.path=atmega8
microduino_atmega8.bootloader.file=ATmegaBOOT-prod-firmware-2009-11-07.hex
microduino_atmega8.bootloader.unlock_bits=0x3F
microduino_atmega8.bootloader.lock_bits=0x0F
microduino_atmega8.build.mcu=atmega8
microduino_atmega8.build.f_cpu=8000000L
microduino_atmega8.build.core=arduino
microduino_atmega8.build.variant=standard

    Чтобы долго не искать выкладываю прошивку, которую прошивал я:

ATmegaBOOT-prod-firmware-2009-11-07.rar

    После поиска и чтения статей в интернете, нашел опциональный загрузчик работающий на скорости 115200 кбит/с, в отличии от 9600 кбит/с для описанного выше варианта. Вариант optiboot загрузчика arduino работает на Atmega8 с встроенным резонатором и поддерживает скорости подключения до 115200 кбит/с, кроме этого он обладает меньшим объемом, для Atmega8 на 25% меньше оригинального. Optiboot загрузчик запускается быстрее, при старте или сбросе Atmega.

    При прошивке загрузчика нужно использовать следующие фьюз биты для конфигурации Atmega8 и внутренний резонатор:

fuse low bits: 0xA4
fuse high bits: 0xCC

    Обозначим его в среде разработке Arduino в файле Arduino\hardware\arduino\boards.txt:

##############################################################
microduino_atmega8o.name=Microduino Optiboot ATmega8 (8 MHz internal OSC) 115200
microduino_atmega8o.upload.protocol=arduino
microduino_atmega8o.upload.maximum_size=7680
microduino_atmega8o.upload.speed=115200
microduino_atmega8o.bootloader.low_fuses=0xa4
microduino_atmega8o.bootloader.high_fuses=0xcc
microduino_atmega8o.bootloader.path=atmega8
microduino_atmega8o.bootloader.file=optiboot_atmega8_8_115200_a4_cc.hex
microduino_atmega8o.bootloader.unlock_bits=0x3F
microduino_atmega8o.bootloader.lock_bits=0x0F
microduino_atmega8o.build.mcu=atmega8
microduino_atmega8o.build.f_cpu=8000000L
microduino_atmega8o.build.core=arduino
microduino_atmega8o.build.variant=standard

   Прошивка Optiboot для Atmega8 + 8Mhz внутренний резонатор:

optiboot_atmega8_8_115200_a4_cc.rar

    После первой же прошивки небольшого кода я понял, что так дело не пойдет. Код для вывода hello world в com порт занял больше половины объема внутренней памяти Atmega8. Я принял решение перейти в среду разработки AVR Studio 6 и программировать на языке ассемблера для Atmega. Для прошивки кода напрямую из среды AVR Studio сделал небольшой лайфхак. Добавил кнопку для прошивки Microduino.

    Для этого заходим в меню Tools -> External Tools...
    Заполняем следующие поля:

Тitle: Arduino Upload
Command: [путь к файлу]\avrdude.exe
Arguments: -C"[путь к файлу]\avrdude.conf" -patmega8 -carduino -P\\.\COM4 -b115200 -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i
    В аргументах строки запуска avrdude.exe нужно будет менять тип МК (у меня это atmega8), имя порта (у меня это COM4), скорость соединения по com порту (у меня это 115200), на которой работает загрузчик. ну и путь файлу пишите свой.
2015-10-02
    Теперь добавим кнопку на панель AVR Studio.
Tools->Customize... на вкладке [Commands] (делаем всё как на скриншоте)

добавляем External Command 1 ( у меня это единственная команда поэтому номер 1)

2015-10-02

    В результате на панели инструментов у вас должна появиться кнопка Arduino Upload.

2015-10-02

    После сборки и настройки можно приступить к разработке устройств на микросхемах семейства Atmega. Желаю удачи!

Внимание! Копирование, в том числе частичное, запрещено!

Теги: Atmega AVR Arduino Microduino схема печатная плата

vfiuchcikicshuusrch.ddns.net
Карта Сайта