Avrdude, Flowcode и Arduino Leonardo.

Используя эту программу за две недели сделал пару проектов используя для отладки китайскую макетку на Atmega 32, программировал кристалл при помощи USB BASP Подробнее и Khazama AVR Programmer Подробнее. Все бы ничего, если бы на работе не притащили ARDUINO Leonardo Подробнее. Слышал об этом устройстве не раз, но никогда с ним не работал, да и знакомых работающих на ней нет. Полез на сайт, скачал родное IDE, доки и тд. Скажу сразу, родная IDE не понравилась. Решил использовать Flowcode, благо 5 версия поддерживает платы Arduino. И вот тут напоролся на грабли, плюс IDE от Arduino — загрузка скетча прямо из среды разработки в кристалл. А это ведь очень удобно. Изучив доки и программу, понял — что в Leonardo протокол AVR109, и загрузка программ идет по USB через вшитый bootloader. Arduino IDE использует AVRDUDE. Решено! Пробую встроить дудку во Flowcode v5. И тут началось самое интересное. Пошуршав интернет, сделав выводы, промучившись ровно 2 дня подключения железки к IDE Flowcode нашел такое, что при подключении ARDUINO Leonardo к USB с дровами подтянутыми из родной IDE мы видим виртуальный com порт № например 1. Используя дудку и этот порт залить откомпилированную программу не удастся. Для того что бы запрограммировать кристалл нам нужно пнуть плату в режим bootloader. Для этого нажимаем один раз ресет (если бут оригинал от итальянцев), у нас есть порядка 8 секунд, что бы пойти в диспетчер устройств и увидеть там номер виртуального com порта Arduino leonardo bootloader:

Теперь нам нужно скачать avrdude последней версии и закинуть в корневой каталог диска С.
После чего настраиваем Flowecode.
При создании нового проекта выбираем Arduino leonardo. Заходим в меню Чип:

Далее в Опции компиляции:

В меню опции компиляции идем в пункт Programmer:

1. Указываем путь к AVRDUDE;
2. Прописываем конфигурационную строку для AVRDUDE.
У меня она такая: C:\Avrdude\avrdude.exe avrdude -v -p m32u4 -c avr109 -P COM2 -b 1200 -D -Uflash:w:Flowcode1.hex:i
VCP bootloader у меня COM2, он будет отличаться, поэтому вы должны будете проследить на каком порту он висит в диспетчере при нажатии кнопки ресет на плате Arduino Leonardo. -b 1200 — это скорость порта, у меня заработало только на такой. Так же я пока хекс файл кидал в директорию AVRDUDE, поэтому в параметры строки записал еще и имя файла — w:Flowcode1.hex:i.
Проделав эти манипуляции, можем накидать программу во Flowcode v5 и запрограммировать ардуинку.
Нарисуем алгоритм мигалки:

После чего компилируем программу. Меню Чип — > Компиляция в HEX. Далее HEX Файл перетаскиваем в папку с AVRDUDE. Идем в меню ЧИП, нажимаем на плате Arduino кнопку ресет, у нас есть 8 секунд, чтобы залить нашу программу -> Компиляция в Chip:

