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.JPG http://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
1 | Detecting on 'USB'... |
2 | 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
BUMP, wäre wirklich nett wenn jemand antworten würde =)
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.
AVcc (Pin 30) sollte angeschlossen werden. http://www.mikrocontroller.net/articles/AVR_Checkliste#Spannungsversorgung_richtig_angeschlossen.3F (Datenblatt S. 5: "should be connected") Die Abblockkondensatoren von Vcc bzw. AVcc nach GND werden immer empfohlen. http://www.mikrocontroller.net/articles/AVR_Checkliste#Abblockkondensator.28en.29_ordnungsgem.C3.A4.C3.9F_installiert.3F Wenn du keine 100µH Spule hast, kannst du ein Stück Draht benutzen. Die Spule bei Gelegenheit beschaffen, damit sie eingesetzt werden kann, wenn AD Messungen anstehen,
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
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.