Zitat Zitat von Nicole01 Beitrag anzeigen
Nur glaube ich wäre es für mich auch sehr gut, wenn ich endlich verstehen würde wie man auf die gewünschte Frequenz kommt
Hallo,

ich versuche mich mal an einer Erklärung - für die Fast-PWM.

Der Timer Counter (TCNT) eines 8-Bit Timers durchläuft im Normalmodus den Wertebereich eines 8-Bit Binärzahl, also von 0 bis 255.

Wie schnell er das macht, hängt von dem Systemtakt und dem Vorteiler ab (mal abgesehen von der Taktung des Timers durch einem externen Takt).

Jeder Taktimpuls, der den Timer erreicht, erhöht den TCNT um eins. Es braucht also 256 Timertakte um einen kompletten Timerzyklus im Normalmodus und auch im Fast-PWM Modus zu durchlaufen.
TCNT = 0 nach TCNT = 1 -> 1 Takt, 1 Takt total
TCNT = 1 nach TCNT = 2 -> 1 Takt, 2 Takte total
.
.
TCNT = 254 nach TCNT = 255 -> 1 Takt, 255 Takte total
TCNT = 255 nach TCNT = 0 -> 1 Takt, 256 Takte total -> TCNT Turn von 0 nach 0 nenne ich mal einen "Timerzyklus"

Bei einem Systemtakt von 1MHz und einem Vorteiler (Prescaler) von 1 wird der TCNT mit einer Frequenz von 1Mhz um 1 erhöht. Für einen Timerzyklus braucht er 256 Takte, die Timerzyklenfrequenz ist also 1000000Hz/256 = 3906,25Hz. Ist höher als Deine geforderten 1kHz. Kann man auch nicht so ohne Weiteres per CTC (Clear Timer on Compare) tiefer machen.

Also erstmal mit Prescaler den Timertakt heruntersetzten. Nach Datenblatt vom ATtiny85 ist der nächste Prescalerwert des Timers 0 nach 1 die 8. Damit erreicht man eine Timerzyklusfrequenz von (1000000Hz/8 )/256=488,28125Hz. Zu langsam! Bekommt man aber schneller, wenn man den CTC Modus einschaltet und in ein Compareregister den entsprechenden Wert hineinschreibt. TCNT läuft dann nur noch bis zu dem Comparewert bevor auf 0 gesetzt wird. Die Timerzykluszeit wird also schneller.

Der Timertakt mit dem Prescaler 8 ist 1MHz/8=125000Hz und eine Periode dauert dann 1/125000Hz=8µs. Alle 8µs wird also der TCNT um eins erhöht. Um auf eine Timerzyklusfrequenz von 1kHz zu kommen, muß die Timerzykluszeit 1/1kHz=1000µs sein. Dazu braucht der TCNT 1000µs/8µs=125 Zählschritte.

Also CTC Modus zum Fast-PWM einschalten und 124 ins Compareregister eintragen (Der 125ste Schritt kommt durch den Schritt von 124 nach 0 zustande). Das andere Compareregister dient dann zur Einstellung der Pulsweite.

Gruß
Searcher