avrdude: stk500v2_ReceiveMessage(): timeout

Hallo!

Vornerweg: Ich habe erst damit begonnen mich mit Arduino zurechtzufinden und befinde mich quasi noch in der Startphase :wink:

Auf jeden Fall wollte ich für ein Bastelprojekt einen ATMEGA8535 benutzen und mit Hilfe meines Arduino Unos programmieren.
Beim Testen erhalte ich jedoch folgende Fehlermeldung:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
...

Vorgegangen bin ich wie folgt:

zuerst besorgte ich mir die Daten für Arduino/hardware (hier: Alternate CORE files for Arduino)
dann verband ich die Pins wie folgendermaßen:

Arduino - ATMEGA8535
5V - VCC(pin10)
pin10 - reset (pin9)
pin11 - mosi (pin8)
pin12 - miso (pin7)
pin13 - sck (pin6)
gnd - gnd(pin31)

hiernach lud ich den
ArduinoISP Sketch auf den Arduino Uni, wählte als Board den ATMEGA aus, als Programmer Arduino as ISP aus.

Beim Versuch den vorgefertigten Blink Sketch zu laden, erhielt ich die oben genannte Fehlermeldung.

Andere Microcontroller kann ich weiterhin problemlos programmieren.

Ich hoffe, ihr könnt mir helfen :slight_smile:

Die Fehlermeldung ist sehr interessant, denn in meinem programmers.txt steht folgender Eintrag:

arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1
arduinoisp.speed=19200

Somit müsste das Protokoll stk500v1 gewählt werden, wenn als Programmer "Arduino as ISP" ausgewählt ist. Kannst Du in den Voreinstellungen der IDE mal die Option ankreuzen, die etwas ausführlicheren Output beim Upload liefert (in der englischen Version heisst das "Show verbose output during upload"). Dort siehst Du dann einen "avrdude"-Aufruf. Kopiere den und poste den ganzen String hier.

wählte als Board den ATMEGA aus

Ich hoffe mal, das soll heissen "den Arduino-Test-Atmega8535 aus".

Kann es sein, dass Du "Upload" anstatt "Upload using programmer" für den Upload ausgewählt hast? Das ginge dann nämlich nicht, da ja noch kein Bootloader auf dem ATmega8535 ist und Du ihn ja auch nicht über die serielle Schnittstelle updaten willst.

Lynax:
Arduino - ATMEGA8535
5V - VCC(pin10)
pin10 - reset (pin9)
pin11 - mosi (pin8)
pin12 - miso (pin7)
pin13 - sck (pin6)
gnd - gnd(pin31)

Hallo,

Lt. Atmel-Datenblatt hat der 8535 MOSI an Pin 6 und SCK an Pin 8. GND würde ich an Pin 11 anschließen. Da musst Du evtl. mal die Verkabelung prüfen.

Hast Du einen 10µF-Elko am Arduino zwischen Reset und GND?

Gruß,
Ralf

Hi!

es hat hingehauen!
Mit Upload using programmer lief alles so, wie es sollte.

Vielen lieben Dank!

darf ich fragen wie es jetzt genau hingehauen hat?

Ich sitze ebenfalls auf einem ATMega8535, habe mir dieselben Daten von avr-developers.com geholt. Jetzt will ich den Bootloader installieren - hat das funktioniert? Dabei bekomme ich nämlich die Fehlermeldung:
"efuse" memory type not defined for part "ATMEGA8535"

Pins wie beschrieben angeschlossen (MOSI-6, MISO-7, SCK-8, RESET-9, Vcc-10 & Gnd-11) + 31 (GND) auf Gnd und 30 (AVCC) auf 5V.
Dazu noch einen 10k Widerstand zwischen Reset und 5V. Den ArduinoISP sketch raufgeladen, ATMega8535 ausgewählt, Arduino as ISP als Programmer und "Bootloader installieren".

Genau dieselbe Konfiguration hab ich zum bootloaden eines ATMega328P-PU verwendet und das hat tadellos funktioniert.
Ich verwende übrigens einen Arduino MEGA als Programmer, die Pins (SCK, MISO, ...) sind entsprechend anders, aber das hat ja beim ATMega328P-PU auch hingehauen, daran sollte es also nicht liegen.

Falls es nicht das Bootloaden war - mit welcher Konfiguration lässt sich der Chip ohne Bootloader programmieren? Hätte geglaubt das ist nicht möglich?

schon einmal danke für jede Antwort
wiseman

Hast Du denn einen Bootloader für den ATmega8535 erstellt? Du kannst nicht den ATmega328-Bootloader auf einen 8535er laden.

Ich hatte geglaubt dass der Bootloader bei dem Hardware-Paket dabei ist, mir ist klar dass ich den vom 32er nicht nehmen kann
selber geschrieben hab ich keinen, wüsste auch nicht wie das geht...

So wird der Bootloader in den Core-Files von avr-developers.com definiert:

arduino_atmega8535.bootloader.file=stk500boot_v2_notdefined.hex

Kurz gesagt, ein Bootloader wird nicht zur Verfügung gestellt. Entweder schreibst Du einen der vorhandenen selbst um oder Du verzichtest ganz auf ihn und lädst immer per ICSP-Programmer hoch.

danke für die Antwort!

noch eine letzte Frage: wenn ich das Programm direkt hinauflade, kann ich es in "normalem" Arduino-Code verfassen, e.g. die entsprechenden Pins ansteuern? Bzw. wie ist dann überhaupt die Pinaufteilung wenn der 8535 nicht direkt unterstützt wird?

danke, lg
wiseman

Normaler Arduino Code ja, ggf. musst du aber die #defines der Pins anpassen.

danke! :slight_smile: