Guten Abend!
Seit mehreren Wochen versuche ich verzweifelt, zwei atmega8 (tqfp auf
Adapterplatine gelötet) zu flashen, doch ich scheitere jedes mal beim
Programmieren. Also dachte ich, dass meine Lötkünste vielleicht keine
SMD Chips einschließen, also auf zu Conrad und drei atmega8 im dil28
gehäuse gekauft. Mit einem probiert -> selbes Problem :(
Ein paar Tage zuvor habe ich mit dem gleichen USB Lab einen attiny2313
erfolgreich geflasht, doch der hatte zu wenige Pins, um die zweite Farbe
der Matrix zu steuern.
Das Programm lief am tiny super, also habe ich ein neues Projekt im AVR
Studio erstellt, das Programm um eine weitere Farbe erweitert und
kompiliert -> kein Fehler :)
Auf den Button "Con", den AVR-ISP-mkII ausgewählt und mal testweise die
Signatur ausgelesen -> "Signature matches selected device" :)
In den Fuse Settings den Quarz auf 8MHz umgestellt -> auch kein Problem
Die anderen Fuses konnten auch problemlos gelesen werden.
Auf den "Program" Tab geklickt, dann auf "Erase Device" -> Kein Problem
Auf "..." in der Gruppe "Flash" und dann die richtige .hex Datei
ausgewählt, dann auf Program.
==> Dies dauert einige Sekunden und endet dann mit
"Programming FLASH ..... FAILED!"
"Leaving ...... OK!"
Und nebenbei poppt auch noch die Warnmeldung "ISP Mode Error" auf, die
mir sagt, dass ich die ISP Frequenz auf weniger als 1/4 des Taktes
stellen soll. Das sind momentan 8MHz, also sind 125kHz ISP Takt doch
auch wenig genug.
Ich habe bereits einen ähnlichen Thread gefunden
(Beitrag "Atmega8-Programmierung mit AVR USB Lab funktioniert nicht"), doch auch das hilft mir
nicht weiter, da die STK500v2 Firmware von meinem AVR Studio nicht
erkannt wird. (Kann auch am Windows 7 x64 liegen).
Die Firmwares spiele ich über einen Linux (Ubuntu) PC drauf, weil mir
das mit der Treibersignatur unter Windows zu umständlich wäre.
Ich dachte auch schon, dass vielleicht die rundum-Hardware stört, doch
erstens ging es mit dem tiny ja auch und zweitens habe ich alles
abgehängt (Steckbrett) und trotzdem kann ich den Prozessor noch nicht
flashen.
Die Pinbelegung habe ich momentan so:
______________
| \ / |
RESET -| 1 --- 28 |-
-| 2 27 |-
-| 3 26 |-
-| 4 25 |-
-| 5 24 |-
-| 6 23 |-
+5V -| 7 22 |- GND
GND -| 8 21 |-
-| 9 20 |- +5V
-|10 19 |- SCK
-|11 18 |- MISO
-|12 17 |- MOSI
-|13 16 |-
-|14 15 |-
|_____________|
Wäre dankbar, wenn jemand einen Tipp für mich hätte.
MfG Michael
Ist die Standardbeschaltung (Abblockkondensatoren, Widerstand am Reset)
vorhanden?
Ist ein externer Quarz mit seinen Kondensatoren angeschlossen?
Mit diesem USB Lab habe ich keine Erfahrung, wird über den auch die
Spannungsversorgung hergestellt beim programmieren?
Wenn die Signatur lesbar ist, ist zuerst einmal die ISP-Schnittstelle
OK.
Dann kann man als Nächstes die Fuses und die security-bits lesen.
Haben die wirklich alle Werte, die das Programmieren erlauben/erfordert
?
Dann, als nächstes, ein Primitivprogramm auf den Kontroller schreiben:
Zum Beispiel:
start:
ldi r16,0xff ;r16 = ff
out ddrb,r16 :port b als Ausgänge
Schleife:
inc r16
out portb,r16
rjmp Schleife
akzeptiert der Kontroller dieses Programm ?
Wenn ja, liefert er an port b Rechteckspannungen, Frequenz von bit zu
bit um den Faktor 2 ansteigend.
die sind zwar nur mit dem Scope zu kontrollieren,fürs Multimeter kommmt
ja U/2 raus
Eine kleine Falle ist, dass beim Assemblieren ein Fehler erkannt wird
und gar kein hex-file entsteht. Das System tut zwar so als ob es
programmieren würde und meldet "ISP...." obwohl der eigentliche Fehler
schon beim erarbeiten des .hex- file stattfand.
Johannes M. schrieb:
> Ist die Standardbeschaltung (Abblockkondensatoren, Widerstand am Reset)> vorhanden?> Ist ein externer Quarz mit seinen Kondensatoren angeschlossen?> Mit diesem USB Lab habe ich keine Erfahrung, wird über den auch die> Spannungsversorgung hergestellt beim programmieren?
Keine Abblockkondensatoren, 1k5 Widerstand am Reset (Der ist zwar recht
klein, sollte sich aber problemlos vom Programmer auf Masse ziehen
lassen, funktioniert auf jeden Fall beim tiny)
Kein externer Quarz, hab nur die Fuse vom Clock auf intern 8MHz 64ms
umgestellt.
Nein, auf der Platine wäre zwar ein Jumper, um das zu aktivieren, aber
ich versorge die Schaltung über die 5V vom USB Port.
> Haben die wirklich alle Werte, die das Programmieren erlauben/erfordert
?
Anbei ein Screenshot der Fuse-Bits
> Dann, als nächstes, ein Primitivprogramm auf den Kontroller schreiben:
Hab ich versucht, aber beim kompilieren gab es keine Fehler und das
Hex-File wurde erstellt, doch beim programmieren ging die grüne LED aus
(Was sich auch beim lesen oder schreiben der Fuse-Bits etc. tut) und
dann kam die Fehlermeldung wieder und die grüne LED ging wieder an.
Interessanter weise kommen am PortB trotzdem 2,3 - 2,5V raus. Seltsam,
oder?
Klicke ich wieder auf "Erase Device", dann liegen nur nich 0,2V an.
Das .hex-File wurde also erstellt und dürfte auch den Weg auf den IC
gefunden haben, aber seltsamer Weise gibt das AVR-Studio trotzdem einen
Fehler aus.
Das Matrix-Programm läuft aber dennoch nicht. Vielleicht mal das alte
.hex File löschen und nochmal probieren.
Auf jeden Fall schon mal Danke.
Wenn noch jemand weis, wo der Fehler liegen könnte...
MfG Michael
Wenn die Anschlüsse 2,3 .. 2,5V zeigen,lässt das schließen, dass der
Kontroller das Primitivprogramm ausführt und daher an den Bits von port
b toggelt.
Gerade wenn nach Programmieren auch verify gemacht wird, wirds dann ganz
rätselhaft.
Dann könnte es noch an Einbrüchen der Betriebsspannung liegen:
Stützkondensatoren und Leitungsführung überprüfen.
oder auch an Störsignalen an reset: mit 0,1uF und externem pullup
beschalten, damit reset weniger empfindlich wird.
Habe wie bereits erwähnt einen 1,5k Ohm Widerstand und jetzt auch noch
einen 100nF Folienkondensator zwischen Reset und 5V gehängt.
Gleicher Fehler.
EDIT: Auch ein 100nF Abblockkondensator zwischen pin 7 und 8 sind
wirkungslos.
Hatte jetzt mal Zeit zu testen, ob die Spannung abfällt und nein, der
USB-Port liefert dann während dem Programmieren statt 5,09V gleich
5,11V, also leider geht die Fehlersuche weiter.
Hat denn sonst niemand eine Idee?
Sonst keiner ein USB-Lab und das gleiche Problem?