Leider erkenne ich nicht, wie man die Frequenz auf 100Hz reduzieren kann, ohne den Oszillator auszutauschen.
Deine Berechnung ist korrekt. Bei Verwendung eines 4,194MHz Oszillators kann man 100Hz PWM-Frequenz mit dem CCP-Modul nicht erreichen. Es bleibt nur eine Software-Lösung. Ein denkbarer Weg wäre es, den TMR2 so zu konfigurieren, daß er alle 100µs überläuft. In der Timer2 ISR wird dann der PWM-Ausgangspin in Abhängigkeit vom Timerwert entsprechend gesetzt:
if (TMR2 < duty_cycle)
{
pwm_ausgang = 1;
}
else
{
pwm_ausgang = 0;
}
Damit wäre eine Auflösung der PWM von 100µs möglich, d.h. der Duty-Cycle kann im Bereich von 0 bis 100 liegen (was einer Auflösung von etwas mehr als 6,6 Bits entspricht).
Die Prozessorlast ist bei diesem Ansatz (insbesondere mit dem CCS) schon relativ hoch, da zwischen den Interrupts nur gut 100 Befehlszyklen zur Verfügung stehen. Wenn eine höhere Auflösung benötigt wird oder der PIC umfangreichere Aufgaben zu bewältigen hat, wäre es bei niedrigen PWM-Frequenzen (die das CCP-Modul nicht erreichen kann) ratsam, die Oszillator-Frequenz des PICs zu erhöhen.
Viele Grüße
Bernd