ISP funktioniert nur beim ersten Mal

#1740654
Lesenswert?

Hallo zusammen!

Ich habe ein eigenartiges Problem beim Programmieren meines ATmega8. Ich 
verwende einen AVR Dragon im ISP-Modus, dieser ist mit meinem 
selbstgebauten Testboard verbunden. Dort drin sitzt ein ATmega8.

Das Problem: Das ISP funktioniert nicht richtig. Der erste ISP Befehl 
nach einem Reset wird korrekt ausgeführt und liefert das richtige 
Resultat. Danach kommt aber nur noch 0x00 zurück, alle weiteren ISP 
Befehle liefern nur noch 0x00 bis ich den Controller wieder resette 
(Reset Pin Low setzen oder Spannungsversorgung abtrennen).

Beispiel: Ich schliesse das Board an, lese die Device Signature aus, 
diese kommt korrekt als 0x1E 0x93 0x07 zurück. Dann klicke ich nochmals 
auf <Read Signature>, diesmal kommt nur 0x00 0x01 0x02 retour. Ab jetzt 
kommt nur noch 0x00 0x01 0x02 zurück.
Das gleiche bei den Fuses, das erste Mal lesen ist korrekt, ab dann nur 
noch 0x00 0x00. Auch das Schreiben der Fuses funktioniert, aber nur beim 
ersten Mal.

Was ich schon versucht habe:
- ATmega8 durch anderen ATmega8 und einen ATmega8A ersetzt, Resultat 
bleibt gleich.
- MCU direkt in ZIF-Sockel auf dem Dragon programmiert, Resultat bleibt 
gleich.
- Firmware im AVRDragon neu uploaded, Resultat bleibt gleich.

Es scheint fast, als ob es an meinem Dragon liegt. Ich habe allerdings 
sonst nur noch ein JTAGICE mkII zum Testen, und dieser unterstützt den 
ATmega8 nicht.

Kann mir jemand weiterhelfen? Hat jemand eine Idee was hier los sein 
könnte?

Herzlichen Dank!
David Gschwend
#1740967
Lesenswert?

Die ISP Frequenz stimmt schon, an der kanns ja auch nicht wirklich 
liegen wenn der erste Befehl jeweils funktioniert.
ABER: Am Reset-Pin habe ich komischerweise nur 0.9V, sobald der 
ISP-Stecker eingesteckt wird!? Am Reset-Pin hängt sonst nur noch ein 
10k-Pullup nach 3.3V. Also doch die Reset-Schaltung vom AVR Dragon 
defekt? Oder zu schwach um den 10k-Pullup nach unten zu ziehen?
Gast #1766604
Lesenswert?

Hi,

ich habe hier bei einer Serienprüfung das gl. Phänomen mit dem Mega32.

