Forum: Mikrocontroller und Digitale Elektronik Arduino Custom board (Stk300)


von ArthurDent (Gast)


Lesenswert?

Hallo *,

ich habe mal mit den Arduinos rumgespielt und fand es eigentlich ganz 
nett.

Da ich noch ein altes (sehr altes) STK300 board rumliegen hatte und auf 
dem schon vor Jahren die MCU gegen einen ATmega1281 getauscht habe, 
dachte ich mir: >Es waere schoen auch dort die Arduino IDE nutzen zu 
koennen.<

Ich habe dann den bootloader >ATmegaBOOT_168.c< fuer meinen ATmega1281 
uebersetzt und in das STK300 geflasht.
Danach habe ich in der >.../hardware/arduino/avr/boards.txt<
einen eigenen Eintrag gemacht:

##############################################################

m1281.name=STK300

m1281.upload.tool=avrdude
m1281.upload.maximum_data_size=8192

m1281.bootloader.tool=avrdude
m1281.bootloader.low_fuses=0xFF
m1281.bootloader.unlock_bits=0x3F
m1281.bootloader.lock_bits=0x0F

m1281.build.f_cpu=7372800L
m1281.build.core=arduino
m1281.build.variant=standard
# default board may be overridden by the cpu menu
m1281.build.board=AVR_MEGA1281

m1281.menu.cpu.atmega1281=ATmega1281

m1281.menu.cpu.atmega1281.upload.protocol=arduino
m1281.menu.cpu.atmega1281.upload.maximum_size=126976
m1281.menu.cpu.atmega1281.upload.speed=115200

m1281.menu.cpu.atmega1281.bootloader.high_fuses=0xDA
m1281.menu.cpu.atmega1281.bootloader.extended_fuses=0xF5
m1281.menu.cpu.atmega1281.bootloader.file=optiboot/ATmegaBOOT_168_atmega 
1281.hex

m1281.menu.cpu.atmega1281.build.mcu=atmega1281
m1281.menu.cpu.atmega1281.build.board=AVR_MEGA

##############################################################

Und oh Wunder das Flashen eines kleinen Blinkers klappte auf Anhieb :-)

Leider kann ich das Flaschen aus der IDE heraus nicht wiederholen.
Dabei erhalte ich immer:
>>avrdude: stk500_recv(): programmer is not responding
>>avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

Ich muss dann immer erst den Bootloader neu flashen (was 
gluecklicherweise direkt aus der IDE geht) um im zweiten Schritt das 
Programm zu erneuern.

#############################################################

Was ich nicht verstanden habe ist, wie der Bootloader mit dem Arduino 
Programm und der IDE zusammenarbeitet. Ist es so, dass die IDE zunaechst 
den Arduino resetet und dann im Bootloader das neue Programm flasht?

Es koennte auch sein, dass ich die Fuses fuer den ATmega1281 falsch 
gesetzt habe.

Ich stehe ein wenig auf dem Schlauch und wuerde mich ueber Hilfe freuen.

von M. S. (nickfisher)


Lesenswert?

Drück mal den Reset taster wenn er versucht zu flashen.

von Toto mit Harry (Gast)


Lesenswert?

Womöglich falsch gefust.. Ich würde im fuse calculator beide Seiten 
vergleichen, eventuell falsche bootloadergrösse.

von ArthurDent (Gast)


Lesenswert?

Simon S. schrieb:
> Drück mal den Reset taster wenn er versucht zu flashen.

Danke: Ja, das geht. Aber bei dem Arduino den ich hatte, brauchte man 
das nicht.

von Stefan F. (Gast)


Lesenswert?

> Aber bei dem Arduino den ich hatte, brauchte man
> das nicht.

Weil auf Arduino Boards der Reset Pin mit einer Steuerleitung des 
seriellen ports (bzw. USB-UART) verbunden ist.

von Harry L. (mysth)


Lesenswert?

Stefan U. schrieb:
>> Aber bei dem Arduino den ich hatte, brauchte man
>> das nicht.
>
> Weil auf Arduino Boards der Reset Pin mit einer Steuerleitung des
> seriellen ports (bzw. USB-UART) verbunden ist.

Der Reset kommt von DTR

von ArthurDent (Gast)


Lesenswert?

Ah :-)

Ich hatte so etwas vermutet. Wollte es im Grunde nur bestaetigt haben.

Danke, an alle!

von Einer K. (Gast)


Lesenswert?

ArthurDent schrieb:
> m1281.build.f_cpu=7372800L

Da gibts einen dunklen Punkt in der Arduino Welt:
Bei dem Takt ist die Berechnung/Besetzng des ADC Takt Vorteilers nicht 
korrekt.
Solltest du also händisch nachholen, wenn du analogRead() nutzen 
möchtest

von ArthurDent (Gast)


Lesenswert?

Oh, danke!

Ich weiss zwar gar nicht, ob ich das benoetige, da es wie gesagt 
eigentlich nur ein wenig Spielerei darstellt.
Allerdings weiss ich, wie lange man nach so etwas sucht, wenn man es 
selbst herausfinden muss.

