So, mittlerweile bin ich wirklich am verzweifeln...
Ich habe ein Board mit einem ATmega16, genau diesen möchte ich
programmieren. Ich benutze AVR Studio 4 (Build 623), und den AVRISP mkII
via USB.
Allerdings kann ich die Signatur nicht auslesen, geschweige denn die
Fuses setzen, genaueres zum Fehler weiter unten.
--- Um was es genauer geht: ---
Ich bin auf folgendes Tutorial zum Bau eines RCL's gestossen und bin nun
dabei selbst eines zu bauen:
http://rcl.physik.uni-kl.de/docs/Tutorial_RCL.pdf
Den Schaltplan für das Board findet ihr auf Seite 11 des Tutorials, ein
Foto meines "Aufbaus" sowie der Unterseite meines Boards findet ihr
hier:
http://picfront.de/d/xCbFHFELX/1.JPGhttp://picfront.de/d/zINWqdbsS/2.JPG
Und ja, ich bin mir sicher dass zwischen den Lötstellen keine Brücken
sind und sich die Verbindungen nicht berühren.
Ich habe also die Lochrasterplatine bestückt, und mittlerweile glaube
ich 10x alle Verbindungen und Lötstellen überprüft, das Board ist soweit
ich das beurteilen kann jetzt einwandfrei bestückt, keine Brücken bei
den Lötstellen usw.
Jetzt ist der AVRISP mkII angeschlossen (über einen Adapter 6 auf 10
Pin, hab den eben gebastelt statt das Board nochmal zu verändern, zu
spät gemerkt...). Die 12V Betriebsspannung liegen an, diese werden
vollkommen korrekt vom Spannungsregler zu 5V transformiert. Der ATmega16
sitzt Bombenfest, alles ist so wie man es sich nur wünschen kann.
Tja, nur blöderweise hilft das nichts, ich habe trotzdem nach wie vor
folgendes Problem:
Ich gehe in AVR Studio auf "Connect...", wähle den AVRISP mkII sowie USB
aus und klicke abermals auf "Connect..."
Daraufhin öffnet sich wunschgemäss das entsprechende Fenster, unten ist
zu lesen:
Detecting on 'USB'...
AVRISP mkII with serial number FFFFFFFFFFFF found.
Getting isp parameter SD=0x06 .. OK
Soweit ja auch noch alles in Ordnung. Als Device ist der ATmega16
ausgewählt, der Programmiermodus ist auf ISP gestellt. Die Frequenz
steht dabei auf 125,0 Khz.
So und ab jetzt beginnen die Probleme...:
Die Signatur lässt sich nicht auslesen. Bei diesen Einstellungen bekomme
ich die bekannte Fehlermeldung "ISP Mode Error - A problem occurred when
executing the command... Frequenz überprüfen usw.".
Unten ist zu lesen:
Setting mode and device parameters .. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. OK!
Exakt das Selbe passiert wenn ich in den Fuses-Tab oder den LockBits-Tab
gehen möchte, Fehlermeldung und Text unten identisch.
Im User Manual steht leider nichts was mir weiterhilft, übrigens ist
nichtmal die Farbe des LED-Lämpchens hilfreich, schliesslich Blinkt
dieses nur einmal kurz verändert auf und ist sofort wieder grün, ob das
jetzt rot, orange, rot blinkend oder was auch immer sein soll, ist nicht
zu erkennen..
--- Von mir getestete Lösungsansätze: ---
* Programmierfrequenz verändern:
Bei höher Frequenz exakt gleiches Ergebnis.
Bei 6,478 Khz ebenfalls.
Bei 100 Hz:
Wiederum diese Fehlermeldung, allerdings braucht er für den Vorgang
einige Sekunden. Interessant ist jedoch dass diesmal auch beim Verlassen
des Programmiermodus eine Fehlermeldung angezeigt wird:
Setting mode and device parameters.. OK!
Entering programming mode.. FAILED!
Leaving programming mode.. FAILED!
Wenn ich nun wieder die Programmierfrequenz ändern möchte (klick auf
"Settings") bekomme ich diese Fehlermeldung:
"Stk500Dll - Could not contact programmer. Check your connections."
Nach einem klick auf "OK" kann ich allerdings über einen klick auf
"Read" die 100 Hz als eingestellte Frequenz auslesen.
Bei 51,1 Hz ist es im Prinzip identisch, ausser dass ich dort dann beim
klick auf "Read" noch einmal die Fehlermeldung "Stk500Dll.." erhalte.
Anschliessend kann ich eine andere Programmierfrequenz einstellen, hier
bekomme ich ebenfalls nochmal diese Fehlermeldung angezeigt wenn ich auf
"Write" klicke. Wieder auf "OK", das Fenster ist immer noch identisch,
wenn ich dieses mal auf "Write" klicke ist die entsprechende
Programmierfrequenz schliesslich eingestellt.
* Überprüfung des Nullpotentials des Board und des USB Anschlusses(Nach
einem Hinweis auf dies als mögliche Ursache):
Zwischen der Masse auf dem Board und der Masse am
USB messe ich absolut gar keine Differenz, zwischen Board-Masse und Pin
1 beim USB die exakten 5V, zwischen 5V am Board und USB-Masse ebenfalls
exakte 5V.
Sollte ich alles richtig gemacht haben scheidet das somit als
Fehlerquelle aus.
* Anderer Computer:
Hab das ganze auch über meinen Laptop ausgeführt, das Ergebnis ist zu
100% identisch.
So, ich ahbe jetzt so ausführlich wie irgendwie möglich beschrieben was
los ist. Wenn trotzdem noch jemand irgendwelche Angaben möchte, einfach
hier reinschreiben.
Das einzige was ich jetzt tun kann ist auf eure Hilfe zu warten. Ich
habe absolut keine Ahnung mehr was ich noch tun kann.
Schreibt bitte ALLES hier rein was euch als mögliche Ursache in den SInn
kommt, abwegig oder nicht, einfach oder kompliziert, ich bin für jede
Anregung dankbar.
Ich hoffe auf eure Hilfe und bedanke mich schonmal im Voraus.
Auch wenn euch keine Lösung einfällt erstmal ein Danke für das Lesen
dieses doch nicht gerade kurzen Themas =)
Basti
Hallo,
kein konkreter Hinweis, aber: löten üben, Isolierschlauch oder
isolierten Draht beschaffen. Ich baue viel auf Lochraster und hätte
Bauchschmerzen mit blank kreuzenden Drähten, wo 1x aufs BOard drücken
für Kurzschluß sorgen kann, mit Kreuz und Quer liegenden Drähten, wo man
jedesmal schauen muß, ob 2 Drähte nicht zufällig auf dem gleichen
unbenutzten Lötauge zu liegen kommen, mit Zinnspritzern, wo man nie
weiß, ob es nicht doch eine Berührung gibt.
Man kann auf Lochraster auch Drähte eckig verlegen, mit Lötpunkten gegen
verschieben sichern, mit dem Schraubenziher zwischen kritischen
Lötstellen durchkratzen, um Zinnreste zu entfernen.
Auch eine kleine Messingdrahtbürste ist da manchmal hilfreich.
Übung bekommt schon im Laufe der Zeit. :-)
Zum Problem: wenn am AVR direkt oben an den Pins gemessen jeweils
VCC/GND bzw. AVCC/AGND vorhanden sind: Spannung usw. weg und messen
zwischen den Programmierleitungen, ob es keine Kruzschlüsse gibt.
Messen von den AVR-Pins (auch von oben!) gegen die Buchse für den mkII
(ise eben abziehen und Stiftleiste rein doer Drahtstück als
Hilfsmittel), ob wirklich alle Verbindungen vom AVR bis zum richtigen
Pin der Buchse durchkommen.
ISP-Header und Adapter durcheinanderbringen kann ich nämlich auch sehr
gut und dobigens sind meine ersten Amtshandlungen bei Problemen.
Bisher hat sich so die Ursache immer in 10min finden lassen...
Gruß aus Berlin
Michael
AVRISP mkII with serial number FFFFFFFFFFFF found.
3
Getting isp parameter SD=0x06 .. OK
Eine Seriennummer mit FFFFFFFFFFFF ist sehr ungewöhnlich. Sieht für mich
wie ein defektes (Software oder Hardware) AVRISP mkII aus. Abgebrochenes
Firmwareupdate?
So, vielen Dank erstmal für die beiden Antworten.
Zum ersten:
Tja, so geübt bin ich im löten leider noch nicht, und dass die blanken
Drähte nicht unbedingt die beste Lösung sind ist mir auch bewusst.
Allerdings habe ich inzwischen wirklich genaustens überprüft dass es da
keine Kurzschlüsse gibt. Zwischen mir suspekten Lötstellen durchgekratz
hab ich sowieso fast überall, selbst wenn sie mir nicht sodnerlich
supekt waren. ^^
Zu deinem Tipp:
Ich hab grad eine dreiviertelstunde damit verbracht alle verbindung
durch Apnnung anlegen und messen zu überprüfen (IC's und mkII natürlich
vorher raus, glaube nicht dass die sich freuen wenn sie aufeinmal an
verschiedenen Pins 12V verpasst bekommen...).
VCC und GND sind alle in Ordnung, und mittlerweile bin ich mir auch zu
100% sicher dass jeder Anschluss vom ISP-Sockel zum Sockel für den
ATmega16 stimmen. den Adapter hab ich ebenfalls nochmal überprüft, nach
kurzer Miso/Mosi verwechslung hat sich dann doch schliesslich
herausgestellt das auch dort alles korrekt verbunden ist. Schneint
wirklich alles in Ordnung zu sein (leider, wäre weitaus angenehmer einen
Kurzschluss zu beseitigen als nach wie vor im Dunkeln zu tappen...).
Jetzt habe ich aber beim prüfen folgendes festgestellt und bin mir grad
nich sicher ob das vollkommen richtig is und ich aufm Shclauch stehe
oder ob da was nicht stimmt:
Pin9 des ATmega16 (Reset), und damit auch Pin5 des ISP-Sockels, ist ja
über einen 100k-Ohm Widerstand mit der Versorgungsspannung von 5V
verbunden (die ja an Pin 10, VCC, anliegt). Ich hab ehrlich gesagt keine
Ahnung wieso das so ist, aber in meinem Tutorial (siehe erster Post von
mir) ist das so beschrieben und im Schaltplan auf Seite 11 des Tutorials
so eingezeichnet.
Jetzt ist mir folgendes aufgefallen:
Wenn ich meine 12V an das Board anlege, welche dann über den
Spannungregler auf 5V umgewandelt werden, liegen diese 5V an Pin10 des
Atmega16-Sockels an. Dann liegen an Pin9 (Reset) 4,5V an. Durch die
Verbindung über den 100k-Ohm Widerstand? Kommt mir doch etwas viel vor,
4,5V trotz 100k Ohm dazwischen, oder?
Wenn ich dann zu Testzwecken bei herausgenommenem ATmega16 12V an Pin5
des ISP-Sockels (Reset) anlege, liegen diese auch korrekt an Pin9 des
ATmega16 Sockels an.
Nun liegen allerdings an Pin10 nur die 5V Versorgungsspannung an!
Was mich genau wundert:
Widerstände wirken doch in beide Richtungen gleich. Doch einmal lässt
der Widerstand anscheinend 4,5V "durch", im anderen Fall aber gar
nichts?
Ich hätte gedacht:
Entweder an Pin10 die 5V Spannung und über Widerstand 4,5V an Pin9, dann
aber auch 12V an Pin9 und über Wiederstand ~11,5V an Pin10.
Oder aber, was mir aufgrund der 100k-Ohm des Widerstandes sinnvoller
erscheint:
An Pin10 die 5V Spannung und trotz Widerstand an Pin9 nahezu nichts,
sowie beim testen 12V an Pin9 und trotz Widerstand an Pin10 nur 5V
Versorgungsspannung + nahezu nichts.
Ich hoffe ihr versteht was ich meine, etwas blöd zu erklären :S
Wäre schön wenn mir da jemand Aufklärung verschaffen könnte.
Hab die IC's immernoch draussen, will mal eben probieren was passiert
wenn ich die Verbindung über den Widerstand unterbreche..
Zur zweiten Antwort:
Hatte mich auch gewundert als ich es gelesen hab, wusste aber nichts
konkret damit anzufangen. Als ich AVR Studio 4 installiert hatte wurde
auch ein Firmwareupdate für den mkII ausgeführt, war aber anscheinend
alles Problemlos verlaufen.
Wie könnte ich denn testen ob mein AVRISP mkII richtig funktioniert?
Kann man die Firmware wieder zurücksetzten und das Update nochmal
ausführen?
Tja, ich bin der Lösung immer noch keinen Schritt näher, darum wieder
einmal die Aufforderung: Postet bitte alles was euch einfällt und ich
werd es überprüfen.
Vielen Dank im Voraus,
Basti
Basti wrote:
> Jetzt ist mir folgendes aufgefallen:> Wenn ich meine 12V an das Board anlege, welche dann über den> Spannungregler auf 5V umgewandelt werden, liegen diese 5V an Pin10 des> Atmega16-Sockels an. Dann liegen an Pin9 (Reset) 4,5V an. Durch die> Verbindung über den 100k-Ohm Widerstand? Kommt mir doch etwas viel vor,> 4,5V trotz 100k Ohm dazwischen, oder?
Nein. Das ist korrekt. Der nRESET wird durch den 100k Pullup-Widerstand
JOGH gehalten, d.h. kein RESET am µC. Wo ist der Bezugspunkt für 0 bei
deinen Messungen? Pin 11 (GND an der µC-Fassung)?
Wie sieht es mit der Beschaltung von Pin 30 und 31 an dem µC aus?
> Wenn ich dann zu Testzwecken bei herausgenommenem ATmega16 12V an Pin5> des ISP-Sockels (Reset) anlege, liegen diese auch korrekt an Pin9 des> ATmega16 Sockels an.> Nun liegen allerdings an Pin10 nur die 5V Versorgungsspannung an!
Dieses Experiment würde ich lassen. Du bedienst den Spannungsregler
durch die Backdoor.
Fehlerferndiagnose ist immer schwierig. Es gibt ja folgende
Fehlermöglichkeiten:
1. Programmer defekt (Hardware/Firmware), scheint mir am
wahrscheinlichsten wegen der merkürdigen Seriennummer.
2. PC-Software nicht richtig installiert (Administratorrechte? Vista?)
3. Aufbau/Verkabelung falsch
4. Stromversorgung nicht ausreichend.
Also muss man jetzt heraus bekommen was es ist.
Um den Programmer zu testen würde ich eine Schaltung mit irgendeinem
Atmel, die aber den Status OK hat, mal testen, ob sich da wenigsten die
Mikrokontroller ID auslesen läßt. Wichtig ist es das der ISP Takt < 1/4
der Atmeltaktfrequenz sein muss.
Eventuell eine minnimalst Schaltung mit einem billigen 8-Piner-Atmel auf
einer Lochrasterplatine aufbauen und mit 2*1.5V Batterien versorgen.
Wenn du ein STK500 hast, dann könntest du damit testen. Oder den dort
verbauten Programmer zum Testen deiner Schaltung verwenden.
Funktioniert das auch nicht, so treffen vermutlich Punkt 1 oder 2 zu.
Funktioniert das Auslesen eines anderen Atmels, so weist du das nur 3
oder 4 zutreffen können.
Eventuell einen Programmer von jemanden anders ausleihen und damit
versuchen. Aber vorher sicherstellen das der Atmel an seinen Pinnen
niemals mehr als 5V zu sehen bekommt. Experimente mit 12V an den
Mikrokontrollerpinnen oder in der Nähe und man hat einen Kurzschluß sind
meisten tötlich. Für den Atmel natürlich ...
Überleg dir Fehlermechanismen und versuch durch systematisches Testen
diese auszuschließen oder zu bestätigen.
Vielen Dank für die Antworten, war die letzten Tage etwas im Stress
bzgl. Schule, jetzt kann ich mich aber weider dem Projekt widmen.
Zur ersten Antwort:
Ich hab als Bezugspunkt 0 die Masse an der Hohlsteckerbuchse genommen.
Diese ist aber sowohl mit Pin 4,6,8 und 10 des ISP-Sockels verbunden,
als auch mit Pin 11 des µC-Sockels.
Da in der Anleitung steht dass der A/D Wandler in der Grundversion nicht
bestückt werden muss habe ich das auch nicht gemacht. Spule und die
beiden Kondensatoren sind also nicht eingebaut, an Pin 10 liegen die 5V
an, an Pin 30 nichts und Pin 31 liegt auf Masse. Ich könnt mir in den
Hintern beissen dass wenn da was nicht stimmt, hab ich gar nich mehr
dran gedacht >.<
Eventuell werd ich das einfach mal hinzufügen, mal sehen was passiert?
Zur zweiten Antwort kann ich eigentlich nur sagen:
Da ich absoluter Anfänger im Umgang mit Microcontrollern bin hab ich
leider nicht die entsprechenden Geräte hier um das zu testen, werd aber
mal bei ein paar Leuten anfragen ob sie mir weiterhelfen könnten.
Ich werds versuchen, vielen Dank soweit erstmal für die Hilfe.
Hallo,
die Spule an AVCC ist egal wenn nicht unbedingt die 10Bit des ADC voll
genutzt werden sollen.
AVCC gehört aber immer an VCC und AGND an GND.
Wenn ich sowas zusammenlöte (oder auf dem Steckbrett stecke) dann meist
in folgender Reihenfolge:
Wenn nötig: Stromversorgungsbuchse drauf, Spannungsregler mit 2x 100n
und am Eingang 47µ (wegen langer Leitung der Steckernetzteile, die ich
gern benutze...).
AVR(-Fassung) drauf, die 100n neben VCC/GND und AVCC/AGND (meist auch
gleich 100n an AREF/AGND, vergesse ich sie nicht, falls ich doch den ADC
nutzen will...).
100n an Reset (ja, jetzt kommt die Grundsatzdiskossion darüber...;))
Quarz und Kondensatoren ran.
ISP-Leiste drauf.
Spannungskram komplett verdrahten, an AVR ran.
ISP-Leiste komplett verdrahten.
Ohne AVR in der Fassunf Strom ran, schauen, ob 5V da sind und schauen,
ob die 5V direkt auf der Fassung an den richtigen Pins ankommt!
ISP-Pins von Fassung zur Stiftleiste auf Durchgang und Zuordnung prüfen.
Programmersoftware starten (hier scheiden sich dann die Geister je nach
Software).
Beim AVR-Studio und meinem Dragon dran: Spannung des Targets auslesen
(sollten 4,9-5,1V bei 5V sein).
ISP-Frequenz auf 125kHz setzen.
Fuses lesen.
Wird der richtige Typ erkannt - Fuses kontrollieren on die passend
aussehen.
Fuses für externen Quarz setzen, schreiben und kontrollieren, ob die
Signatur noch richtig ankommt.
(ISP-Frequenz hochsetzen und Signatur lesen).
Erst wenn das geht kommen die anderen Teile rauf.
Hat mir jedenfalls schon manche Fehlersuche erspart, weil einige
Probleme schnell auffielen und sich beheben ließen.
PS. das Schreiben dieses Textes hat jedenfalls länger gedauert, als ich
sonst für diese Zwischendurch-Tests brauche. :-)
Gruß aus Berlin
Michael
Vielen Dank für die Hilfe, wohl ein blöder Fehler...
Würd das jetzt gerne anbringen, bin mir aber nicht ganz sicher ob es so
passt wie ich den Schaltplan interpretiere, wäre shcön wenn eben jemand
sagen könnte ob das dem Schaltplan entspricht =)
Schaltplan:
http://www.mikrocontroller.net/attachment/44945/Schaltplan_RCL.png
So würd ichs verdrahten:
http://img90.imageshack.us/img90/9343/72307075xi8.png
Passt das? ^^
Da ich keine Spule da hab und denn A/D Wandler eh nicht benutzen möchte
würd ich wie vorgeschlagen ein Drahtstück nehmen. 100µH Spule, wie wäre
der Draht da am besten zu wählen (Dicke/Länge)?
Hoffe doch dass es damit dann Funktioniert.
Und nochmal vielen Dank für die Hilfe =)
Die Abblockkondensatoren so nahe wie möglich an die betreffenden Pins.
Also so wie im Anhang.
ABER: Das Durchschleifen von Pin zu Pin ist nicht ideal. Besser ist es,
einen ausreichend dicken +5V Strang/Versorgungspunkt und deinen GND
Strang/Versorgungspunkt zu haben und davon paarweise an die Pins
abzuzweigen. Wenn du noch mehr solcher Pin-Pin-Pin Versorgungen hast,
nimm die unter die Lupe.
Der Drahtersatz ist egal, er soll nur den Strom aushalten. Also die
Dicke wie in deinen restlichen Leitungen kannst du nehmen.
Vielen Dank, hab die Kondensatoren eingelötet, allerdings liefs danach
immer noch nicht. Hab schliesslich doch einen entfernten Bekannten
erwischen können, dieser studiert Elektrotechnik und hatte Zeit für
mich.
Ich könnte mich Ohrfeigen, aber was ja auch keinem von euch aufgefallen
is (^^):
Der Quarz war nicht richtig angeschlossen, die beiden Pins für den Quarz
liegen direkt nebeneinander. Ich hab alles ewig geprüft, aber irgendwie
is mir das ja eigentlich simple gar nicht aufgefallen. Wie geagt, ich
könnt mich Ohrfeigen.
Allerdings: Der Quarz wurde ja gar nicht angesteuert, ich konnte in den
Fuses ja nichmal einstellen dass der Quarz verwendet werden soll...
Warum also dieses Problem?
Ok, die beiden Verbindungen zum Max232 waren auch um eins verschoben,
aber das dürfte doch nur für die Kommunikation über das Nullmodemkabel
von Bedeutung sein, und nicht fürs ISP-programming?
Hatten im selben Arbeitsschritt in dem wir diese Verbindungen korrigiert
haben noch ein paar Lötstellen ausgebessert, allerdings hatten alle
Kontakt als ich sie vorher geprüft hatte...
Wäre es möglich dass die Lötstellen bei Gleichstrom keine Probleme
machten, bei (hoch-)frequenter Programmierung dann aber doch nicht
richtig wollten?
Ich weiss es nicht, aber Hauptsache ist dass es jetzt funktioniert...
Bin fleissig am schreiben, bei Fragen werde ich mich wieder melden,
Danke nochmal an alle die sich die Mühe gemacht haben zu helfen =)
Hallo!
Ich habe auch ein Problem und hoffe, dass es hier her passt. Ich besitze
ebenfalls das Pollin-Board und den AVR-ISP2 USB und arbeite mit AVR
Studio4. Bei mir funktioniert alles, solange der AVR-ISP2 USB
angeschlossen ist. Wenn ich ihn nicht an das Pollinboard anschließe
bleiben auch meine Taster und LEDs tot. Das Programm scheint nicht auf
meinem Atmega16 zu sein. Woran könnte das liegen?
Gruß
Maik