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
so ein ähnliches problem hatte ich auch mal, mach mal ein erase vorm programmieren. bei mir lags damals am avrisp mit so nen stk200 programmer und nen atmega328, hab mir dann den avrisp mkII geholt und mit avrstudio keine probleme. eventuell mal anderes programm tool testen.
Hmm... wie gesagt, habe leider sonst nur das JTAGICE mkII, was ja blöderweise ISP nicht richtig unterstützt... Und jetzt extra noch nen USBISP bauen finde ich auch etwas übertrieben. Fällt da niemandem spontan etwas ein? Muss es denn wirklich am Dragon liegen?
hast du das mit dem chip erease probiert vorm programmieren?
Ja, Chip Erase habe ich gemacht. Die Situation bleibt genau gleich. Ich werde heute versuchen, den ATmega88 mit dem JTAGICE zu flashen. Wenn das geht, liegt's definitiv am Dragon. Dann muss ich wohl mal bei Atmel anklopfen...
Hallo David, mit welcher Geschwindigkeit betreibst du denn die ISP-Schnittstelle? Fabrikfrische ATMEGA8 haben nur einen Systemtakt von 1MHz, deshalb darf die ISP-Schnittstelle da nicht mit mehr als 250kHz betrieben werden. Gruß, DetlevT
Prüfe mal, ob der Reset-Pin nach dem Programmieren auf "1" gesetzt ist ? Oder bau dir ein sehr einfaches ISP-Kabel für eine parallele Schnittstelle.
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?
Hmm... mit 30k und mit 4.7k von Reset nach Vcc gehts auch nicht. Am ISP RESET Pin des Dragons messe ich genau diese 0.9V wenn nichts angeschlossen ist. Na super, dann hat's mir wohl die Hardware irgendwie gebraten...
Ich bin scheinbar nicht der einzige mit diesem Problem, habe den Thread gerade erst gefunden. Beitrag "AVR Dragon: Nur 1. Aktion geht nach Start vom AVR-Studio" Werde es dann auch nochmal mit AVRStudio 4.17 versuchen wenn ich wieder zu Hause bin.
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.
So.. Nach herabsetzen der ISP-Frequenz auf 6,xxkHz und >1000 Mega32 später, ist die Ausfallrate auf unter 2% gefallen.. Hat hierfür jemand eine sinnvolle Erklärung? :-/ Bin gespannt, was die Chipanalyse bei Atmel ergibt.. ;-)
Hallo, hat inzwischen einer eine Lösung für o.g. Problem gefunden, oder war das der Tod des Dragon ? Meiner zeigt inzwischen auf allen meinen Testboard mit unterschiedlichsten AVR Typen das gleiche Symptom. DieReset Leitung blaubt dauerhaft unten. Firmwareupdate hat nix geholfen :-( SW: AVR Studio 4.18 und 5 MfG, Andreas
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
Andreas H. schrieb: > hat inzwischen einer eine Lösung für o.g. Problem gefunden, oder war das > der Tod des Dragon ? Ja, scheinbar sterben die von Unterspannung. (!!!) Wie sieht denn Dein Chip aus? Auch geschmort? (voltage stabilizer has puffed its magic smoke) http://www.aplomb.nl/TechStuff/Dragon/stabilizer2.jpg
Optisch hab ich gar nichts bemerkt... Auslöten übrigens unbedingt (vorsichtig!) mit dem Heissluftföhn, sonst sieht deine Platine nachher auch aus als wär ein Meteorit eingeschlagen. Der Chip hat ein exposed thermal pad auf der Unterseite;-)
Da er eh hin ist, kommt der Dachrinnenlötkolben mit Spezialspitze dran. Direkt auf das Gehäuse etwa 400°C mit hoher Wärmekapatität. Mit Heissluft föne ich mir sonst das Hünerfutter davon. Das ist mir zu gefährlich. 0206 wieder anlöten oder auch nur wiederfinden wenn davongeflogen, klappt eher nicht.
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
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?
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
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.
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.
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
*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.
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.