atmega32l с загрузчиком arduino

Elektro
Offline
Зарегистрирован: 10.02.2012

Хочу селать *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 []'
 
кто-нибудь сталкивался с таким? 
заранее спасибо:)
 
maksim
Offline
Зарегистрирован: 12.02.2012

Есть два варианта решения:
1. Разбираться с исходниками и адаптировать под IDE 1.0 и выше.
2. Скачать версию IDE 0023.

И как-то вы не ту ветку выбрали, где тему разместить.

Elektro
Offline
Зарегистрирован: 10.02.2012

Я скачал IDE 0023. но запустьтить плату так и не удалось, в 0023 версии есть что-то что нету в 1,0,?

для програмирования я использую USB->UART на FT232rl (самодельный). что еще можно попробовать?

leshak
Offline
Зарегистрирован: 29.09.2011

Я думаю что нужно смотреть, все-таки, в сторону 1.0, но...

не через замену, как в статье, cores, а через создание еще одного дополнительного variants.

Собственно основное изменение в 1.0 и состояло в том, что-бы новые камни добавлять можно было без "грязно-хаков".

Думаю, в качестве примера можно смотреть на Leonardo

в boards.txt обратить внимание на

#leonardo.build.variant=leonardo 

и дальше смотреть в папку hardware\arduino\variants\leonardo 

Далее покопатся в даташите - посмотреть наксолько 32 отличается от 32u4, возможно леонардовские файлы и пойдойдут.

А если нет - просто делать свой пин-маппинг, сделать еще один variant.

А 23-тью версию можно скачать для сравнения, что-бы посмотреть что же они там, в статье, в core меняли. (и даже если идти по пути "замены core", то IMHO лучше не перетирать оригинальный, а сделать еще один и указать его в boards.txt)

 

Elektro
Offline
Зарегистрирован: 10.02.2012

Спасибо. я нашел пример с ATmega644 это таже atmega32 16AU, этот пример работает http://www.fact4ward.com/blog/micros/atmega644p/ , но у меня  atmega32 8au как я понял разница лишь в объеме памяти.  может с этим что то сделать можно? 

leshak
Offline
Зарегистрирован: 29.09.2011

Ну если "разница только в памяти" (я не вникал), то в чем состоит проблема?

По идее и так заливатся должно. Только на больших скетчах - проблемы могут начать вылазить. По идее, опять-таки в board.txt делаем, по подобию, свою плату и поправляем .upload.maximum_size=....  тогда ардуина IDE будет матерится и не давать заливать скетчи "которые не влазят".

Ну и .build.mcu=....  на свой камешек подправить, и .f_cpu=16000000L на .f_cpu=8000000L

И фьюзы, раз на другой частоте работаете, скорее всего от внутреннего же осцилятора запускатся надумали. А потом, скорее всего и бутлоадер переделанный на 8mHz поискать нужно будет.

Вообщем смотреть в boards.txt и выставлять все параметры в соотсветсвии со своим камнем. Или почесать маковку и решить "да сколько там та атмега+кристал стоит" и просто взять камень который заводится без танцев с бубном.

leshak
Offline
Зарегистрирован: 29.09.2011

И посмотрите еще тему

http://arduino.ru/forum/apparatnye-voprosy/zamena-atmega8a

С помощью нее станет видно, что "не только памятью они отличаются". 16UA и 8AU - разные пироги по частоте.

Elektro
Offline
Зарегистрирован: 10.02.2012

понятно, значит не подойдет. но пока что не нашел то что мне нужно.

а можно взять variants от sanguino, а остольное из этой статьи http://achuwilson.wordpress.com/2011/12/15/arduino-ide-for-programming-atmega-microcontrollers/ ? 

вопрос остается открытым: как запустить мой atmega32l 8au в среде arduino?

Elektro
Offline
Зарегистрирован: 10.02.2012

нашел http://wiki.edwindertien.nl/doku.php?id=software:bootloaders здесь то что нужно atmega32 все седелал, но при загрузки скетча через IDE0023 выдает ошибку:

 

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
 
с чем это может быть связано? 
Elektro
Offline
Зарегистрирован: 10.02.2012

всем спасибо проблема решена, был перезилит BOOTLODER с последного сайта, через другую дуино.

всем спасибо!

leshak
Offline
Зарегистрирован: 29.09.2011

>здесь то что нужно atmega32 все седелал

Что именно вы сделали? Там все описанно для работы на  16mHz, а у вас камень максимум 8mHz потянет.

С кварцем вы пытаетесь запуститься или от внутреннего?

Кварц на 8-ть? Вообщем фьюзы то нужно будет выставлять соответсвующие, в любом случая явно не "как в статьей".

Да и бутлоадер тоже нужно будет под 8-мь искать/править (вообщем-то похоже все это я уже писал).

> при загрузки скетча через IDE0023

А под этим что поинмается? Пытаетесь через бутлоадер или через программатор из IDE шить?

>с чем это может быть связано? 

Да что угодно. От полохого проводка, "залочили чип фьюзами", не на той скорости пытаетесь, не тот протокол...

Кстати, у меня была такая проблема когда в boards.txt стояло

.upload.protocol=stk500v1 пока не сменил на .upload.protocol=arduino

Теоретически "это одно и тоже", а практически - в чем-то есть разница.

Показывайте свой boards.txt, расказывайте с каким кварцем пускаете, будем искать "тараканов".

Elektro
Offline
Зарегистрирован: 10.02.2012

почти все отладил, осталась одна проблемка.

запустил свою atmega32l от внутренего резонатора на 8Mhz.

сделал это так:

с помощью калькулятора фьюзов нашел нужные H & L Fuse вписал их в Boords.txt исправил в нем же строчку с частотой (atmega32.build.f_cpu=8000000L), дальше исправил фьюзы и частоту в make файле который лежит в папке с bootloder. Загрузил боотледер через другую ардуину по средствам ArduinoISP/

работает теперь, но есть одна проблема не могу прошить по TX RX, переходник сделан на микросхеме FT232rl проверил через програмку терминал с премкнутыми RX на TX данные отсылаются и возвращаются светодиоды мерцают - все пучком. но вот свою атмегу прошить не могу ошибка:

avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

если в boards.txt добавить строчку:

*NAME*.upload.using=arduinoisp

тогда можно прошивать контролер через ArduinoISP, тогда все шьется и работает. теперь нужно разобраться и запустить от UART чтоб прошивалась.

есть идеии? 

извините если где-то ошибся.

 

leshak
Offline
Зарегистрирован: 29.09.2011

Уверен что влили туда бутлоадер? Уверены что бутлоадер именно под 8Mhz? То что вы "поправили в исходниках" - может быть не достаточно. После поправки - нужно поправленной скомпилять.

Не забыли что нужно кнопку Reset нажимать при загрузке скетча? (если авторесета не делали). Изучите "родственные темы" по прошивке atmega8, atmega328 - суть-то тут одна и таже.