96 cyc. bei Prescaler 8. Welchen Wert für OCR1A?

Gast #420269
Lesenswert?

hi,

mein timer1 soll nach 96 taktzyklen einen overflow interrupt auslösen.
deshalb habe ich ihn in den ctc-modus versetzt und den prescaler auf 8
eingestellt.

nun frag sich nur noch was der richtige wert für ocr1a ist:

kommt da jetzt 96/8 = 12 rein, oder (96/8)-1=11 rein, weil der timer ja
bei 0 anfängt, und, wenn er auf 11 steht, diese noch ganz auszählt?

mein hilfsprogramm (avrcalc) gibt mir die erste lösung, ich tendiere
eher zur zweiten.

mfg, johannes
Gast #420271
Lesenswert?

hab nochmal ein bisschen im manual des atmega8 gesucht und das diagramm
im anhang gefunden.

daraus kann ich entnehmen, dass, wenn im TCNT 12 steht, nochmal 8
zyklen durchlaufen werden. und dass, wenn TCNT = 0, auch nochmal 8
zyklen durchlaufen werden.

=> TCNT von 0-11: 12*8 cyc., wenn TCNT = 12: 8 cyc.
=> insgesamt 13*8 = 104 cyc.
=> richtiger wert für OCR1A wäre 11

hab ich das richtig interpretiert?
Angehängte Dateien:
Gast #420272
Lesenswert?

11 ist schon richtig, da der 16-bit-Timer bei 0 auf low bleibt, bei 1
für 8 Taktzyklen auf high und erst bei 65535 ganz auf high bleibt. Es
wird immer mit 0 angefangen zu zählen.
Du kannst da ja mit der Stopuhr im AVR-Studio ausmessen.
Gast #420275
Lesenswert?

> warum nimmst nicht CLK direk und stellst den ctc auf 96 ??

weil auch das falsch wäre :-) (müsste auf 95 stellen)

warum ich mit prescaler 8 arbeite?
keine ahnung, wollte einfach die fähigkeiten des µC voll ausnutzen :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren