Welche Quarzfrequenz braucht ein PIC16F877 für 1000 Hz PWM mit 8 Bit Auflösung?

Antwort vom

Für den **PIC16F877** mit **PWM über CCP + Timer2** gilt näherungsweise: **PWM-Frequenz** `Fpwm = Fosc / (4 * (PR2 + 1) * TMR2-Prescaler)` Für **8 Bit PWM** setzt man typischerweise: - `PR2 = 255` Dann wird: `Fpwm = Fosc / (4 * 256 * Prescaler)` Für **1000 Hz PWM** ergibt sich: `Fosc = 1000 * 4 * 256 * Prescaler` Also: - bei **Prescaler 1** → **1.024 MHz** - bei **Prescaler 4** → **4.096 MHz** - bei **Prescaler 16** → **16.384 MHz** Da das keine üblichen Quarzfrequenzen sind, nimmt man praktisch meist einen Standardquarz und wählt die nächstpassenden Registerwerte. Mit einem **4 MHz Quarz** ist **1000 Hz bei 8 Bit nicht exakt** erreichbar, aber sehr nah. Mit **16 MHz** ebenfalls nicht exakt bei vollem 8-Bit-Bereich. **Exakt 1000 Hz bei 8 Bit** wäre also ideal mit: - **1.024 MHz** - **4.096 MHz** - **16.384 MHz** je nach Timer2-Prescaler. Kurzantwort: **Für exakt 1 kHz PWM bei 8 Bit brauchst du beim PIC16F877 einen Quarz von 1.024 / 4.096 / 16.384 MHz.**