Forum: Mikrocontroller und Digitale Elektronik LPC1768 und PWM


von Mr.T (Gast)


Lesenswert?

Salut,

Frage zu PWM über das Timermodul bei LPC17xx:
ist es möglich eine PWM mit variablem Dutycycle über die MATm.n Pins 
auszugeben? Wenn ja, wie? 50% Dutycycle kriege ich hin, aber bei 
variablem Teil käme mir nur ein Neubelegen der MRx Register in einer ISR 
in den Sinn. Geht es auch ohne ISR?
Hintergrund: auf dem LPC1768 Board von Steinert ist MAT2.0 rausgeführt 
als Backlight zum TFT.

von Mr.T (Gast)


Lesenswert?

Hat jemand zwischenzeitlich eine Idee?

von Y2 (Gast)


Lesenswert?

Wenn der Timer so eingestellt ist, dass z.B. das MR3 Register den Reset 
des Timers macht und MR2 für die PWM dann geht das schon. Das MR 
Register im Interrupt zu setzten ist nicht nötig. Es bleibt ja so wie du 
es einstellst stehen. Wie hast du den Timer denn initialisiert?

von Marc P. (marcvonwindscooting)


Lesenswert?

Y2 schrieb:
> Wenn der Timer so eingestellt ist, dass z.B. das MR3 Register den Reset
> des Timers macht und MR2 für die PWM dann geht das schon. Das MR

Aber wie kann er den Pegel des Pins aendern? Es gibt ja bloss 
set/clear/toggle und keines produziert das gew"unschte Ergebnis.

von Mr.T (Gast)


Lesenswert?

Marc P. schrieb:

> Aber wie kann er den Pegel des Pins aendern? Es gibt ja bloss
> set/clear/toggle und keines produziert das gew"unschte Ergebnis.

Sehe ich auch so. Einen 50% Dutycycle kriegt man m.E. mit dem Toggle 
hin, aber ich möchte es ja variabel.
Ich bin bis dato davon ausgegangen, dass der Entwickler des Evalboards 
schon an PWM auf dem Backlight-Pin für das TFT gedacht hat, als er die 
Pinbelegung so wählte. Zumal man durch Umbelegung ohne weiteres einen 
PWM Kanal hätte frei machen können.
Grundsätzlich ist es nicht wichtig, da ich für meine Endanwendung 
sowieso einen PWM Kanal für sowas einsetze... aber interessiert hätte es 
mich schon, ob es da einen Kniff gibt. Auf LPCworld hat die Thematik 
auch schon mal jemand gefragt, da kam als Lösung IIRC, dass man es in 
einer ISR machen sollte. :-(

von Y2 (Gast)


Lesenswert?

Ja, ich habe das Anfangs mit den Timern der LPC11xx Serie verwechselt. 
Die können auch PWM ohne Interrupt generieren. Da der LPC1768 aber eine 
separate PWM Einheit hat, fehlt das wohl bei den Timern. Also wird es 
wohl auf ohne eine ISR nicht gehen. Ob das stört kannst nur du wissen.

von Jim M. (turboj)


Lesenswert?

MAT2.0 kann GPDMA Reguests erzeugen, man könnte also via DMA den 
nächsten Match Wert reinschreiben.

von Arne (Gast)


Lesenswert?

Jim Meba schrieb:
> MAT2.0 kann GPDMA Reguests erzeugen, man könnte also via DMA den
> nächsten Match Wert reinschreiben.

M.E. bringt das leider nichts. Nehmen wir an der TC darf bis 1000 laufen 
bevor er auf 0 gesetzt wird. In MR0 steht z.B. 200 drin. Ich kann jetzt 
lediglich auf High/Low oder Toggeln stellen, wenn TC=MR0 ist.
Das Delta zwischen zwei Matches TC=MR0 ist 1000. Stelle ich MR0 via DMA
auf 500, dann ist das Delta immer noch 1000.

Oder wir haben uns missverstanden!

von Arne (Gast)


Lesenswert?

Ergänzung: es fehlt die Möglichkeit, dass der MAT2.0 Pin bei TC=0 auf 
Low oder High geht und erst bei TC=MR0 toggelt.

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.