Hi Leute, ich hab grad ein kleines Verständnisproblem mit nem 32,768 kHz Uhrenquarz an nem ATmega8. Beim ATmega8 sind die Pins für den normalen Quarz und für den TOSC (Timer-Quarz) die selben. Ich benutze den internen Taktgeber und hab den Uhrenquarz für eine genauere Zeitbasis dran. Dummerweise schwingt der nicht mit 32kHz sondern auf ner anderen Frequenz. Laut Datenblatt benötigt der ja keine weitere Beschaltung in Form von Kondensatoren. An anderer Stelle steht jedoch, dass man das CKOPT-Fuse programmieren muss, um die internen 32pF Kondensatoren zu aktivieren. Das kann ich mit meinem App-Note AVR910 Programmer aber leider nicht. Muss ich nun doch noch Kondensatoren an den Quarz hängen, damit dieser auf seiner Grundfrequenz schwingt? Oder gibt es ne andere Lösung? Danke im Voraus für eure Antworten. Gruß, ERDI - Soft.
Kondensatoren wirst du schon brauchen, entweder die internen oder wenn du die nicht programmiert bekommst, externe.
Der Programmer kann also die Fuses auf low freq osc stellen, aber nicht CKOPT aktivieren? Kurioses Teil.
Was willst Du überhaupt erreichen? - Soll der AVR mit dem Uhrenquarz getaktet werden? - Soll der AVR mit dem internen RC-Oszillator getaktet werden und Timer2 mit dem Uhrenquarz eine RTC bilden? Das sind nämlich zweierlei Paar Schuhe... ...
Moin, ich klinke mich mal ein. Mich interessiert der zweite Fall: Timer2 mit dem Uhrenquarz eine RTC bilden. Gibts da schon was im Forum? Gruß Andreas
Das wurde schon gelegentlich angesprochen, aber frag' mich nicht wo. Die derzeitige Suchfunktion ist da nicht besonders hilfreich. Infos solltest Du im Datasheet Kapitel Timer2, Stichwort 'asynchron' finden, aber auch bei den Sleep-Modes. Im Prinzip schickt man den AVR in den stromsparenden Tiefschhlaf und lässt nur Timer2 mit dem externen Uhrenquarz klappern (also die asynchrone Betriebsart). Dessen Interrupt weckt den AVR auf, der taktet dann mit dem internen RC-Oszillator, arbeitet die Mainloop ab, bis nix mehr zu tun ist und geht wieder schlafen. Über Details und Fallstricke kann ich nichts sagen, ich habe es noch nicht gemacht, war noch nicht nötig. ...
Hallo Frank, genau sowas habe ich schon mal für einen Datenlogger gemacht. Meine Fuses für den Mega8L waren: Low: 0xe3 High: 0xc1 Gruss, Thorsten
Unter http://www.atmel.com/dyn/resources/prod_documents/doc1259.pdf findet man dazu eine entsprechende AN.
Erstmal danke für eure Antworten. Vielleicht ist es in meinem ersten Post nicht genau rübergekommen. Der mega8 selbst wird vom internen Taktgenerator betrieben. Der Uhrenquarz ist für den asynchronen Timer, um eine "genauere" Zeitbasis für die Uhr zu schaffen. Eigentlich funktioniert auch alles soweit, nur dass eben der Quarz auf irgend einer harmonischen schwingt. Ich werd jetzt mal 2 Kondensatoren einlöten (für die ich, zum Glück, Pads vorgesehen habe). <edit>Mit den Kondensatoren funktioniert alles bestens. Danke an alle. @Thorsten: Die Fuses kann ich mit AVRProg in dieser weise nicht programmieren. Hab lieber 2 Kondensatoren eingelötet als mich kurz mit AVRDude oder ähnlichem zu befassen. :) (Faulheit siegt) </edit>
CKOPT "programmed" aktiviert nicht bei allen Revisionen des ATmega8 die internen Kondensatoren. Vgl. Abschnitt Errata im Datenblatt. Habe grade kein aktuelles Datenblatt zur Hand, Fehler sollte aber erst ab Rev. G korrigiert sein. Gewählte Lösung mit externen Kondensatoren und CKOPT unprogrammed ist auf der sicheren Seite wenn man nicht genau weiss, welche ATmega8 Revision man nutzt.
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.