uC mit präziser PWM-Steuerung bzw. Sequenzer

Gast #2608540
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..
Gast #2608552
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?
Gast #2608693
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren