Hi! Im PDF zum ATMega16 steht für den T2 den man an TOSC1 und TOSC2 extern takten kann, das dieser für 32KHz optimiert sei. Ist es trotzdem möglich, den T2 z. B. mit 100KHz an TOSC1 und TOSC2 zu takten? MfG Andi
Hat denn noch niemand Erfahrung mit einem schnelleren Quarz an TOSC1 und TOSC2 gemacht? MfG Andi
Na ich denke mal, daß die sich bei Atmel was dabei gedacht haben, kein andere Timer frei, oder intern takten?!
meine VERMUTUNG ist das "für 32 khz optimiert" heißt, dass man bei nem 32 khz quarz ohne externe beschaltung auskommt. soll heißen die internen Kondensatoren sind für diesen quarztyp "optimiert". da man die timer doch auch als counter nutzen kann wäre eine "nur" 32 khz funktion ziemlich sinnlos.
Tjaaa im Zweifelsfalle mal probieren, Timer aktivieren und an irgendeinem Portpin eine LED damit blinken lassen, vielleicht klappt´s ja auch mit 100kHz, mehr wird aber bestimmt nicht drin sein. Im Datenblatt steht auch, daß man keinen externen Takt an die TOSC2-Pins legen sollte, vielleicht sitzt doch mehr empfindlicher Kleinkram dahinter, als man auf Anhieb vermuten mag.
Vielen Dank für eure Hinweise! Habe gefragt weil der "große C" um die Ecke keinen 32KHz hat. Geht erst bei 100KHz los und wegen einem Quarz wollte ich jetzt keine Bestellung irgendwo aufgeben. Mit 100KHz kann man evtl. auch bei +/- paar PPM besser abgleichen als mit 32KHz. Werde es am WE ausprobieren und sehen, was dabei rauskommt. Zur Kontrolle der Ganggenauigkeit dient eine bereits existierende Uhr im AVR welche bisher auf T1 mit 4MHz abgestimmt war. MfG Andi
So, habe an den Timer 2 nun einen Mini-Quarz mit 100KHz dran und es läuft prima. Die Ganggenauigkeit wird sich noch zeigen was bis jetzt ganz gut aussieht. Allerdings verwundert mich eine Anlaufzeit des T2 von ca. 2 Sekunden. Also nach Einschalten oder flashen dauert es ca. 2 Sekunden bis die vom T2 getaktete Uhr anläuft. Der Timer 2 läuft ohne Prescaler (0b001) mit einem Comparewert von 100 was einer Millisekunde entspricht. Hat der Quarz so eine lange Anschwingzeit oder was ist da los? MfG Andi
Naja, das könnte an der hohen Kapazität der internen Trimmung auf die 32kHz liegen, die den 100er Quarz jetzt zu stark bedämpft. Wenn Du vielleicht die externen Kondis wegläßt?!
Läuft ohne externe Kondensatoren, laut Datenblatt. Nicht zu verwechseln mit XTAL1 und XTAL2, es geht immer noch um TOSC1 und TOSC2 für den asynchronen Betrieb von T2. MfG Andi
Hmm, dann weiß ich auch nicht - kenne die Atmels ja nicht von innen. Viel Glück noch beim Testen. Uhrenquarze gibt´s übrigens bei Reichelt unter der Bestellnummer >> 0,032768 << für 22 Cent.
So, nach ein paar längeren Tests der Ganggenauigkeit des 100KHz Mini-Quarz, so klein wie ein 32KHz Uhrenquarz, läuft dieser, wie sollte es auch anders sein, um ca. 2,5 Takte je Sekunde zu langsam. Statt 100KHz sind es 99997,5Hz. Für die jenigen, die es interessiert läßt sich das per folgendem ASM-Code abgleichen: .equ TC2Value=100000/1000-1 Timer2Cmp: push xl ; 2 Register und SREG retten. in xl,SREG ; 1 pushw x ; 4 ldsw x, Uhr+MilliSek ; 4 Millisekunden lesen, adiw xl,1 ; 2 + 1 stsw Uhr+MilliSek ,x ; 4 und zurück schreiben. lds xh,Uhr+Sekunde ; 2 Sekunde lesen. andi xh,3 ; 1 auf Mod 4 prüfen. breq SetMS2 ;1/2 Jede 4. Sekunde keine Taktkorrektur. ldi xh,TC2Value ; 1 Timerwert für 1ms in xh. tst xl ; 1 Ist low-Byte von ms = 0? brne SetMS1 ;1/2 ldi xh,TC2Value-1 ; 1 Dann Timerwert - 1. SetMS1: out OCR2,xh ; 1 Compare Register einstellen. SetMS2: popw x ; 4 Register zurückholen. out SREG,xl ; 1 pop xl ; 2 reti ; 4 Die ISR für Timer2 wird jede Millisekunde aufgerufen. Zuerst wird Milliesekunde um 1 erhöht. Als nächstes wird geprüft, ob die Sekunde / 4 = 0 ist. Ist das der Fall wird keine Korrektur vorgenommen. Ansonsten wird geprüft, ob das low-Byte der Millisekunden 0 ist. Das ist der Fall bei einem Wert von 256, 512 und 768. Dann wird der Timer2-Compare nicht auf 100 sondern auf 99 gesetzt und somit kommt der nächste Timer2-Aufruf ein Takt früher. Somit ergeben sich 3 Korrekturen je Sekunde. Da aber jede 4. Sekunde keine Korrektur vorgenommen wird sind das dann in 4 Sekunden 9 Takte weniger, das entspricht je Sekunde dann 9 / 4 = 2,25 Takte. MfG Andi
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.