Hallo, ich nutze einen 14,745600MHz Clock und möchte mit einem 16 Bit Timer einen Interrupt JEDE MILLISEKUNDE auslösen. Wie muss ich den Prescaler und das Compare-Register richtig einstellen?!! Ich glaub ich hab nen dicken Knoten in meinem Gehirn, da ich einfach nicht drauf komme, wie ich den Timer einstellen muss. Ich tu nun schon fast 2 Stunden rum und habe auch schon den AVR Timer Calculator (http://frank.circleofcurrent.com/cache/avrtimercalc.htm)angeschaut, aber ich komm einfach nicht drauf. Darum bitte ich euch, helft mir weiter!!!
Der Oszillator hat genau 14745,6 Takte pro Millisekunde. Stellst du den Timer also auf Prescaler 1 und Compare auf 14745, dann erhälst du alle 14745+1 Takte einen Interrupt - also alle 0,9997 ms einen Interrupt. Allgemein: Rechne aus, wieviele Takte von einem zum nächsten Interrupt vergehen sollen. Diese Zahl teilst du dann durch die möglichen Prescaler-Einstellungen, ziehst 1 ab und erhälst so den Wert für das Compare-Register für jede mögliche Prescaler-Einstellung. Natürlich wird nicht jede Einstellung funktionieren, weil z.B. der Wert für das Compare-Register nicht in 16bit passt oder das Ergebnis der Berechnung keine ganze Zahl (und Rundung vielleicht einen zu großen Fehler verursacht) ist.
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.