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.
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?
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.
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. :-(
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.
MAT2.0 kann GPDMA Reguests erzeugen, man könnte also via DMA den nächsten Match Wert reinschreiben.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.