Etwa jeder 5. Controller lässt sich nur einmal auslesen und dann meldet 
er als Signatur 0x00 0x01 0x02. Nach wegnahme und wiederanlegen der 
Spannung funktioniert wieder ein einziges mal das auslesen der Fuses und 
dann ist wieder Schicht im Schacht.. :-(

Irgendwelche Ideen?

Programmiert wird über AVRISPMKII und WinAVR - beides in altuellen 
Softwareständen.
#2221135
Lesenswert?

Hallo!

Ich hab nach einiger Zeit aufgegeben und benutze jetzt meinen Dragon nur 
noch für JTAG auf den grösseren Controllern. Was vielleicht helfen 
könnte: http://www.aplomb.nl/TechStuff/Dragon/Dragon.html scheint genau 
dieses Problem zu behandeln. Ganz unten auf der Seite hat es einen Fix, 
ich hab es jedoch nicht probiert.
Für ISP hab ich mir inzwischen einen USBASP gebaut 
(http://www.bastli.ethz.ch/index.php?page=bausaetze%2FuJTAG). 
Funktioniert tadellos, wenn auch leider ohne DebugWire.

Grüsse
David
#2221200
Lesenswert?

Hi,

vielen Dank für die Tipps. Da ich jetzt eh schon einen Tag versucht hab, 
durch FW-Updates, neues AVR dem Fehler auf die Spur zu kommen, hab ich 
mal den Dragonlair-Tip versucht.

Leider ohne Erfolg. Verhalten wie vorher.


Übrigens geht das Auslöten ganz einfach mit einem kleinen Trick: 
Vorsichtig mit einer scharfen Knipszange den oberen Teil des 
Chipgehäuses abzwicken um eine gute Wärmeleitung zum Thermalpad zu 
haben. Dann einen Tropfen Lötzinn auf den freigelegten Chip und die 
Beinchen und mit Absauger das Tierchen mit einem Saug entfernen.

Wie gesagt, mir hats leider nix gebracht, außer, daß die 
Referenzspannung vom Target nun 0.1V weniger angezeigt wird.

Ich hab wohl 50€ in den Sand gesetzt. Ich würde ja sogar zu einem 
teureren JTAG/ISP Programmer greifen, weiß aber nicht ob die genau so 
empfindlich sind.

MfG,
Andreas
#2313210
Lesenswert?

So, ich bin jetzt auch "stolzer" Besitzer eines Dragon...

Die Gänsefüßchen, weil ich dasselbe Problem habe (der Drache is keine 5 
h alt...).

Zur Sache:
Ich habe im Pollin-Eval-Board v2.01 (noch ohne die Entprell-Mod) mal die 
Spannung von Reset - GND nachgeschaut, wenn er die falsche (0x00 0x01 
0x02) Signatur über ISP liest, liegt sie zwischen -0,3..-0,4 V.
Wenn er die richtige Signatur liest, sind es ca. 0,4..0,6 V.

Das komische dabei ist, wenn ich die Target-Spannung (geht auf dem Board 
nur bis max 4,6 V) auf 4,0 V oder niedriger senke, kann ich durch Druck 
auf einen der drei Taster unten die richtige Spannung zw. Reset und GND 
wiederherstellen.
Somit muss ich nur nach jedem Mausklick, bei dem etwas auf dem ISP 
geschieht, einen Taster drücken und kann weiter machen.

Das ganze ist reproduzierbar bei Target-Spannungen <= 4,0 V.
Getestet habe ich das mit nem ATmega16-16 und nem ATtiny2313-20.

JTAG funzt jedoch ohne Probleme bei 2 MHz.

Meine Kabel sind ca. 50 cm lang.

Die Dragon-Revision scheint A08-0396.D zu sein.
Auf dem Aufkleber mit der Seriennummer steht jedoch A09-0062/10.

//edith:
Spontan fallen mir 2 Fragen dazu ein:
Kann ich das mit nem Widerstand auf der Reset-Leitung am ISP-Kabel 
reparieren?
Kann ich das sonstwie schaltungstechnisch nutzen um den Drachen wieder 
zur korrekten Funktion zu überreden?
Gast #2313217
Lesenswert?

Hi

>Das ganze ist reproduzierbar bei Target-Spannungen <= 4,0 V.

Was ist jetzt bei dir 'Targetspannung'? Der Dragon liefert keine 
Spannung. Du kannst nur die Spannung vom Board messen. Aber nicht mit 
dem Dragon einstellen. Damit der Dragon funktioniert muss dein Board mit 
Spannung versorgt werden und die Spannung vom Board muss am 
ISP-Anschluss anliegen.

MfG Spess
#2313225
Lesenswert?

Ist mir klar.
Sorry wenns verquer ausgedrückt ist.

Target-Spannung ist die Spannung, die ich am Pollin-Board einspeise und 
die der Dragon ans AVR Studio zurückliefert.

Ich schalte an J5 des Pollin-Boards mein Netzteil 0..30 V DC.
Damit stelle ich Spannungen von 3..12 V ein, der LM7805 schraubt die ja 
auf 5 V runter und die nachgerichtete Gleichrichtung (zwar zwecklos, 
aber naja) knapst sich nochmals 0,4 V ab.
Deshalb bekomme ich maximal 4,6 V.

Stelle ich am Netzteil eine Spannung ein, bei der der LM7805 geringere 
Spannungen als 4 V nach der Gleichrichtung erzeugt, kann ich mit der 
"superduper"-Hardware-Entprellung scheinbar irgendwas machen, was die 
negative Spannung zw. Reset und GND wieder umdreht.

Somit kann ich über ISP wieder 1x etwas tun und muss dann wieder einen 
Taster drücken.
Gast #2313253
Lesenswert?

Offenbar liegt die Masse deines ISP-Anschlusses nicht auf der Masse des 
AVR sondern an Eingang wo dein Gleichrichter nachgeschaltet ist. 
Ansonsten können dort keine negativen Spannungen auftreten.

Wie wäre es mal mit einer vernünftigen Spannungsversorgung bzw. wieso um 
alles in der Welt hängt da ein Gleichrichter hinter dem 7805?

Dem 7805 weniger als 7 V am Eingang zu geben setzt ihn natürlich auch 
völlig ausser Gefecht, er kann nichts mehr regeln.
Gast #2313257
Lesenswert?

Hi

Ehrlich gesagt würde ich auf einen Fehler auf dem Pollin Board tippen. 
Der Dragon zieht RST nur während der Programmierung nach GND. Ansonsten 
muss RST High sein.
Den von dir gemessenen -0,3..-0,4 V bzw. 0,4..0,6 V wurde ich nur sehr 
bedingt eine Bedeutung zumessen. Das ist beides Low und liegt innerhalb 
des erlaubten Bereichs. An einem anderen Messpunkt für GND kann das 
schon anders aussehen. Ich habe mir mal schnell das Schaltbild deines 
(mir ansonsten nur vom Hörensagen bekannten) Boards angesehen. An deiner 
Stelle würde ich mal T1 auslöten. Damit hast du an der Resetleitung nur 
noch den 10k-PullUp. Und überprüfe noch mal dein Kabel 6Pin -> 10Pin 
ISP.

MfG Spess
#2313262
Lesenswert?

*D'OH*
VOR dem 7805...
Mein Fehler...

Das könnte also bedeuten, dass der Dragon garnicht kaputt ist und ich 
einfach nur aus demselben USB-Hub in der der Dragon steckt, die 5 V fürs 
Pollin-Board ziehen muss?

Das ist doch Quatsch, das würde den Sinn von ISP doch ad absurdum 
führen, wenn ich das Target mit derselben Spannung wie den Dragon 
versorgen muss.
Gast #2313270
Lesenswert?

Das Board muss bzw. sollte nicht aus einem USB-Hub gespeist werden 
(Ansonsten kannst du auch direkt am Dragon die Targetversorgung per 
Steckbrücke aktivieren).

Das Pollin-Board muss auch nicht mit 5V versorgt werden, es hat 
schliesslich seinen 7805 drauf und braucht mindestens 8V (da noch der 
Gleichrichter drauf ist).
Hauptsache die Massen von Board und Dragon sind über den ISP-Stecker 
verbunden und er AVR korrekt mit Spannung versorgt.

Gehe erstmal den Hinweisen von spess53 nach, was die Spannung am 
Reset-Pin betrifft.
#2313423
Lesenswert?

Ook.

Transi rausgerissen, Messpunkte vom Tansi genommen -> selbes Prob.

Habe meinen ZIF in den Dragon eingelötet und aufm Dragon ISP 
verkabelt...
geht *NARF*

Wird wohl echt das Pollin-Board sein...
Werde im Laufe der Woche ein Lochraster mit Sockel für ISP aufbauen um 
zu sehen obs am Kabel liegt.
Melde mich wieder.

Ansonsten noch einen schönen Sonntag und danke für die Tipps!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren