Die Hardware-Implementierung der PWM im uP wird mit einem Zähler und
einem Vergleicher gemacht.
Beispiel 8bit-PWM
Ein Peridoendauerzähler zählt von 0 bis 255 (Teiler durch 256)
Ein programmierbares Vergleichsregister wird mit einer Zahl geladen die
mit dem Zählerstand verglichen wird. PWM-Ausgang ist zunaächst 0. Wenn
der Zählerwert größer dem Wert im Vergleichsregister wird, dann geht der
PWM-Ausgang auf 1. Wenn der Zähler dann die Periode abschließt(255->0),
dann wird der PWM-Ausgang wieder auf 0 gesetzt. Durch Wahl der Zahl im
Vergleichsregister wird die Anzahl der Takte festgelegt in denen der
PWM-Ausgang auf "1" ist.
Periodendauerzähler: 0, 1, 2, 3, ....255, 0, 1, 2, 3 ....
Vergleichsregister: 100
Peridoenzähler, PWM-Ausgang
0, 0
1, 0
2, 0
3, 0
..., 0
100, 0
101, 1
102, 1
..., 1
254, 1
255, 1
0, 0
1, 0
...
Eine 8bit-PWM hat 256 Takte pro Periode.
Ein 12bit-PWM hat 4096 Takte pro Peride.
Man sieht, dass hochauflösende PWM-Generatoren mehr Taktperidoen
brauchen.
Die maximale Taktfrequenz des PWM-Zählers ist die Taktfrequenz des
Prozessors oder ein Teiler davon(z.B. 1/4 Taktfrequenz).