Hallo,
kann sein, dass ich mich besonders blöd anstelle, aber ich hab mal ne
kleine Frage:
Besitze ein ARDUINO NG Plus Board, welches einen ATMEGA168 beinhaltet.
Dieses Board ist mittels einer USB-Schnittstelle an meine LinuxKiste
verbunden.
Mir ist es bisher gelungen, den Programmcode für das Board in avr-gcc zu
kompilieren und den nötigen .hex-Code zu erzeugen. So weit so gut...
ABER: ich bekomme diesen Code NICHT in meinen Atmega geschossen!!
mit
avrdude -p m168 -P /dev/ttyUSB0 -U flash:w:main.hex -c ???
heisst es nur, dass sich niemand meldet!!
Habe schon alles möglich ausprobiert. WICHTIG ist dabei vielleicht, dass
ich kein Programmieradapter benutze. Unter Windows ist dieser auch nicht
nötig beim Benutzen einer IDE die in Java programmiert ist.
Ich wäre sehr dankbar wenn sich jemand meines Problems annimmt!
Im Voraus schon mal dankeschön!!
Hallo,
also das Arduino hat nen Atmel168 drauf. Bei meinen Versuchen mit
avrdude hab ich der Option -c zuerst alle Seriellen Möglichkeiten
ausprobiert (DASA, DASA2, DASA3...) Es scheint das ich mit -c jtag2 am
meisten hinbekomme, da er dort nicht abbricht sondern in ne
endlos-Receive meldung läuft.
Muss der Atmel168 einen bestimmten Status haben um den Flash neu zu
beschreiben?
Ich lese öfter was von FuseBits...?
Hat der Atmega schon einen Bootloader drauf? Wenn nicht, brauchst du
erst mal einen anderen Programmer, um einen auf zuspielen (siehe
http://www.arduino.cc/en/Hacking/Bootloader?from=Main.Bootloader ).
Der USB-Wandler ist laut schaltplan ja nicht mit dem ISP verbunden..
hth. Jörg
ja, also der bootloader ist (müßte) schon drauf sein, da ich bereits
über die Arduino-IDE Programmcode eingespielt habe.
Ich möchte eigentlich nur einen anderen Programmcode in den Flash laden.
Den Parameter -c fütter ich mit "jtagmkII". ???
Na, dann finde raus, wie das Protokoll des Bootloaders aussieht und
stelle das bei AVRDuDe ein, wenn das einstellen nicht klappt (am
wahrscheinlichsten, weil der 'Dude das Protokoll nicht kennt), rtfm:
http://www.arduino.cc/playground/Learning/Linux ;-)
hth. Jörg
Der Arduino Bootloader benutzt stk500v1. Im Arduino palyground und Forum
gibts viele Beispiele wie man die Boards per Makefile programmiert und
flasht. Man kann dabei auch die arduino core library bzw. API verwenden
(Stichwörter: Arduino on command line) muss man aber nicht
hm, danke.
ich glaub ich hab ein ganz anderes Problem. Das laden des Flashs klappt
nämlich, allerdings nur direkt nACH anschließen des arduino-boards.
laut hersteller soll es möglich sein, ohne hardwarereset einfach neuen
programmcode upzuloaden.
Von windows aus über arduino-ide kein problem.
unter linux mir avr-g++, libs, avrdude geht das bei mir aber nicht.
--> Verzweifel!!
Oh achso, das neue auto-reset feature geht erst bei den neuesten,
"Diecimila", getauften Boards.
Dein NG Board kann aber leicht nachgerüstet werden. Dazu musst du nur
einen 100nF Kondensator zwischen die DTR und /Reset Signale löten.
Ist ausführlich hier erklärt:
http://www.arduino.cc/blog/?p=13
Manche der älteren Boards haben Platz für diesen Kondensator schon auf
der Platine vorgesehen und müssen nur noch entsprechend Nachbestückt
werden.... Bei manchen Versionen der Arduino Boards ist es leider etwas
unüberischtlich zu erkennen welches man selbst hat. Vergleich mal dein
Board mit dem auf dem Bild im Link oben.
Manuell kannst du einen Reset natürlich nicht nur durch neu
"anschließen" sondern auch über den Taster auf dem Board ausführen.
Einfach kurz vor dem Upload drauf drücken (und wieder los lassen ;).
Hi Oliver,
ich bin mir sicher, ich habe das neue Diecimila-Board.
Das ich mit dem Taster das Board rücksetzen kann ist mir bekannt. Nur
ist ein absolutes Wunschfeature das ich den Programm-Code ohne
Hardwarereset (Taster/Neustart/...) auf den Flash schießen kann.
Und wie gesagt, mit hilfe der WIndows-Arduino-IDE kein Problem... Aber
mit Linux!!! :-(
Ah, ok, dann liegts vermutlich daran, dass der linux serial port handler
die RS-232 Pins beim Port öffnen nicht automatisch toggelt (unter Mac
OS X z.B. ist das automatisch so, ich benutze damit erfolgreich
makfiles und auto-reset).
D.h. du musst wie die Arduino IDE das DTR Signal deines RS-232 ports
extra schalten um den Reset auszulösen. Das kannst du z.B. über ein
kleines python script ganz leicht. Ich hab mir mal ein kleines zum
testen von DTR/RTS geschrieben. Für auto-reset solltest Du die sleeps
kürzer machen oder gleich weglassen, die while Schleife auch.. :)
Im makefile kannst Du versuchen das scirpt einfach direkt vor dem
avrdude Kommando aufzurufen.
Ich kenn' die Arduino Doku für Linux nicht so gut aber mich würde es
wundern, wenn auto-reset nirgendwo für linux erwähnt wird. Hast du mal
im Arduino.cc Forum geschaut? Bist wahrscheinlich nicht der erste mit
dem Wunsch...
Hi Oliver,
danke für deine Mühen!
Ich habe inzwischen sämtliche Foren im Internet gelesen, Telefonate
geführt und emailverkehr gehabt die irgendwas mit AVR, AVRDUDE, ARDUINO
zu tun haben (ausgenommen taiwanesische Seiten ;-)
Allerdings bin ich nicht weitergekommen!! Vielleicht liegt es auch an
mir... ! Noch immer kann ich nicht über ein Makefile/bzw. die Konsole
den Flash neu beschreiben!! --->> AARGGGHH!
Es scheint, als ob alle anderen mit der IDE arbeiten... :-(
Werde es aber mit deinem Vorschlag nochmal probieren!! VIELEN DANK
Hi
also mich würde das ja auch brennend interessieren, wie ich den arduino
von der command line aus programmieren kann, denn diese ide is wirklich
nicht der hammer.
ich hab mir mal den quellcode dieser ide angeschaut, irgendwie schauts
so aus, als ob die uisp und avrdude verwenden, aber ich bin mir nicht
sicher, denn ich kann leider kein java.
vielleicht kann sich irgendwer der java beherscht, die arduino ide
sourcen mal anschauen und herausfinden wie die den dort programmieren.
lg Andreas
Hallo,
Willst du den Programmcode über die Commandline schreiben oder nur ein
Programm in den Speicher laden für das Arduino ?
Falls du aber in dieser Richtung eine Lösung hast wäre ich für jeden Tip
dankbar.
Mit der IDE hast du recht... Mein Problem ist nämlich, dass ich eben
über die commandline programmupdates machen will! Und da hilft mir eine
IDE ziemlich wenig... :-(
Sagt mal leute, was ist das für eine Board?
Was ist da besonderes dran?
Ich sehe Videos, teileise wo auch eine VGA-karte damit angesprochen
wird.
Hmmm..., ich verstehe dieses kleine Ding nicht.
Gruss
Hatte das gleiche Problem. Mit folgender Zeile läuft bei mir alles
korrekt:
avrdude -pm168 -carduino -P/dev/ttyUSB0 -b19200
Uflash:w:ArduinoFirstStep.hex:a
Wichtig ist es den avrdude mit -c arduino NICHT mit -c stk500v1 laufen
zu lassen. Die Baudrate konnte ich max 19200 einstellen. Ansonsten ließ
sich mein Arduinoboard nicht programmieren.
Die Geschwindigkeit hängt vom Arduinoboard ab.
Siehe auch unter /{ARDUINIAPP}/hardware/arduino/boards.txt