Forum: Mikrocontroller und Digitale Elektronik PWM Fehler bei OCR setzen


von Lukas Z. (Firma: HTBLuVA - Salzburg) (lzopf)


Lesenswert?

Hallo Leute,

Ich habe eine Frage ich mache eine Frequenzmessung eines Rechtecksignals 
mit Hilfe des ICP - Pins eines ATmega 32 @ 16 Mhz.

Das eingelsene Rechtecksignal wird proportional Umgewandelt und als PWM 
Signal ausgegeben. 0-255.

Mein Problem bzw. Frage wenn der µP gerade unter dem Ausgeben des PWM 
Signals ist und ich ändere den Wert des PWM Registers OCR2 0-255 
unterbricht dann der µP die aktuelle Ausgabe der PWM und beginnt sofort 
mit dem neuen geänderten Wert.

Da das eingelesene Rechtecksignal nicht periodisch ist sondern asynchron 
werden die Werte des PWM Register OCR 0-255 ständig geändert. Entsteht 
dann ein Fehler beim PWM Signal oder wartet der µP ab bis er den Letzten 
Wert richtig ausgegeben hat und beginnt erst dann mit dem neuen 
geänderten Wert?

Hoffe Ihr versteht ungefähr was ich meine :).

MFG

Lukas Zopf

von Michael H. (michael_h45)


Lesenswert?

Lukas Zopf schrieb:
> Hoffe Ihr versteht ungefähr was ich meine :).
Atmel nennt das "glitch-free PWM". Neuere AVR haben dieses Feature.
1
The OCRnx Register is double buffered when using any of the twelve
2
Pulse Width Modulation (PWM) modes. For the normal and Clear Timer
3
on Compare (CTC) modes of operation, the double buffering is disabled.
4
The double buffering synchronizes the update of the OCRnx Compare
5
Register to either TOP or BOTTOM of the counting sequence. The
6
synchronization prevents the occurrence of odd-length,
7
non-symmetrical PWM pulses, thereby making the output glitch-free.

von Kakadu (Gast)


Lesenswert?


von Lukas Z. (Firma: HTBLuVA - Salzburg) (lzopf)


Lesenswert?

Hallo,

Vielen Dank für die Antwort.

Also wenn das PWM Register jetzt wie in meinem Programm z.B. in einer 
While Schleife asynchron geändert wird. Heißt das soviel ich verstanden 
habe wird der neue Wert erst dann übernommen wenn TIMER TOP erreicht 
ist. D.h es dürfte kein Fehler auftreten soweit ich das mitbekommen 
habe.

Ich habe den ATMEGA 32. Muss ich damit die PWM Fehlerfrei arbeitet im 
Datenblatt schaun ob der AMTEGA 32 gltich free unterstütz bzw. ob es 
bestimte gepufferte Register gibt oder ist wie ich oben schon erwähn 
habe die PWM sowiso fehlerfrei da der asynchorne neue Wert erst bei 
TIMER TOP erreicht wird. ????

MFG

von Karl H. (kbuchegg)


Lesenswert?

Lukas Zopf schrieb:

> Ich habe den ATMEGA 32. Muss ich damit die PWM Fehlerfrei arbeitet im
> Datenblatt schaun ob der AMTEGA 32 gltich free unterstütz bzw. ob es
> bestimte gepufferte Register gibt oder ist wie ich oben schon erwähn
> habe die PWM sowiso fehlerfrei da der asynchorne neue Wert erst bei
> TIMER TOP erreicht wird. ????

Im Datenblatt ist bei jedem Timer eine Tabelle dabei (in der hintersten 
Section, die normalerweise irgendwas mit "Register Description" heißt).

In dieser Tabelle sind alle Modi aufgelistet, die der Timer kann.
Bei jedem Modus steht dabei, wodurch die Obergrenze des jeweiligen 
Timers festgelegt wird (fixer Wert oder Register) und auch wann der 
jeweilige OCR Wert sein Uupdate erhält.

Einfach mal reinschauen.
Diese Tabellen sind für mich einer der wichtigsten Teile im ganzen 
Datenblatt. (Soll heißen: die brauche ich oft)

Beim Mega32 ist das zb für den Timer 1 die Datenblattsektion
16.10 Register Description
und die angesprochene Tabelle findet sich als Tabelle 16.5 auf Seite 114 
wieder.

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.