www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AtMega128 PWM Signal Timer1


Autor: Maria Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, bin am Verzweifeln, hat von euch jemadn vieleicht eine Ahnung 
wieso von meinen ins OCR1B+C Register geschriebenen Werten nur das High 
Byte(OCR1BH) durchgeschoben wird und im Simulator des AVR Studius dan 
aber im OCR1BL ankommt. Die Reihenfolge müsste laut Manual eh so 
stimmen.
Ich bin für jede Hilfe dankbar.

 
// WGM13:0 = 15  => FAST PWM mit OCR1x als TOP
// COM1B1:0 + COM1C1:0 = 3 => Clear OCnA/OCnB/OCnC on compare match, set OCnA/OCnB/OCnC at TOP
// CS12:0  = 2  => clkI/O/8 (From prescaler)
    TCCR1A |=  (1<<COM1B1) |(1<<COM1B0) |(1<<COM1C1)|(1<<COM1C0) | (1<<WGM11) | (1<<WGM10);

  TCCR1B |=  (1<<WGM13) | (1<<WGM12) |(1<<CS11);

  OCR1BH = 0xA3;   
  OCR1BL = 0xF1;

  OCR1C = 0xF0A2;

  TIMSK |= (1<<OCIE1B) | (1<<TOIE1);

  ETIMSK |= (1<<OCIE1C);

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

Bewertung
0 lesenswert
nicht lesenswert
Bei 16 Bit Regsitern, die aus einem Low und einem High
Byte bestehen, sollte man immer die Reihenfolge: zuerst
Low Byte, dann High Byte beschreiben einhalten. Einige
dieser Register (alle?) sind gepuffert. Erst das schreiben
des High-Bytes führt den tatsächlichen Datentransfer
des Lowbytes aus.

Autor: Maria Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist komischerweise wenn ich
 OCR1BL = 0xF1;
 OCR1BH = 0xA3;   

mache dann funktioniert noch weniger, da gelangen nämlich keine Daten in 
die Register.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach einfach so! der compiler sollte sich um alles weitere kümmern!

OCR1B = 0xA3F1;

Autor: Maria Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei
OCR1B = 0xA3F1;

wird komischerweise das Register OCR1BL mit 0xA3 gefüllt.. OCR1BL bleibt 
auf 0x00.

Autor: Maria Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"OCR1BH bleibt auf 0x00. "
Sollte das heissen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist nur im simulator so! funktioniert nicht richtig (sogennanter 
bug)! wenn du das auf den uC programmierstst sollte es gehen!

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.