Hallo, habe eine PWM 10bit Phase Correct am laufen. Wenn ich OCR1A oder OCR1B setze funktioniert die PWM ohne Probleme. Wenn ich jedoch OCR1A = 0; oder OCR1B = 0; setze sind die LEDs jedoch nicht ganz aus. Die LED bleibt immer noch ganz leicht an. Wer kann mir da weiter helfen? Danke euch.
Hi >Die LED bleibt immer noch ganz leicht an. Ist normal: If the OCRnx is set equal to BOTTOM (0x0000) the output will be a narrow spike for each TOP+1 timer clock cycle. > Wer kann mir da weiter helfen? Entweder invertierter Betrieb oder phase/freqency correct benutzen. MfG Spess
Sie sollten aber aus sein. Also Fehler in Zeile 42, oder Baustein 42 defekt... Oliver
spess53 schrieb: > If the OCRnx is set equal to BOTTOM (0x0000) the output > will be a narrow spike for each TOP+1 timer clock cycle. Hi, Das ist nur bei Fast PWM so aber angeblich wird ja Phase Correct benutzt. Also bitte mal mindestens die Initialisierung des Timers zeigen. Gruß, Norbert
Habe gerade festgestellt das es beim ATMega32 genau so ist -.- ATMega8 Code
1 | #include <avr/io.h> |
2 | #include <stdint.h> |
3 | #include <avr/interrupt.h> |
4 | |
5 | void timer_start(void) |
6 | {
|
7 | OCR1A = 125-1; |
8 | TCCR1B |= (1 << WGM12); |
9 | TIMSK |= (1 << OCIE1A); |
10 | TCCR1B |= (1 << CS01); |
11 | sei(); |
12 | }
|
ATMega32 Code
1 | // Timer 1 || PWM
|
2 | TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1); |
3 | TCCR1B = (1<<WGM12)|(1<<CS10); |
4 | OCR1A = 0; |
5 | OCR1B = 0; |
6 | |
7 | sei(); |
Dimmen geht von 0 - 254. Also OCR1X = 0 - 254 geht. Aber bei 0 sind die LEDs eben nicht aus.
Rene H. schrieb: > habe eine PWM 10bit Phase Correct am laufen. Sicher? Rene H. schrieb: > ATMega8 Code > #include <avr/io.h> > #include <stdint.h> > #include <avr/interrupt.h> > > void timer_start(void) > { > OCR1A = 125-1; > TCCR1B |= (1 << WGM12); > TIMSK |= (1 << OCIE1A); > TCCR1B |= (1 << CS01); > sei(); > } Das ist der CTC Modus. > ATMega32 Code > // Timer 1 || PWM > TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1); > TCCR1B = (1<<WGM12)|(1<<CS10); > OCR1A = 0; > OCR1B = 0; > > sei(); Das ist Fast PWM (10 Bit).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.