Hallo, meine ersten Versuche, mit einem Atmega16 hardwaremäßig über PD7 = OC2 eine PWM-Frequenz auszugeben, waren unbefriedigend. Ich hatte mir vorgestellt, man könne die hardwareimplinentierte PWM-Einheit irgendwo anstoßen und sie liefe dann unabhängig vom Programm weiter, bis man sie wieder abstellt. Das scheint aber nicht richtig zu sein - oder meine Programmsequenz ist nicht richtig? Ich habe am Anfang des main-Programms eingefügt: TCCR2 = (1<<WGM20) | (1<<WGM21) | (1<<COM21) | (1<<CS21) | (1<<CS20); TCNT2 = 254; OCR2 = 80; D.h., es sollte in fast-PWM-Mode mit dem Prescaler 32 der Port OC2 (=PD7) ein- und ausgeschaltet werden. Zur Kontrolle ist erst einmal eine LED angeschlossen. Man sieht aber nichts. Die Sequenz wird ein einziges mal durchlaufen, irgendwelche Interrupts sind nicht gesetzt. Kann mir jemand erklären, was hier falsch ist. Vielen Dank schon mal Egon
Gast
#1105209
> Kann mir jemand erklären, was hier falsch ist.
gerne, aber:
poste bitte etwas mehr Code, aus den 3 Zeilen ist nicht zu erkennen mit
was der M16 sonst noch so beschäftigt ist. Kurz und knapp evtl.
compilierbar. Dieses können wir uns anschauen und dann bestimmt auch
helfen.
Gast wrote: >> Kann mir jemand erklären, was hier falsch ist. > > gerne, aber: > poste bitte etwas mehr Code, aus den 3 Zeilen ist nicht zu erkennen mit > was der M16 sonst noch so beschäftigt ist. Kurz und knapp evtl. > compilierbar. Dieses können wir uns anschauen und dann bestimmt auch > helfen. Da ist bei diesem Versuch nicht viel Code, die drei fraglichen Zeilen und Versatzstücke aus einem anderen Programm: // allererster PWM-Versuch: 9.1.09 #include <avr/io.h> #include <util/twi.h> #include <stdint.h> #include <stdio.h> #include <util/delay.h> void ring(void) // Anrufvisualisierung { int n=9; while(n-- >1) { DDRB |= 1; PORTB &= 254; // LED ein _delay_ms(50); PORTB |= 1; // LED aus _delay_ms(50); } return; } void main(void) { ring(); // TCCR2 = 107; TCCR2 = (1<<WGM20) | (1<<WGM21) | (1<<COM21) | (1<<CS21) | (1<<CS20); TCNT2 = 254; OCR2 = 80; } mfg Egon
Zitat Datenblatt:
1 | |
2 | |
Stefan Ernst wrote: > Zitat Datenblatt: >
1 | |
2 | |
3 | |
Ja, sehr peinlich. Ich hatte es auch im Datenblatt gelesen, aber schließlich nicht mehr daran gedacht. Vielen Dank! Egon
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.