mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenzstabiles PWM Signal über AtMega16


Autor: Kamui1981 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich verzweifle gerade bei dem Versuch auf meinem AtMega16 ein PWM-Signal 
auszugeben.
Es sollte 55,6kHz als stabile Frequenz am PIN PD5 (OC1A) liefern. Das 
Verhältnis von Ein- zu Ausschaltzeit möchte ich je nach Ergebnis 
verschiedener Berechnungen neu setzen können.

Im Datenblatt des AtMega16 auf S.106 habe ich den "Phase and Frequency 
Correct PWM Mode" gefunden und folgendermaßen aufgebaut:
int main (void)
{
   DDRD=0xff;
   TCCR1A = (1<<COM1A1) | (1<<WGM10)
   TCCR1B = (1<<WGM13)  | (1<<CS12)
// WGM10-WGM13 bestimmen die Waveform -> Datenblatt S. 112 Tabelle 47 Mode 9)
// COM1A1 und COM1A0 bestimmen den Output Mode --> S.111 Tabelle 46 --> Hier möchte ich dass der Ausgang so lange high ist, bis der "compare match" erreicht ist.
// Danach ist der Ausgang low, bis der Counter wieder bei BOTTOM ankommt und die nächste Periode beginnt. --> COM1A1=1 COM1A0=0.
// CS10-CS12 bestimmen den Prescaler --> gewünscht 256 --> CS12=1, CS11=0 und CS10 =0
}

Laut Tabelle 47 wird der TOP-Wert über das Register OCR1A eingestellt. 
Dieses 16bit Register ist in OCR1AH und OCR1AL unterteilt.
Wenn ich Figure 48 auf S.107 richtig verstehe, dann geht eine Periode 
immer von BOTTOM zu BOTTOM und die Frequenz steigt dadurch, dass ich den 
TOP-Wert reduziere. Um also die Frequenz einzustellen muss ich den 
TOP-Wert nach der Formel auf S.107 ausrechnen.
(TOP = Systemtaktfrequenz/2*prescaler*f_Soll= 8MHz/2*256*55,8kHz = 
0,28.)
Da TOP von 0 bis MAX insgesamt 2^16 also 65536 Schritte hat, soll es 
jetzt nur 28%, also von 0 bis 18350 zählen um die gewünschte Frequenz 
von 55,8kHz zu generieren.
Das heißt:
OCR1AH= 0b01000111;
OCR1AB= 0b10101110;
Bin ich jetzt schon komplett auf dem Holzweg oder ist das soweit 
richtig. Aber wenn es richtig ist, wo setze ich jetzt das Verhältnis von 
Ein- zu Ausschaltzeit fest?
Hoffe Ihr könnt mir helfen.

Mit freundlichen Grüßen
Kamui

P.S: Noch ein ganz dickes Lob an die ganze microcontroller.net 
Community. Ich habe Ende letzten Jahres mit dem programmieren von 
Mikrocontrollern begonnen und ohne eure Threads, Tutoriums und 
Einführungshilfen hätte ich schon längst wieder aufgegeben. Vielen Dank 
euch allen.

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.