mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC210x: PWM Signal Modulieren


Autor: bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.