Ist im Uebrigen eine der weiteren Aenderungen, die ich an meinem STK300 
vorgenommen habe: -> Ich habe den eingeloeteten Quarz durch eine Fassung 
ersetzt, so dass ich bei Bedarf die Quarze so tauschen kann, wie ich 
lustig bin. Ausserdem verwende ich meist nur gerade Taktraten wie 
1.8433MHz, 3.6864MHz, 4.9152MHz, 7.3728MHz, ... um immer 115200Baud 
sauber zu treffen.

Allerdings sind mein STK300 und die AVRs ein wenig in die Jahre 
gekommen.
Ich mag sie halt, weil sie so einfach sind, dass meine Kiddies das mit 
endlichem Aufwand auch verstehen koennen. Fuer aktuelle Projekte setze 
ich eher auf STM32, LPC oder gleich auf komplette Linux Boards.

von Michael U. (amiga)


Lesenswert?

Hallo,

meine beiden alten Pollin NetIO habe ich hier
Beitrag "AVR-NetIO recycling"
auch zum Arduino erklärt.

Gruß aus Berlin
Michael

von Ulrich H. (Firma: HTW Chur) (hauseru)


Lesenswert?

Hallo *,

g++ 5.4.0 übersetzt bei mir unter XUbuntu nicht. Fehler:
avr-g++: error: device-specs/specs-null: No such file or directory
Im Netz finde ich keine Info zu diesem Fehler.
Mit einem Arduino Uno funktioniert das gesamte Setup einwandfrei. 
Hintergrund ist die versuchte Wiederbelebung von Waspmote V1.1 Boards 
von Libelium. Die alte IDE, die diese Boards programmieren kann, sträubt 
sich unter 64-Bit Systemen.
Der Eintrag in boards.txt ist erfolgt wie oben angegeben. Zusätzlich 
habe ich versucht, mit Daten aus der alten Entwicklungsumgebung 
abzugleichen:
##############################################################

wasp01.name=waspmote-api-v.033

wasp01.upload.protocol=stk500
wasp01.upload.maximum_size=122880
wasp01.upload.speed=38400

wasp01.bootloader.low_fuses=0xdf
wasp01.bootloader.high_fuses=0xd0
wasp01.bootloader.extended_fuses=0xf5
wasp01.bootloader.path=wasp_v8.1
wasp01.bootloader.file=ATmegaBOOT_v0003.hex
wasp01.bootloader.unlock_bits=0x3F
wasp01.bootloader.lock_bits=0x0F

wasp01.build.mcu=atmega1281
wasp01.build.f_cpu=8000000L
wasp01.build.core=waspmote-api-v.033

##############################################################
Wenn man sich die HW ansieht, machen diese Angaben Sinn. Das führte zu:

##############################################################

m1281UHE.name=Waspmote V1.1 UHE

m1281UHE.upload.tool=avrdude
m1281UHE.upload.maximum_data_size=8192

m1281UHE.bootloader.tool=avrdude
m1281UHE.bootloader.low_fuses=0xDF
m1281UHE.bootloader.high_fuses=0xD0
m1281UHE.bootloader.unlock_bits=0x3F
m1281UHE.bootloader.lock_bits=0x0F

m1281UHE.build.f_cpu=8000000L
m1281UHE.build.core=waspmote-api-v.033
m1281UHE.build.variant=standard
# default board may be overridden by the cpu menu
m1281UHE.build.board=AVR_MEGA1281

m1281UHE.menu.cpu.atmega1281=ATmega1281

m1281UHE.menu.cpu.atmega1281.upload.protocol=stk500
m1281UHE.menu.cpu.atmega1281.upload.maximum_size=122880
m1281UHE.menu.cpu.atmega1281.upload.speed=38400

m1281UHE.menu.cpu.atmega1281.bootloader.high_fuses=0xD0
m1281UHE.menu.cpu.atmega1281.bootloader.extended_fuses=0xF5
m1281UHE.menu.cpu.atmega1281.bootloader.file=optiboot/ATmegaBOOT_168_atm 
ega1281.hex

m1281UHE.menu.cpu.atmega1281.build.mcu=atmega1281
m1281UHE.menu.cpu.atmega1281.build.board=AVR_MEGA

##############################################################

Ich bin langjähriger Programmierer, kenne mich jedoch mit der 
AVR/Arduino Productivity Chain nicht aus. Ich finde kein makefile, ant, 
maven  etc., keine Konfiguration.
Bezüglich device-specs fand ich nur das Verzeichnis 
/usr/lib/gcc/avr/5.4.0/device-specs. Darin gibt es ausser 
'specs-atmega128rfa1' und '...rfr2' keine Dateien, die auf einen 1281 
hindeuten. In der alten Entwicklungsumgebung für den Waspmote fand ich 
noch core-files, die ich unter 
/usr/share/arduino/hardware/arduino/cores/ eingebaut habe.
Irgend etwas am gcc scheint mir zu fehlen.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Bei mir ist in diesem Verzeichnis viel mehr drin. Ich nutze Debian 
Linux.

Vielleicht hilft es, die Pakete avr-libc und gcc-avr neu zu 
installieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.