www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Fehler bei OCR setzen


Autor: Lukas Zopf (Firma: HTBLuVA - Salzburg) (lzopf)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael H. (michael_h45)
Datum:

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

Autor: Kakadu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Lukas Zopf (Firma: HTBLuVA - Salzburg) (lzopf)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.