Forum: Mikrocontroller und Digitale Elektronik Atmega32u4 über ISP programmieren


von Thomas M. (fatwhale)


Lesenswert?

Hallo,
ich versuche zur Zeit einen Atmega32u4 auf einem Breakout-Board zu 
programmieren. Leider regt sich da garnichts. Anfangs wollte ich einen 
Arduino Uno als ISP Programer verwenden, aber da tat sich nichts. 
Mittlerweile habe ich mir einen AVR-ISP geliehen, komme aber auch damit 
nicht voran.

Ich habe mir folgendes Gerät besorgt:
http://www.diamex.de/dxshop/USB-ISP-Programmer-fuer-Atmel-AVR

Ich habe eine .hex Datei mit Atmel Studio erstellt und versuche jetzt 
das Programm via AVRdude auf den Chip zu spielen. Auf einem Breadboard 
habe ich jetzt die SPI Pins des Atmega32u4 mit dem 10-Pin Header 
verbunden. Ich benutze die Chip Pins 9 (SCLK), 10 (MOSI), 11 (MISO), 13 
(Reset), 14 (VCC) und 15 (GND).

Ich habe die Treiber für den Programmer installiert und rufe auf dem 
.hex Verzeichnis AVRdude mit dem folgenden Befehl auf:

avrdude.exe -c avrisp -p m32u4 -U flash:w:Test.hexi

Leider krieg ich aber nur den Fehler:

avrdude.exe: stk500_getsync(): not in sync: resp=0x00

Was mache ich falsche? Ich habe es auch mit einem 16 Mhz Quarz und zwei 
22pF Kondensatoren versucht, aber das Ergebnis ist das gleiche.

EDIT:
Ich habe den Programmer jetzt mal auf avrispv2 gesetzt und bekomme die 
Nachricht:

avrdude.exe: stk500_2_ReceiveMessage(): timeout





EDIT2: Ok, ich glaube ich mache hier etwas gehörig falsch. Ich habe 
jetzt noch mit -P COM22 den Port des Programmers angegeben.

Meine Commando sieht jetzt wie folgt aus:

avrdude.exe -c avrispv2 -p m32u4 -U flash:w:Test.hexi -P COM22 -F

Der Fehler lautet:
avrdude.exe: stk500v2_command(): command failed
avrdude.exe: stk500v2_command(): unknown status 0xc9
avrdude.exe: stk500v2_program_enable(): cannot get connection status
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATmega32U4 is 1E 95 87
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will 
be perfo
rmed
             To disable this feature, specify the -D option.

avrdude.exe done.  Thank you.


Wie genau muss das ganze angeschlossen werden? Ich vermute ich habe hier 
sehr grundlegende Probleme...

: Bearbeitet durch User
von Fritz (Gast)


Lesenswert?

Das Teil behauptet, mit dem STK500 v2 und dem AVRISP v2 kompatibel 
zu sein. Wie wäre es, mal eine dieser beiden Einstellungen zu versuchen?

Oder den Geiz überwinden und einen originalen Programmer verwenden. 
Spart regelmäßig kostbare Lebenszeit ...

von Thomas M. (fatwhale)


Lesenswert?

Ich habe da nochmal was geeditet, während der Beitrag grade kam, hier 
nochmal für die Chronologie:

Ok, ich glaube ich mache hier etwas gehörig falsch. Ich habe
jetzt noch mit -P COM22 den Port des Programmers angegeben.

Meine Commando sieht jetzt wie folgt aus:

avrdude.exe -c avrispv2 -p m32u4 -U flash:w:Test.hexi -P COM22 -F

Der Fehler lautet:
avrdude.exe: stk500v2_command(): command failed
avrdude.exe: stk500v2_command(): unknown status 0xc9
avrdude.exe: stk500v2_program_enable(): cannot get connection status
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
avrdude.exe: Device signature = 0x000000
avrdude.exe: Yikes!  Invalid device signature.
avrdude.exe: Expected signature for ATmega32U4 is 1E 95 87
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will
be perfo
rmed
             To disable this feature, specify the -D option.

avrdude.exe done.  Thank you.


Wie genau muss das ganze angeschlossen werden? Ich vermute ich habe hier
sehr grundlegende Probleme...

von Uwe (de0508)


Lesenswert?

Hallo Thomas,

wie sieht denn die Hardware aus ?

Hast Du das gesamte Datenblatt gelesen und gesehen, dass du immer einen 
16MHz Quarz benötigst und Hardware Boot aktiviert ist ?

Dies muss man erst mal deaktivieren, bevor man einen neuen Bootloader 
installieren kannst.

: Bearbeitet durch User
von Thomas M. (fatwhale)


Angehängte Dateien:

Lesenswert?

Ich will eigentlich gar keinen Bootloader installieren, sondern den Chip 
generell per ISP programmieren. Ich habe mal meine jetzige Schaltung 
hochgeladen. Fehlt da noch was? Und muss ich Hardware Boot deaktivieren, 
wenn ich einfach nur ein Programm per ISP auf den Chip spielen will? 
Würde mich über (evtl anstrengende) Hilfe sehr freuen. Ich will das 
unbedingt alles lernen.

