Forum: Mikrocontroller und Digitale Elektronik uC mit präziser PWM-Steuerung bzw. Sequenzer


von Honk (Gast)


Lesenswert?

Hallo,

ich habe folgende Problem: eine PWM mit gewissem "duty cycle" soll nach 
einer Anzahl Durchläufe einen Interrupt auslösen. Innerhalb des 
Interrupthandlers wird dann ein neues Timing für die PWM gesetzt.
Soweit ansich kein Problem. Aber: Die Abarbeitung nimmt auch einige 
Zyklen in Anspruch, insofern verzögert sich das Neu-Setzen der PWM. Bei 
einer hohen Genauigkeit um wenige Zyklen führt das irgendwann zu einem 
grösseren Versatz gegenüber dem Systemtakt. Da das System noch andere 
IRQ abarbeitet, ist das ganze nicht wirklich deterministisch.
Kennt jemand einen (möglichst simplen) uC, bei dem PWM-Werte quasi beim 
Schreiben erst intern gepuffert werden und erst beim Überlauf bzw. 
Erreichen des Schwellwertes (welches den Interrupt auslöst) automatisch 
in die Zähler-Register gelatcht werden?
Die letzte Instanz wäre programmierbare Logik, aber noch gebe ich auf 
der uC-Seite nicht auf..

von Testfall (Gast)


Lesenswert?

Wie wäre es damit, einfach alle Werte zwei mal im Speicher zu haben?
Im ersten sind die Werte, die geändert werden, im zweiten sind die Werte 
die abgearbeitet werden.
In der Pause zwischen zwei Zyklen wird jeweils die erste auf die zweite 
Liste übertragen?

von Klaus (Gast)


Lesenswert?

Honk schrieb:
> Schreiben erst intern gepuffert werden und erst beim Überlauf bzw.
> Erreichen des Schwellwertes (welches den Interrupt auslöst) automatisch
> in die Zähler-Register gelatcht werden?

Bei den PIC24xxx, die ich verwende, ist das so.

MfG Klaus

von Werner (Gast)


Lesenswert?

Bei den ATmega hat der Timer auch genug Möglichkeiten, um per 
Compare-Match und Overflow für ein PWM-Signal mit genau definierten 
Werten zu sorgen, indem das Vergleichsregister rechtzeitig gesetzt wird. 
Einfach mal einen Blick in den Abschnitt über die Timer Modi werfen.
Und dann kommt es ein bisschen auf die PWM-Auflösung, die Randbedinungen 
für die Frequenz und maximal möglicher Interupt-Latenz drauf an.

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.