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!!
Was für einen Programmer beinhaltet denn das Arduino? Du musst eine passende -c Option auswählen bei avrdude.
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
All documentation files usually end up in .c... Wenn ich mir deren Bootloader-Sourcecode ansehe, müsste das Teil STK500(v1)-Protokoll sprechen, also
1 | -c stk500v1 |
angeben.
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...
1 | #!/usr/bin/python
|
2 | |
3 | import commands |
4 | import serial,time |
5 | |
6 | s = serial.Serial('/dev/tty.ARDUINOBT-BluetoothSeri-1') |
7 | |
8 | |
9 | while(True): |
10 | s.setDTR(0) |
11 | # s.setRTS(0)
|
12 | print("LOW") |
13 | time.sleep(1) |
14 | s.setDTR(1) |
15 | # s.setRTS(1)
|
16 | print("HIGH") |
17 | time.sleep(1) |
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... :-(
Nun, der Thread ist ja schon recht alt, aber falls mal wieder jemand über dieses Thema stolpert, hier ist mein generisches Arduino Makefile: http://code.google.com/p/dogm128/source/browse/libraries/Dogm/examples/Breakorino/Makefile Beste Grüße, Oliver
Nun, der Thread ist noch älter geworden. Meine "zu Fuß" Losung: : avr-gcc -c -x assembler-with-cpp -mmcu=atmega328p sender.s -o sender.o ; avr-ld sender.o -o sender.elf ; avr-objcopy -O ihex sender.elf sender.hex ; avrdude -p m328p -c arduino -b 57600 -P /dev/ttyUSB0 -U flash:w:sender.hex:i hilft vielleicht weiter Grüße Reiner
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
funkeld schrieb: > Sagt mal leute, was ist das für eine Board? "Microcontroller für Günstler" oder sowas. ;-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.