: Bearbeitet durch User
von Thomas Z. (thomas_z41)


Lesenswert?

Du solltest alle GND und VCC Pins anschließen, dann sollte noch ein 
PullUp Widerstand an den RESET Pin. Und der übliche Abblockkondensator 
(100nF) zwischen VCC und GND wäre auch nicht verkehrt.

Ich hatte beim Atmega8u2 die Erfahrung gemacht dass ich erst mal ein 
Chiperase (avrdude -e) machen muss bevor ich ihn über ISP programmieren 
konnte, beim atmega32u4 kann das aber anders sein.

Aber wofür nimmt man einen atmega32u4 wenn man kein USB benutzt?

von Thomas M. (fatwhale)


Lesenswert?

Leider geht es danach auch nicht. Mal eine dumme Frage: Muss ich den 
Chip noch separat mit Strom versorgen oder kriegt er das alles über den 
Programmer?

von Bastler (Gast)


Lesenswert?

Der Originalprogrammer meldet in "Orange", daß keine Versorgen am Target 
anliegt. Reicht diese Info?

von Bastler (Gast)


Lesenswert?

Diese sch... Autokorrektur......
Versorgung hatte ich eigentlich getippt!

von Hubert G. (hubertg)


Lesenswert?

Laut Beschreibung gibt es einen Jumper damit das Target mit Strom 
versorgt wird.

von Thomas M. (fatwhale)


Lesenswert?

Ja, ich habe grad gesehen ich kann das mit den Schaltern einstellen.
Ich konnte das Problem jetzt lösen. Die Lösung war sehr trottelig, aber 
auch heimtückisch. Das Breakoutboard verknüpft die Vcc und Gnd Leitung 
schon auf auf dem PCB unter dem Chip. Dadurch sind Pin 14 (Vcc) und Pin 
15 (Gnd) gar nicht nach außen auf einen Pin geführt. Ich habe den Quarz 
dadurch immer um 2 Pins verschoben an den Chip angesteckt. (an Pins 18 
und 19 statt 16 und 17)

Danke für die Hilfe.

Ich habe noch eine generelle Frage. Muss ich wirklich immer alle Vcc und 
Gnd Leitungen mit der Stromversorgung verbinden? Das macht das 
Board-Design stellenweise immer problematisch, wenn man auf Jumper 
verzichten will. (und doppelseitig hab ich noch nicht gemacht)

von Uwe (Gast)


Lesenswert?

Hallo Thomas,

siehe Datenblatt, man kann es nicht genügend oft schreiben.

Mit Deiner Unerfahrenheit würde ich mir ein fertiges kaufen:

http://www.ehajo.de/baus%C3%A4tze/bedrahtete-baus%C3%A4tze/atmega32u4-breakout-board.html?search=atmega32u4

von Thomas M. (fatwhale)


Lesenswert?

Der Hinweis auf das Datenblatt mag für jemanden mit Erfahrung ein 
sinnvoller Schritt sein, aber für mich ist das Datenblatt einfach noch 
ein sehr erschlagendes Dokument. Irgendwann sollte ich das 
Datenblattstudium natürlich routinierter drauf haben, aber ich habe 
diese Frage gestellt um zu lernen. Und für den Lernprozess ist eine 
geleitete Anweisung schon immer sinnvoller gewesen, als die rohe 
Fakten-Predigt. Das kann man ebenfalls nicht oft genug betonen.

Ich will langsam aber sicher meine eigenen Boards designen und dem 
ganzen nicht mehr mit fertigen Boards aus Weg gehen. Auf das Datenblatt 
zu verweisen ist da selbstverständlich angebracht. Aber ich muss mich 
auch irgendwie motivieren und da hilft eine Frage im Forum mehr, als das 
schnöde Studieren des Datenblatts.

von Hubert G. (hubertg)


Lesenswert?

Schau dir das Schaltbild des genannten Breakout-Bords an. Die 
Beschaltung der GND und VCC-Pins ist sicher nicht von ungefähr.

von c-hater (Gast)


Lesenswert?

Thomas M. schrieb:

> Aber ich muss mich
> auch irgendwie motivieren und da hilft eine Frage im Forum mehr, als das
> schnöde Studieren des Datenblatts.

Wenn das so ist, hast du bereits jetzt verloren.

Ein guter Entwickler kann man nur sein, wenn man aus eigenem echtem 
Interesse ein Datenblatt liest. Und dann braucht man sich auch nicht 
dazu zu "motivieren", das liest sich dann von ganz allein, genau wie 
eine spannender Krimi.

Im Allgemeinen ist es einfach so, daß nur zwei Menschengruppen Probleme 
bei der Datenblattlektüre haben: Die Dummen und die Faulen. Wirklich 
dumm scheinst du nicht zu sein, also wird die Wahl doch irgendwie ganz 
schön eng...

von Thomas M. (fatwhale)


Lesenswert?

Ich will hier jetzt keine Grundsatzdiskussion vom Zaun brechen und 
bedanke mich nochmal für die Hilfe. Ich lese mir jetzt einen 
ausführlichen Artikel über Fuses durch und hoffe, dass ich nichts kaputt 
mache :)

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.