Hallo zusammen, nachdem ich mir nun schon den zweiten Atmega8 irgendwie unbrauchbar gemacht habe, bitte ich um Eure Hilfe für die richtigen Einstellungen. Ich bin gerade dabei das AVR-Tutorial (USART und ADC) durchzuarbeiten und habe mir dafür eine Schaltung mit dem Atmega8 aufgebaut, die folgendes macht: Auslesen von zwei ADC Kanälen und Datenübermittlung per USART. Ich benütze ein STK500 als Programmer. Bisher habe ich als Frequenz 4 MHz eingestellt. Das hat auch wunderbar funktioniert. Die Daten wurden wie gewünscht von meinem Terminalprogram empfangen. Um die Genauigkeit zu verbessern wollte ich nun mit einem externen Baudratenquarz (3.6864 MHz)arbeiten, den ich wie im Tutorial gezeigt, an XTAL1/XTAL2 mit je einem 22pF Kondensator gegen Ground angeschlossen habe. Auf dem STK500 gibt es zum Anschluß eines externen Quarzes einen mit "Crystal" bezeichneten Sockel. Damit das Board den Quarz als Taktquelle verwendet, müssen sowohl der Jumper XTAL1 gesetzt sein, als auch die Pins 2 und 3 von OSCSEL verbunden sein. Wenn ich nun versuche in AVR-Studio die entsprechenden Fuses zu setzen erhalte ich eine Fehlermeldung (siehe Anhang). Was mache ich falsch? Liegt es an einer Einstellung oder an der Reihenfolge (erst Fuses, dann Jumper oder umgekehrt). Ich habe mich durch diverse Threads gelesen, bei denen es um ähnliche Probleme ging, konnte aber mein Problem nicht beseitigen bzw. aufspüren, was ich falsch mache. Ich wäre über konkrete Lösungshilfen äusserst dankbar, da es als Anfänger ziemlich verwirrend ist, sich aus Expertenthreads die nötigen Infos zu destillieren. Danke und Gruß H.
Helmuth schrieb: > Um die Genauigkeit zu verbessern wollte ich nun mit einem > externen Baudratenquarz (3.6864 MHz)arbeiten, den ich wie im Tutorial > gezeigt, an XTAL1/XTAL2 mit je einem 22pF Kondensator gegen Ground > angeschlossen habe. Du musst doch nur den Quarz in den Sockel stecken. Das STK500 hat die Kondensatoren schon drauf. Oder benutzt Du das STK500 nur zum programmieren (Controller in externer Schaltung)? Dann muss der Quarz natürlich in diese Schaltung und nicht aufs STK500. Helmuth schrieb: > Damit das Board den Quarz als Taktquelle > verwendet, müssen sowohl der Jumper XTAL1 gesetzt sein, als auch die > Pins 2 und 3 von OSCSEL verbunden sein. Das passt soweit. Kannst Du an den XTAL-Pins des Controllers messen, ob da auch was schwingt?
Ich selbst habe keinen STK500, kann also nur "stochern": Vielleicht ist der baudrate Quarz nicht so verlustfrei wie der 4 MHz-Quarz. Da wäre das Setzen von CKOPT eine Hilfe, damit schwingen auch "schlechtere" Quarze. Reihenfolge wäre dann: mit internem Oszillator die fuses setzen, anschließend ist der interne Oszillator weg. Jetzt die für die fuses passende Schaltung herstellen: Quarz in Sockel, Jumper - dann müsste die Arbeit über den ISP wieder klappen.
4 MHz bzw. 3.6864 MHz müsste doch mid frequenz sein.
>irgendwie unbrauchbar
wenn der atmega verfused ist, kann er mit dem STK500 jederzeit in den
Auslieferungszustand zurückprogrammiert werden.
Chris schrieb: > Du musst doch nur den Quarz in den Sockel stecken. Das STK500 hat die > > Kondensatoren schon drauf. Oder benutzt Du das STK500 nur zum > > programmieren (Controller in externer Schaltung)? Dann muss der Quarz > > natürlich in diese Schaltung und nicht aufs STK500. Ich benutze das STK500 zum programmieren und setze dann den µC in die eigentliche Schaltung mit dem externen Quarz ein. Wenn ich den Quarz in den Sockel setze sind die Fuses aber doch noch lange nicht gesetzt. Und wenn ich die Einstellungen wie im Anhang gezeigt vornehme, dann bekomme ich nach dem drücken von "verify" die gezeigte Fehlermeldung Peter R. schrieb: > Reihenfolge wäre dann: mit internem Oszillator die fuses setzen, > > anschließend > > ist der interne Oszillator weg. > Jetzt die für die fuses passende Schaltung herstellen: Quarz in Sockel, > > Jumper - dann müsste die Arbeit über den ISP wieder klappen. Wenn ich den verfusten Controller wieder einsetze dann kann ich jumpern was ich will, aber ich bekomme über ISP keine Verbindung mehr zum µC. Peter R. schrieb: > wenn der atmega verfused ist, kann er mit dem STK500 jederzeit in den > > Auslieferungszustand zurückprogrammiert werden. Wäre nett, wenn Du mir sagst wie. Das löst zwar nicht das eigentliche Problem, aber ich hab zumindest wieder ein paar mehr Controller zum probieren.
Helmuth schrieb: >> Auslieferungszustand zurückprogrammiert werden. > > Wäre nett, wenn Du mir sagst wie. Eine Variante ist hier beschrieben: http://www.mikrocontroller.net/articles/AVR_Fuses#Reaktivieren_bei_fehlerhaften_Taktquellen-Fuse-Einstellungen Die andere Variante nennt sich "high voltage parallel programming" oder kurz HVPP und ist in der Hilfe zum STK500 beschrieben.
Achso, für kleine AVRs mit wenig Pins gibts auch noch das serielle Pendant zu HVPP, dann halt HVSP. Ebenfalls in der Hilfe vom AVRStudio beschrieben.
Mal 'ne blöde Frage, aber könnte es evtl. sein, dass du vor dem Verifizieren nicht auf 'Program' klickst? Die Fehlermeldung in geht_nicht.jpg sieht so aus (die ausgelesenen Werte entsprechen nicht den eingestellten), hätte sonst auch eine Fehlermeldung beim Programmieren gegeben und du schreibst nur von 'Verify'. Ich arbeite auch mit dem STK500 in der Weise, wie du geschrieben hast und auch mit Quarz im Sockel, hatte aber noch nie Probleme, außer ich hatte irgendwas nicht richtig eingestellt oder vergessen die Fuses zu programmieren.
m. schrieb: > Mal 'ne blöde Frage, aber könnte es evtl. sein, dass du vor dem > > Verifizieren nicht auf 'Program' klickst? Könnte durchaus sein, dass ich das versehentlich gemacht habe. Jedenfalls konnte ich dank des Tips mit der High Voltage Programmierung die verfusten µC's wieder hinbiegen. Klasse :-) Zu meinem Anfangsproblem: Die Fuses hab ich jetzt auf 0xD9 und 0xCE gesetzt. Mit #define F_CPU 3686400UL #define BAUDRATE 38400UL und int ubrr = (F_CPU/(16*BAUDRATE)-1); erhalte ich in meinem Terminalprogramm völlig regelmäßig die Werte der beiden ADC-Kanäle. Deshalb gehe ich mal davon aus, dass jetzt alles richtig eingestellt ist. Vielen Dank für die Unterstützung (obwohl ich gar nicht weiß, wie der Fehler zustande gekommen ist, der offensichtlich vorlag).
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.