С первого раза может не получиться, нужно немного набить руку, что бы примерно успевать пинать ардуинку в бутлоадер и нажимать запись программы в Чип. После этих действий можно наблюдать прогресс:
http://www.matrixmultimedia.com
Compilation is up-to-date
Linking is up-to-date
Launching the programmer...
C:\Avrdude\avrdude.exe C:\Avrdude\avrdude.exe avrdude -v -p m32u4 -c avr109 -P COM2 -b 1200 -D -Uflash:w:Flowcode1.hex:i
avrdude.exe: Version 6.1, compiled on Mar 13 2014 at 00:09:49
Copyright (C) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (C) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Avrdude\avrdude.conf"
Using Port : COM2
Using Programmer : avr109
Overriding Baud Rate : 1200
AVR Part : ATmega32U4
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 9000 9000 0x00 0x00
flash 65 6 128 0 yes 32768 128 256 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : butterfly
Description : Atmel AppNote AVR109 Boot Loader
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
avrdude.exe: devcode selected: 0x44
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% -0.00s
avrdude.exe: Device signature = 0x1e9587
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as D8
avrdude.exe: safemode: efuse reads as CB
avrdude.exe: reading input file "Flowcode1.hex"
avrdude.exe: writing flash (714 bytes):
Writing | ################################################## | 100% 0.06s
avrdude.exe: 714 bytes of flash written
avrdude.exe: verifying flash memory against Flowcode1.hex:
avrdude.exe: load data flash data from input file Flowcode1.hex:
avrdude.exe: input file Flowcode1.hex contains 714 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 0.01s
avrdude.exe: verifying ...
avrdude.exe: 714 bytes of flash verified
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as D8
avrdude.exe: safemode: efuse reads as CB
avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
avrdude.exe done. Thank you.
Return code = 0
FINISHED
Все, готово. Смотрим на ардуинку, наш светодиод должен моргать с указанной в программе задержкой.
PS: Что подвигло написать данную статью. Мало инфы, все разбросанно. Конкретно под Leonardo то же ничего нет. Два дня я пытался собирал, и запустил программатор в IDE Flowcode v5 на операционной системе Win7 x64.
- +2
- 11 марта 2015, 17:22
- Jman
modkit.com, ArduBlock выглядят более дружелюбными для детей и новичков. А старички будут по старинке клаву топтать.
- count_enable
- 11 марта 2015, 17:37
- ↓
мне не понравилось, слишком много гимора с подключением библиотек, у меня так и не подхватила она
maria mole получше будет
maria mole получше будет
- kalobyte-ya
- 11 марта 2015, 17:49
- ↑
- ↓
что-то ты там намудрил
в правильной плате один вывод ком порта дтр вроде идет на сброс через конденсатор и генерирует короткое типа нажатие и бутлоадер вроде другой, не надо там ждать 8 сек
в правильной плате один вывод ком порта дтр вроде идет на сброс через конденсатор и генерирует короткое типа нажатие и бутлоадер вроде другой, не надо там ждать 8 сек
- kalobyte-ya
- 11 марта 2015, 17:50
- ↓
Научится писать программы для микроконтроллеров на языке «С» можно за два дня, ну максимум неделю, но чтобы упростить труд программистам придумали всякие графические утилиты, которые почти не требуют знания языка программирования. Это привело к созданию всяких Андроидов, С#, Виртуальных машин (JVM), а потом мы удивляемся, почему мой телефон с четырёх ядерным 1 ГГц процессором тормозит!
Си за два дня? Я думаю это если вы ментально программист от бога, или например вы изучали до этого тот же бейсик или паскаль. Человеку, который не знает ничего Си за два дня не осилить, надо хотя бы прочесть Кернигана и Ритчи в 300 — 400 стр. Уделять по 4 часа программирования в день как минимум, это не говоря уже о разборе полетов с ДШ, апноутами на МК.
Всех подводных камней «С» за два конечно не изучить, но ознакомится с синтаксисом и на уровне приведенного в статье алгоритма, 2 дня будет достаточно!
" программистам придумали всякие графические утилиты… Это привело к созданию всяких Андроидов, С#, Виртуальных машин (JVM)"
Ага, а уменьшение норм техпроцесса производства микросхем привело к укорочению женских юбок.
Увеличение количества рок-групп, играющих нойзкор привело к таянию ледников в Итальянских альпах.
Ага, а уменьшение норм техпроцесса производства микросхем привело к укорочению женских юбок.
Увеличение количества рок-групп, играющих нойзкор привело к таянию ледников в Итальянских альпах.
- count_enable
- 12 марта 2015, 17:27
- ↑
- ↓
Комментарии (12)
RSS свернуть / развернуть