Forum: Mikrocontroller und Digitale Elektronik dauernd im PWM-Interrupt??


von Mirko (Gast)


Lesenswert?

Hallo.

Folgende Situation:

Es soll mit hilfe von PWM ein Sinussignal erzeugt werden.
PWM-Mode --> "center align", am Ende der Zählerperiode wird ein 
Interrupt ausgelöst und in der Interruptroutiene die Pulsbreite 
verändert.
Sieht schon mal alles passabel aus aber Sinus "zittert" zu sehr und an 
manchen Stellen der PWM sieht man, daß die Pulsbreiten variieren (sprich 
an der selben Stelle mal breiter mal schmaler). Vermute, daß dieses 
Zittern an der Variation von Pulsbreiten liegt. Außerdem ist das ganze 
schwer zu triggern und deswegen habe mir an einem Pin ein Triggerimpuls 
in der Sinusfrequenz ausgeben lassen. Habe zu meinem Erstaunen aber eine 
Frequenz von 100kHz festgestellt. D.h. doch, daß µC ständig in die 
Interruptroutine geht, oder?? Dies erklärt auch die variierenden 
Pulsbreiten an den selben stellen und daraus folgendes "Zittern" des 
Sinus, da sich die Pulse bei zu schnellem Interruptaufruf überlagern

Muß man da irgendwie Interrupt zwischendurch ausschalten, oder 
irgendwelche Bit setzen??

µC: AT91SAM7S256
Board: AT91SAM7S-EK
Umgebung: IAR

von Mirko (Gast)


Lesenswert?

das war der Übeltäter
/* It is forbidden to continue before updating of the PWM period */
        while(AT91C_BASE_PWMC->PWMC_ISR !=1);

jetzt ist die Triggerfrequenz OK

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.