Avrdude, Flowcode и Arduino Leonardo.

Всем снова привет! Недавно начал пользоваться программой Flowcode v5. Мне она по нраву, можно наглядно посмотреть о чем ты думаешь, складывая алгоритм по кирпичикам. Написать простую программу можно за 5 минут. Подробно о программе тут: Визуальное программирование
Используя эту программу за две недели сделал пару проектов используя для отладки китайскую макетку на 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

Комментарии (12)

RSS свернуть / развернуть
modkit.com, ArduBlock выглядят более дружелюбными для детей и новичков. А старички будут по старинке клаву топтать.
0
мне не понравилось, слишком много гимора с подключением библиотек, у меня так и не подхватила она
maria mole получше будет
0
что-то ты там намудрил
в правильной плате один вывод ком порта дтр вроде идет на сброс через конденсатор и генерирует короткое типа нажатие и бутлоадер вроде другой, не надо там ждать 8 сек
0
На меге32u4 — USB.
0
Научится писать программы для микроконтроллеров на языке «С» можно за два дня, ну максимум неделю, но чтобы упростить труд программистам придумали всякие графические утилиты, которые почти не требуют знания языка программирования. Это привело к созданию всяких Андроидов, С#, Виртуальных машин (JVM), а потом мы удивляемся, почему мой телефон с четырёх ядерным 1 ГГц процессором тормозит!
0
Си за два дня? Я думаю это если вы ментально программист от бога, или например вы изучали до этого тот же бейсик или паскаль. Человеку, который не знает ничего Си за два дня не осилить, надо хотя бы прочесть Кернигана и Ритчи в 300 — 400 стр. Уделять по 4 часа программирования в день как минимум, это не говоря уже о разборе полетов с ДШ, апноутами на МК.
0
Всех подводных камней «С» за два конечно не изучить, но ознакомится с синтаксисом и на уровне приведенного в статье алгоритма, 2 дня будет достаточно!
0
" программистам придумали всякие графические утилиты… Это привело к созданию всяких Андроидов, С#, Виртуальных машин (JVM)"
Ага, а уменьшение норм техпроцесса производства микросхем привело к укорочению женских юбок.
Увеличение количества рок-групп, играющих нойзкор привело к таянию ледников в Итальянских альпах.
0
Современная молодёжь предпочитает юбкам джинсы. Мне лично нравятся женщины в юбках.
0
+1
Тут напрашивается аксиома Эскобара =)
0
ФК это игла.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.