С заливкой простеньких программок вида "помигать светодиодом" проблем не возникло. А вот собрать arduino-проект и залить его оказалось сложнее. Чтобы не писать длинные Makefile'ы я просто решил добавить поддержку своей новой платы в IDE. В этом нет ничего сложного, но есть пара подводных камней, на которые я наткнулся в процессе.
Типичная рекомендация из гугла - добавить описание своей платы и программатора в файлы boards.txt и programmers.txt, поставляемые с Arduino IDE. Мне не понравился такой подход, т.к. при апгрейде IDE мои изменения будут утеряны и придется снова все повторить.
Дальнейшее гугление привело меня на форум, где описывали похожий случай. Оказывается IDE позволяет определить пользовательский конфиг в папке со скетчами. В моем случае это ~/development/arduino, значит конфиги будут лежать в ~/development/arduino/hardware/own/boards.txt и ~/development/arduino/hardware/own/programmers.txt соответственно.
После добавления описаний получилось:
$ cat ~/development/arduino/hardware/own/boards.txt own.name=Generic ATmega8 board own.upload.using=usbasp own.upload.maximum_size=8192 own.build.mcu=atmega8 own.build.f_cpu=16000000L own.build.core=arduino
Фьюзы были прошиты заранее, когда игрался с простыми примерами. В моем случае lfuse=0xff hfuse=0xd9
$ cat ~/development/arduino/hardware/own/programmers.txt usbasp.name=USBAsp usbasp.communication=usb usbasp.protocol=usbasp
Теперь в IDE появился мой программатор и плата. Запускаю компиляцию и... облом не может инклудить файл WProgram.h. Далее нагуглилось, что WProgram.h - файл принадлежащий платформе "arduino". Это та самая опция own.build.core=arduino, которую я просто скопировал из примера, но не задумывался о ее назначении.
Чтобы не плодить копии сделал символическую ссылку на директорию, поставляемую с arduino ide.
$ mkdir ~/development/arduino/hardware/own/cores $ ln -s /usr/share/arduino/hardware/arduino/cores/arduino ~/development/arduino/hardware/own/cores/arduino
После этого заработала компиляция и скетч загрузился на плату.
Здравствуйте, Андрей! Вы занимались с гигрометром, у меня стоит задачка
ОтветитьУдалитьпостроить геймпад (joysticks) типа Mjoy8 (16)
http://www.joysticks.ru/joysticks/handmade/mjoy.shtml
Но мне потребуется лишь один аналоговый вход и 3 (или один) логических входа...
Можно его сделать на USBasp V2.0 ? Если придется программировать USBasp через USBasp , то как их соединить?
Какой программой удобно это сделать?
Я программы для контроллеров никогда не писал, но немного работал в BASIC.
Чужие разработки прошивал с помощью PonyProg. Запускал 3Dпринтер на Ардуино.
Спасибо!
Сергей
skopintsev.sp@gmail.com
Здравствуйте, Сергей. В теории сделать что-то другое из USBasp возможно, но на практике будет сложно подключиться к свободным выводам контроллера. Программировать USBasp другим программатором можно - в схеме для этого предусмотрена перемычка.
Удалить