AVRMega, GCC: PWM Modus 15: Ausgang bleibt "stumm"

Gast #597032
Lesenswert?
• ▲
▼
Hallo,

habe einen AVR Mega und möchte dort ein PWM Signal mit dem 16-Bit Timer 
erzeugen. Wenn ich das Datenblatt richtig verstehe, kann ich mit Modus 
15 mit dem Register OCR1A den oberen Grenzwert (=Periodendauer) 
festlegen, mit ICR1 den Vergleichswert bei dem der Ausgangspin getoggeld 
wird. Damit am Pin OC1A ein Signal erscheint, muss der Pin auf Ausgang 
geschaltet sein.
Interrupts o.ä. benötige ich nicht, d.h. das PWM Signal soll immer 
widerholt werden, wo der Counter aktuell ist, ist meiner Anwendung egal.
Mein Code zur Initialisierung:
1
// Port B, Pin 1 als Ausgang
2
DDRB |= (1 << PB1);
3
// PWM Mode 15 = Fast PWM, nicht invertierter Ausgang auf Pin PB1=OC1A, Prescaler 64
4
TCCR1A |= (1 << COM1A1) | (1 << WGM11) | (1 << WGM10);
5
TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10);
6
// Testsignal
7
OCR1A = 0xAAAA; // Periodendauer
8
ICR1 = 0x2222;  // Toggelwert

Leider kann ich am Pin PB1 jedoch kein toggeln erkennen. Woran liegt 
das?
Habe außerdem Probleme die korrekten Werte des Prescalers und der 
Periodendauer auszurechnen. Mein Quarz hat 14MHz, gewünscht sind 15msec 
Periodendauer, wovon 3msec high sein sollen. Wie geht man da am besten 
vor? Im Datenblatt steht zwar die Formel, aber ich kenne ja nur meine 
gewünschte Frequenz/Periodendauer, aber weder den TOP Wert, noch den 
Prescaler.

Gruß,

Jan
Gast #597042
Lesenswert?
• ▲
▼
Das ICR ist ein Input Capture Register und hat wohl nichts mit der PWM 
zu tun. Für das Pin-toggeln ist das TCCR1A zusrändig, und zwar die Bits 
COM1A1 und COM1A0. Da stellst du ein, wie der Pin reagieren soll.

MW
Gast #597063
Lesenswert?
• ▲
▼
Welchen AVR haste denn da am Wickel?

Ansonsten meine ich, dass ICR die Frequenz bestimmt und OCR das 
Tastverhältnis. Das heisst, ICR muss immer großer als OCR sein, sonst 
passiert bei der PWM nicht mehr viel.

Michael hat aber soweit auch Recht, dass du mit den COM Bits den Portpin 
noch mit der PWM verknüpfen musst. Ansonsten passiert auf dem Pin 
garnichts, auch wenn dein Timer richtig läuft.

gruß
Gast #597090
Lesenswert?
• ▲
▼
Hallo,

habe bei Roboternetz eine schöne Anleitunge gefunden. Code läuft jetzt 
im Modus 14 (statt 15) und geht einwandfrei:

// Port B, Pin 1 als Ausgang
DDRB |= (1 << PB1);
// Mode 14 = Fast PWM, nicht invertierter Ausgang (OC1A), Prescaler 8)
TCCR1A |= (1 << COM1A1) | (1 << WGM11);
TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11);
ICR1 = 10000;
OCR1A = 1000;

Wenn man "einfach" mittels der WGM Bits auf Modus 15 umstellt, kommt 
nichts mehr am Ausgang. Aber egal, 14 geht auch ;=)

Gruß,

Jan
Gast #597247
Lesenswert?
• ▲
▼
> Wenn man "einfach" mittels der WGM Bits auf Modus 15 umstellt,
> kommt nichts mehr am Ausgang.

logisch, dann musst du mindestens die Werte für ICR1 und OCR1x tauschen 
;) scnr

ABer auch wenn es einigen unlogisch vorkommt: im Mode 15 wird der TOP 
Wert mit dem OCR-Register und der Compare-Wert mit dem ICR-Register 
eingestellt. Das ICR Register ist ungepuffter: wenn da rein geschireben 
wird ändert sich direkt das Verhalten des Timers, der Inhalt des 
OCR-Registers wird erst beim nächsten 'Überlauf' vom Timer übernommen

hth. Jörg

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.