Forum: Mikrocontroller und Digitale Elektronik LPC210x: PWM Signal Modulieren


von bernd (Gast)


Lesenswert?

Hallo,

ich habe da mal ein Frage zum PWM der LPCs.

PWM Signale werden ja erzeugt, indem man mit Hilfe eines belibiegen
Match Registers die Periodendauer des PWM Signales festlegt.
Die restlichen Match Register können dann bestimmen, wann innerhalb
dieser Zeit das PWM Signal von High auf Low geht (oder war es
umgekehrt? Soll hier egal sein).

Sagen wir ich habe ein PWM Signal dessen Periode auf 100 PCLK Zyklen
gesetzt ist.
Und ein anderes Match Register (sagen wir MR0) sagt "nach 10 Zyklen
wird von High auf Low umgeschaltet". Also PWM 10% high.

Wenn ich den Wert in MR0 jetzt erhöhe steigt die Dauer, in der das PWM
Signal High ist. So soll es auch sein.

Jetzt aber zu meiner Frage/Problem: Was ist, wenn ich den Wert in MR0
verkleinern will.
Hat der Timer Counter den Wert 11, ist das PWM Signal schon Low. Ändere
ich MR0 jetzt auf 5, wird nach dem nächsten zurücksetzen Timers der neue
Wert verwendet.
Was aber, wenn der aktuelle Timer Counter Wert sagen wir 7 ist und ich
möchte MR0 jetzt auf 5 verringern. Also ist das PWM Signal noch High
(da 7<10[alter Wert]). Nun wird aber MR0 auf 5 gesetzt, wenn der Timer
Counter 7 ist. Das Heißt, das es keinen Match mehr bei Timer Counter=10
gibt. Da 5 aber schon überschritten war, als der neue Wert gesetzt
wurde, ist das PWM Signal nach wie vor High, und wird es auch bis zum
Ende der Periode bleiben.
Problem: In diesem ungünstigen Fall, wo ich den Wert von 10% auf 5%
verringern wollte, habe ich für die Dauer einer Periode ein PWM Signal
bekommen, dass 100% High war, wobei aber eigentlich entweder der alter
Wert 10% oder der neue Wert 5% gewollt war.

Wie geht man mit so etwas um, oder habe ich hier etwas übersehen? Ich
kann es leider nicht Simulieren.

Oder werden die neuen MRx Werte erst beim zurücksetzen des Timer
Counters übernommen?
Wenn nicht, wie realisiert man so etwas. Ein Interrupt beim Timer
überlauf und in der ISR Wert ändern kommt nicht in Frage, da zu langsam
da PCLK=CCLK.

Danke,
Bernd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.