Forum: Mikrocontroller und Digitale Elektronik Atmega8 lässt sich nicht programmieren (USB Lab)


von Michael \. (pixelmonster) Benutzerseite


Lesenswert?

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

von Michael \. (pixelmonster) Benutzerseite


Lesenswert?

Hat denn niemand eine Idee?

von Johannes M. (johannesm)


Lesenswert?

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?

von Peter R. (pnu)


Lesenswert?

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.

von Michael \. (pixelmonster) Benutzerseite


Lesenswert?

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

von Michael \. (pixelmonster) Benutzerseite


Angehängte Dateien:

Lesenswert?

Sorry, hier der Screenshot

von Peter R. (pnu)


Lesenswert?

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.

von Michael \. (pixelmonster) Benutzerseite


Lesenswert?

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.

von Michael B. (michael_b39)


Lesenswert?

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?

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.