ich habe einen Arduino nano 3. Das Blink-Beispiel mit der IDE klappt. Nun möchte ich jedoch dasselbe ohne die IDE mit einem Makefile bewerkstelligen. In der main.c wird nur der Portpin wo die LED hängt ein/ausgeschaltet mit Delay. Beim Upload mit "make program" kommt die obige Meldung. Die serielle Schnittstelle findet er. Danach klemmt es dann. In der Arduino IDE sieht der Aufruf von AVRDUDE so aus: C:\Programme\Arduino\hardware/tools/avr/bin/avrdude -CC:\Programme\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM10 -b57600 -D -Uflash:w:C:\DOKUME~1\notebook\LOKALE~1\Temp\build7349331130724293468.tm p\entlader_1_c.cpp.hex:i avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "C:\Programme\Arduino\hardware/tools/avr/etc/avrdude.conf" Using Port : \\.\COM10 Using Programmer : arduino Overriding Baud Rate : 57600 avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Recv: . [14] avrdude: Recv: . [10] AVR Part : ATMEGA328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Daher habe ich versucht das Makefile daran anzupassen. Offenbar klemmt es noch. Der Teil im Makefile zu AVRDUDE sieht so aus: UPLOAD_RATE = 57600 AVRDUDE_PROGRAMMER = arduino AVRDUDE_PORT = com10 # Arduino nano an COM10 AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) # Increase verbosity level. Please use this when submitting bug # reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> # to submit bug reports. AVRDUDE_FLAGS += -v -v # Program the device. program: $(TARGET).hex $(TARGET).eep $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) was habe ich falsch gemacht?
Matthias W. schrieb: > $(TARGET).hex Was heißt Error1 ? Es könnte sein, dass (TARGET) nicht gefunden wird, oder den falschen Namen hat, ist nur eine Vermutung.
lutz h. schrieb: > Es könnte sein, dass (TARGET) nicht gefunden wird, oder den falschen > Namen hat, ist nur eine Vermutung. Danke Lutz !
ein Unterschied sind die conf-files avrdude.conf. Das eine liegt ja im Programme-Ordner bei der Arduino-Umgebung und das andere bei der WinAVR-Umgebung. Vielleicht muss letzteres noch angepasst werden?
in den AVRDUDE.conf-Dateien scheinen die Definitionen des ATmega328P gleich zu sein. In der einen Datei liegt es ab Zeile 9233, in der anderen bei 8545 - selbe "ID" und selbe "DESC". Auch den Programmer "arduino" gibt es bei beiden: # PROGRAMMER DEFINITIONS programmer id = "arduino"; desc = "Arduino"; type = arduino; ; daran sollte es also nicht liegen.
lutz h. schrieb: > Es könnte sein, dass (TARGET) nicht gefunden wird, oder den falschen > Namen hat, ist nur eine Vermutung. TARGET = main steht im Makefile. Das Übersetzen klappt fehlerfrei. Siehe Datei. Daran sollte es nicht liegen. Hat jemand eine Idee?
Matthias W. schrieb: > Hat jemand eine Idee? make gibt durch "Error 1" nur den Fehler von avrdude weiter. d.h. das Flashen geht nicht. http://www.arduinoforum.de/arduino-Thread-Upload-nicht-m%C3%B6glich-avrdude-stk500-getsync-not-in-sync-resp-0x00
chester schrieb: > make gibt durch "Error 1" nur den Fehler von avrdude weiter. > d.h. das Flashen geht nicht. die Frage ist warum das Flashen nicht über dieses Make geht. Von der Arduino-Umgebung aus geht es ja. Auch diese nutzt AVRDUDE. Ich nehme dieselben Parameter (port COM10, programmer arduino) und doch klemmt es.
Ist nur eine vermutung, da ich ähnliche sync-fehler mit avrdude auch schonmal beobachtet hatte: Hast du überprüft, dass keine andere Anwendung auf den seriellen Port zugreift wähend du mit avrdude flasht? Unter Linux hatte ich wie gesagt einen ähnlichen sync-fehler während ich via minicom mit der Schnittstelle verbunden war.
Matthias W. schrieb: > die Frage ist warum das Flashen nicht über dieses Make geht. Von der jetzt versteh ich das Problem. fakt ist, dass make avrdude version 5.10 verwendet und dass arduino die version 5.11 von avrdude verwendet. also im Makefile den 5.11 pfad eintragen.
rred schrieb: > Ist nur eine vermutung, da ich ähnliche sync-fehler mit > avrdude auch schonmal beobachtet hatte: > Hast du überprüft, dass keine andere Anwendung auf den seriellen Port > zugreift wähend du mit avrdude flasht? Danke für den Hinweis. Meines Wissens sollte keine andere Anwendung zugreifen. Es ist jedoch so daß ich das Arduino-IDE-Fenster noch offen hatte während des Aufrufens des Make von WinAVR. Es schien jedoch COM10 korrekt erkannt zu werden. Ich kann das Fenster der IDE schließen und schauen was dann passiert.
chester schrieb: > jetzt versteh ich das Problem. prima ! Danke. > fakt ist, dass make avrdude version 5.10 verwendet > und dass arduino die version 5.11 von avrdude verwendet. Danke für den wertvollen Hinweis. Es müsste doch möglich sein bei WinAVR den neueren AVRDUDE einzuspielen? Leider gibt es ja seit 2010 kein neueres WinAVR-Paket mehr. > also im Makefile den 5.11 pfad eintragen. und wenn ich das neue AVRDUDE einfach herüberkopiere? Das sollte doch nur eine exe-Datei sein?
Matthias W. schrieb: > und wenn ich das neue AVRDUDE einfach herüberkopiere? Das sollte doch > nur eine exe-Datei sein? "herüberkopieren geht", wobei du avrdude.exe UND avrdude.conf ersetzen musst.
Man kann Eclipse verwenden, dort ist die Unterstützung des AVR-Dude für Arduino gleich mit drinn: Beitrag "Arduino mit Eclipse AVR-gcc Plugin programmieren"
chester schrieb: > "herüberkopieren geht", wobei du avrdude.exe UND avrdude.conf ersetzen > musst. Danke. Habe ich gerade gemacht.
chris_ schrieb: > Man kann Eclipse verwenden, dort ist die Unterstützung des AVR-Dude für > Arduino gleich mit drinn: > Beitrag "Arduino mit Eclipse AVR-gcc Plugin programmieren" Danke für den Hinweis Chris.
chester schrieb: > "herüberkopieren geht", wobei du avrdude.exe UND avrdude.conf ersetzen > musst. beides gemacht. Meldung leider wie zuvor - nur daß diesmal die 5.11 gemeldet wird. Mit der sollte es ja gehen. Die Arduino-IDE arbeitet ja auch damit. Muss ich wirklich gesondert noch den Pfad der avrdude.conf angeben, so wie die Arduino-Leute das gemacht haben? Im Makefile von Jörg Wunsch war das ja nicht so angegeben.
avrdude.exe und avrdude.conf sind nun also angepasst. Das Aufrufen von Com10 geht auch. So scheint es. Der Unterschied ist daß + bei Arduino steht: Using Port: \\.\COM10 und + bei WinAVR steht: Using Port: com10. Es gibt Unterschiede im Aufruf von avrdude: C:\Programme\Arduino\hardware/tools/avr/bin/avrdude -CC:\Programme\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM10 -b57600 -D -Uflash:w:C:\DOKUME~1\notebook\LOKALE~1\Temp\build7349331130724293468.tm p\entlader_1_c.cpp.hex:i und im Vergleich dazu WinAVR über Makefile, das klemmt: avrdude -p atmega328p -P com10 -c arduino -v -v -U flash:w:main.hex Auffällig ist daß beim Make von WinAVR beim Aufruf von avrdude nach den Optionen noch ein Space folgt im Vergleich zum Arduino-Aufruf von avrdude. Am Ende folgt bei der Arduino-Zeile noch ein ":i". Das fehlt bei WinAVR.
jede dieser 3 Zeilen scheint wahlweise zu funktionieren: AVRDUDE_PORT = com10 # Arduino nano an COM10 AVRDUDE_PORT = COM10 # Arduino nano an COM10 AVRDUDE_PORT = \\\.\COM10 # Arduino nano an COM10 nur leider ändert das an der berühmten Fehlermeldung stk500_getsync(): not in sync: resp=0x00 nichts.
>nur leider ändert das an der berühmten Fehlermeldung >stk500_getsync(): not in sync: resp=0x00 nichts. Ist die Schnittstelle eventuell schon wo anders geöffnet und damit blockiert? Das passiert mir immer wieder, wenn ich ein Terminal Programm verwende und mit AVR-Dude flashen will.
auch das Herausnehmen der Space im Makefile hat nichts gebracht. Noch immer dieser Fehler: stk500_getsync(): not in sync: resp=0x00
Die Codierung des Makefile im Notepad++ steht auf ANSI. Kann es daran liegen? Soll UTF-8 ohne BOM eingestellt werden?
Franz schrieb: > Ist die Schnittstelle eventuell schon wo anders geöffnet und damit > blockiert? gute Frage, Franz. Mir ist da nichts bewusst. Die Arduino-IDE habe ich ja geschlossen. 3 Textdokumente sind offen. Die sollten nicht auf COM10 wollen. Ein Dos-Fenster ist auf. > Das passiert mir immer wieder, wenn ich ein Terminal Programm verwende > und mit AVR-Dude flashen will. ja. Guter Hinweis. Es ist kein hterm an und kein Bray-Terminal. Ich kann natürlich den Rechner mal neu booten und dann nur das Make noch mal machen und schauen.
neu gebootet, Makefile aufgerufen. Fehler wie gehabt. Hier das Makefile, das ich unter WinAVR verwende und das main.c. So ein Hexenwerk sollte das doch nicht sein.
als Treiber für den FTDI-Baustein habe ich einen Download direkt von der FTDI-Seite benutzt. Unter der Arduino-IDE geht das ja auch.
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.