PWM-Zykluszeit beim ATmega nicht stabil

Nov 11, 2006 10 Replies

Hallo!



Ich bastel hier gerade an einem ATmega16 herum und verzweifel am PWM-Ausgang. Ich habe auf Timer 1 einen 8bit-PWM im Modus 8 (Phasen+Frequenz-korrekt) aktiviert, der auch funktioniert. Au=DFerdem habe ich den zugeh=F6rigen Interrupt aktiviert (SIG_OUTPUT_COMPARE_1A). Das Tastverh=E4ltnis wird mit OCR1A in diesem Interrupt moduliert (ich muss synchron zum PWM-Signal dieses modulieren. Was ich schon festgestellt habe: Der Interrupt kommt bei steigender _und_ fallender Flanke des PWM-Signals - was ich in der Software schon entsprechend ber=FCcksichtigt habe.



Wenn ich nun meinem Scope und meinen Augen trauen darf, dann jittert die PWM-Zyklusdauer ziemlich stark, bis zu 10%, in Abh=E4ngigkeit vom (aber nicht linear zum) Tastberh=E4ltnis!



Habe ich einen Knick in der Optik oder ist nur mein Scope kaputt?



Gru=DF Thorsten



Thorsten Wahn schrieb:

Vielleicht triggerst Du das Skop nur auf der falschen Flanke?

Zusatzfrage: symmetrisches oder asymmetrisches ("phase correct") PWM?

Tilmann

http://www.autometer.de - Elektronik nach Maß.

Tilmann Reh schrieb:

Umgekehrt - symmetrisches PWM heißt bei Atmel "phase correct".

Til -Ingrid- mann

http://www.autometer.de - Elektronik nach Maß.

Hallo Thorsten,

Wird der Timer auch angehalten vor jedem Laden der Register, sprich vor jeder Modulation? Besonders, wenn er nicht mit dem Master Clock getaktet wird, kann er sich beim Schreiben waehrend des laufenden Zaehlers verschlucken.

Gruesse, Joerg http://www.analogconsultants.com

Tilmann Reh schrieb:

Du meinst, auf der Flanke, die moduliert wird? - Ich habe mal umgeschaltet, ist genauso.

Modus 8: Phasen- und Frequenz-korrekte PWM (damit ich die Frequenz feineinstellen kann). Im Modus "schnelle PWM 8bit" hatte ich aber das gleiche Problem.

Mir scheint es fast, als w=FCrde, w=E4hrend der PWM-Interrupt aufgerufen und aktiv ist, der PWM-Timer stehenbleiben. Aber das kann doch eigentlich nicht sein, oder?

Thorsten

Joerg schrieb:

Der ATmega k=FCmmert sich selbst um die =DCbergabe des PWM-Wertes zum richtigen Zeitpunkt, wenn ich das Datenblatt richtig verstanden habe. Zumindest gibt es keine Einschr=E4nkung, wann ich das entsprechende Register beschreiben darf.

Thorsten

Thorsten Wahn schrieb:

Das Problem dabei ist die "phasenkorrekte" PWM - die /kann/ (in Bezug auf eine der beiden Flanken des Ausgangssignals) gar nicht ohne Phasenjitter funktionieren. Im Prinzip müßtest Du auf die "Mitte" des Ausgangssignals triggern.

Du kannst ja einfach mal einen anderen Port mit dem Timer-Interrupt toggeln, dann siehst Du jeweils die Mitte des Signals (d.h. den Umschaltpunkt des Zählers) und kannst darauf triggern. Du erkennst dann auch die symmetrische Modulation. Außerdem kannst Du anhand dieses Signals nachweisen, daß der Timer sauber durchläuft.

Vielleicht hattest Du dabei noch auf der falschen Flanke getriggert.

Nein, das kann eigentlich nicht sein. Der Timer läuft wohl durch, es sei denn, Du hältst ihn irnkwie an (was vermutlich nicht der Fall ist).

Tilmann

http://www.autometer.de - Elektronik nach Maß.

Hallo Thorsten,

Das ist beim MSP430 auch so, doch dessen Datenblatt klingt in dieser Hinsicht etwas ausweichend. Als ich Texas mal drauf festnageln wollte, kam keine Antwort. Weder beim Seminar noch von App Engineers dort. Ausserdem gilt das ganze nur, wenn der Timer aus der gleichen Taktquelle wie der Prozessorkern versorgt wird.

Gruesse, Joerg http://www.analogconsultants.com

Tilmann Reh schrieb:

Das ist einleuchtend.

Ich habe jetzt den PWM-Modus 5 aktiviert und alles ist gut: Der zugeh=F6rige Interrupt wird nun nur einmal pro Zyklus aufgerufen und der Jitter ist weg bzw. das Signal so, wie ich es haben will. Einziger Wermutstropfen: Die Frequenz der PWM ist nicht mehr fein einstellbar sondern nur in Faktor-2-Schritten - ich muss also einen passenden Quarz f=FCr meine Wunschfrequenz suchen.

Danke f=FCr Deine Hinweise.

Gr=FC=DFe Thorsten

Joerg schrieb:

Jaja, immer diese undokumentierten "Features". - Das musste ich auch erst lernen, in Datenbl=E4ttern nach den dort _nicht_ stehenden Infos zu suchen. ;-)

Gr=FC=DFe Thorsten

"Thorsten Wahn" schrieb:

Mal einen Zählfrequenzmesser probieren? Dem würde ich in dieser Hinsich ja mehr trauen.

-- cheers, J"org .-.-. --... ...-- -.. . DL8DTL

formatting link
NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required