Fast... das mit dem Berechnen läuft etwa so:und errechnen kann man den wert in dem man die 10 / die bit länge teilt...
Der Timer läuft ja immer rauf und runter. 0,1,2,...254,255,254,253...2,1,0,1,2,3... usw.
Trifft er beim runterzählen den Compare-Wert wird der Ausgang auf 1 gesetzt, kommt er beim raufzählen wieder dort vorbei wird der Ausgang auf 0 gesetzt ("Clear Up").
Wenn Du also einen High-Impuls von z.B. 1ms haben willst, muss der Compare-Wert so gewählt werden, dass beim Zählen vom Compare-Wert bis 0 und wieder zurück 1ms vergehen.
Bei 16MHz und einem Prescaler von 1024 dauert eine Zähl-Periode 64µs. in 1ms zählt der Zähler also 1000/64, also etwa 16 Schritte weiter. Damit müsste man den Output-Compare-Wert auf 8 setzen. Für 2,2ms auf 17.
Eine feinere Abstufung bekommst Du, wenn Du die Bandbreite de Zählers auf z.B. 10 Bit erhöhst - dann muss allerdings auch der Prescaler um den Faktor 4 verkleinert werden, damit Du wieder bei etwa 30Hz rauskommst.
Lesezeichen