ATMega8 Timer0 PWM (LED Dimmen) schaltet nicht komplett ab

OP #4395110
Lesenswert?
• ▲
▼
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.
Gast #4395127
Lesenswert?
• ▲
▼
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
OP #4395197
Lesenswert?
• ▲
▼
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.
Persönliche Seite #4395217
Lesenswert?
• ▲
▼
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).

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.