Gast
#3878627
Guten Tag, zur Zeit versuche ich mit einem PIC18f4580 eine PWM Frequenz zu erzeugen. Soweit eigentlich nicht schwer, allerdings stimmen meine Rechnungen nicht mit meinen Messungen auf dem Oszilloskop überein, obwohl ich mir sehr sicher bin, dass ich mich nicht verreichnet habe. Bei einer berechneten PWM Frequenz (Duty cycle 50%) von 400Hz bekomme ich am Ausgang laut Oszilloskop 600Hz. Bei 1000Hz habe ich noch 70Hz Abweichung. Ich verstehe alerdings nicht warum. - 10Mhz Pic 18f4580 - Timer 1 : Prescaler 1:1 und Vorteiler 4 - Compare Modus. Timer 1 wird inkrementiert und bei einem Interrupt erzeugt dieser einen Interrupt, in dem von High nach Low bzw. umgekehrt gewechselt wird. Meine Rechnung : Bei einem Takt von 10Mhz und einem Vorteiler von 4 wird der Timer1 alle 0.0000004s um eine Stelle erhöht. Um mit dem Compare Modul auf 400Hz zu kommen habe ich folgendermaßen gerechnet: 1/400Hz = 0.0025s Periode. Für einen Duty cycle von 50% sind das dann 0.00125s High und 0.00125s Low. Also muss mein Timer1 alle 0.00125s einen Interrupt erzeugen. Das wären dann 0.00125 : 0.0000004 = 3125 Schritte. Diesen Wert habe ich als Hexzahl in das Vergleichsregister geschrieben. Also oxC35. Soweit müsste eigentlich alles passen aber anstatt 400Hz habe ich am Ausgang mit meinem Oszi 600Hz gemessen. Mit der gleichen Rechnung komme ich bei ox4E2 für 1000Hz auf eine Frequenz von 930Hz. Dafür habe ich aber keine Erklärung :/