atmega32l с загрузчиком arduino
- Войдите на сайт для отправки комментариев
Втр, 05/02/2013 - 23:14
Хочу селать *DUINO на базе atmega32l, прошил загрузчик через ISP програматор, добавил нужные файлы как в этой статье http://achuwilson.wordpress.com/2011/12/15/arduino-ide-for-programming-atmega-microcontrollers/ (стандартно atmega32 не поддерживается), но теперь у меня компилятор IDE 1.0.1 выдает ошибку :
In file included from D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/Arduino.h:213,
from sketch_feb06b.cpp:3:
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/pins_arduino.h:45: error: conflicting declaration 'const uint8_t port_to_mode_PGM []'
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/Arduino.h:127: error: 'port_to_mode_PGM' has a previous declaration as 'const uint16_t port_to_mode_PGM []'
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/pins_arduino.h:46: error: conflicting declaration 'const uint8_t port_to_input_PGM []'
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/Arduino.h:128: error: 'port_to_input_PGM' has a previous declaration as 'const uint16_t port_to_input_PGM []'
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/pins_arduino.h:47: error: conflicting declaration 'const uint8_t port_to_output_PGM []'
D:\arduino-1.0-windows\arduino-1.0.1\hardware\arduino\cores\Arduino/Arduino.h:129: error: 'port_to_output_PGM' has a previous declaration as 'const uint16_t port_to_output_PGM []'
кто-нибудь сталкивался с таким?
заранее спасибо:)
Есть два варианта решения:
1. Разбираться с исходниками и адаптировать под IDE 1.0 и выше.
2. Скачать версию IDE 0023.
И как-то вы не ту ветку выбрали, где тему разместить.
Я скачал IDE 0023. но запустьтить плату так и не удалось, в 0023 версии есть что-то что нету в 1,0,?
для програмирования я использую USB->UART на FT232rl (самодельный). что еще можно попробовать?
Я думаю что нужно смотреть, все-таки, в сторону 1.0, но...
не через замену, как в статье, cores, а через создание еще одного дополнительного variants.
Собственно основное изменение в 1.0 и состояло в том, что-бы новые камни добавлять можно было без "грязно-хаков".
Думаю, в качестве примера можно смотреть на Leonardo
в boards.txt обратить внимание на
и дальше смотреть в папку hardware\arduino\variants\leonardo
Далее покопатся в даташите - посмотреть наксолько 32 отличается от 32u4, возможно леонардовские файлы и пойдойдут.
А если нет - просто делать свой пин-маппинг, сделать еще один variant.
А 23-тью версию можно скачать для сравнения, что-бы посмотреть что же они там, в статье, в core меняли. (и даже если идти по пути "замены core", то IMHO лучше не перетирать оригинальный, а сделать еще один и указать его в boards.txt)
Спасибо. я нашел пример с ATmega644 это таже atmega32 16AU, этот пример работает http://www.fact4ward.com/blog/micros/atmega644p/ , но у меня atmega32 8au как я понял разница лишь в объеме памяти. может с этим что то сделать можно?
Ну если "разница только в памяти" (я не вникал), то в чем состоит проблема?
По идее и так заливатся должно. Только на больших скетчах - проблемы могут начать вылазить. По идее, опять-таки в board.txt делаем, по подобию, свою плату и поправляем .upload.maximum_size=.... тогда ардуина IDE будет матерится и не давать заливать скетчи "которые не влазят".
Ну и .build.mcu=.... на свой камешек подправить, и .f_cpu=16000000L на .f_cpu=8000000L
И фьюзы, раз на другой частоте работаете, скорее всего от внутреннего же осцилятора запускатся надумали. А потом, скорее всего и бутлоадер переделанный на 8mHz поискать нужно будет.
Вообщем смотреть в boards.txt и выставлять все параметры в соотсветсвии со своим камнем. Или почесать маковку и решить "да сколько там та атмега+кристал стоит" и просто взять камень который заводится без танцев с бубном.
И посмотрите еще тему
http://arduino.ru/forum/apparatnye-voprosy/zamena-atmega8a
С помощью нее станет видно, что "не только памятью они отличаются". 16UA и 8AU - разные пироги по частоте.
понятно, значит не подойдет. но пока что не нашел то что мне нужно.
а можно взять variants от sanguino, а остольное из этой статьи http://achuwilson.wordpress.com/2011/12/15/arduino-ide-for-programming-atmega-microcontrollers/ ?
вопрос остается открытым: как запустить мой atmega32l 8au в среде arduino?
нашел http://wiki.edwindertien.nl/doku.php?id=software:bootloaders здесь то что нужно atmega32 все седелал, но при загрузки скетча через IDE0023 выдает ошибку:
всем спасибо проблема решена, был перезилит BOOTLODER с последного сайта, через другую дуино.
всем спасибо!
>здесь то что нужно atmega32 все седелал
Что именно вы сделали? Там все описанно для работы на 16mHz, а у вас камень максимум 8mHz потянет.
С кварцем вы пытаетесь запуститься или от внутреннего?
Кварц на 8-ть? Вообщем фьюзы то нужно будет выставлять соответсвующие, в любом случая явно не "как в статьей".
Да и бутлоадер тоже нужно будет под 8-мь искать/править (вообщем-то похоже все это я уже писал).
> при загрузки скетча через IDE0023
А под этим что поинмается? Пытаетесь через бутлоадер или через программатор из IDE шить?
>с чем это может быть связано?
Да что угодно. От полохого проводка, "залочили чип фьюзами", не на той скорости пытаетесь, не тот протокол...
Кстати, у меня была такая проблема когда в boards.txt стояло
.upload.protocol=stk500v1 пока не сменил на .upload.protocol=arduino
Теоретически "это одно и тоже", а практически - в чем-то есть разница.
Показывайте свой boards.txt, расказывайте с каким кварцем пускаете, будем искать "тараканов".
почти все отладил, осталась одна проблемка.
запустил свою atmega32l от внутренего резонатора на 8Mhz.
сделал это так:
с помощью калькулятора фьюзов нашел нужные H & L Fuse вписал их в Boords.txt исправил в нем же строчку с частотой (atmega32.build.f_cpu=8000000L), дальше исправил фьюзы и частоту в make файле который лежит в папке с bootloder. Загрузил боотледер через другую ардуину по средствам ArduinoISP/
работает теперь, но есть одна проблема не могу прошить по TX RX, переходник сделан на микросхеме FT232rl проверил через програмку терминал с премкнутыми RX на TX данные отсылаются и возвращаются светодиоды мерцают - все пучком. но вот свою атмегу прошить не могу ошибка:
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
если в boards.txt добавить строчку:
*NAME*.upload.using=arduinoisp
тогда можно прошивать контролер через ArduinoISP, тогда все шьется и работает. теперь нужно разобраться и запустить от UART чтоб прошивалась.
есть идеии?
извините если где-то ошибся.
Уверен что влили туда бутлоадер? Уверены что бутлоадер именно под 8Mhz? То что вы "поправили в исходниках" - может быть не достаточно. После поправки - нужно поправленной скомпилять.
Не забыли что нужно кнопку Reset нажимать при загрузке скетча? (если авторесета не делали). Изучите "родственные темы" по прошивке atmega8, atmega328 - суть-то тут одна и таже.