PWM gibt auch bei OCRnX = 0; noch ein Signal.

OP #4613589
Guten Tag,
Bei mir sind heute die 100 RGB LED's angekommen. Die LED's haben einen 
gemeinsamen Masse Pol. Ich habe drei Poti angebracht für die RGB Farben, 
und lese diese mit dem ATMega644(16 Mhz) ADC aus. Und gebe das Ergebnis 
an denn Entsprechen PWM Output weiter. Ich habe denn Timer1(16 Bit) auf 
8 Bit Fast PWM mit ein Prescaler von 64 eingestellt. Beim Timer2(8 Bit) 
auch Fast PWM und Prescaler von 64. Dieses Signale gebe ich dann an die 
einzeln Pins der LED weiter. Jedoch bleiben die Farben der LED auch bei 
0 % PWM(OCRnX im USART ausgeben. Dort kommt "0" an.) noch schwach an. 
Auf dem Oszi Bild kann man sehen wie ab und zu "störbalken" nenne, ich 
sie mal auf treten. Wenn ich mehr PWM gebe, kommt das typische PWM Bild 
mit denn Balken.
Ist das normal?

Aufbau der Schaltung sowie das Oszi Bild und meine main Klasse habe ich 
angehängt.

Mfg J. Niehes
Angehängte Dateien:
#4613600
@Jan Niehes (jan_n497)

>an denn Entsprechen PWM Output weiter. Ich habe denn Timer1(16 Bit) auf
>8 Bit Fast PWM mit ein Prescaler von 64 eingestellt. Beim Timer2(8 Bit)

>Ist das normal?

Ja, das ist eine Eigenschaft der PWM des AVRs. Wenn das weg soll, gibt 
es 2 Wege.

1. Nutze Phase correct PWM, dann geht sowohl ganz aus bei 0 und ganz ein 
bei dem entsprechenden Maximalwert.
2. Behandle den Fall 0 gesondert und schalte die PWM.Funktion ab, das 
macht man mit den COMxy Bits im Timerregister A
#4613606
@Jan Niehes (jan_n497)

>> Behandle den Fall 0 gesondert und schalte die PWM.Funktion ab, das
>> macht man mit den COMxy Bits im Timerregister A

>Sorry, das verstehe ich nicht. Fall 0?

Wenn dein Programm eine 0 in OCRxy schreiben will, muss man das abfangen 
und getrennt behandlen
Natürlich muss man auch den Fall berücksichtigen, wenn nach 0 mal 
wierder nicht 0 geschrieben wird.
1
pwm=wasauchimmer;
2

3
if (pwm == 0) {
4
  // SOnderbehandlung, OCRxy abschalten und manuell auf LOW schalten
5
  TCCRxA = ...  // PWM ausschalten
6

7
} else {
8
  TCCRxA = ...  // PWM einschalten
9
  OCRxA = pwm;
10
}
#4613614
Im Datenblatt heißt es dazu:

The extreme values for the OCR0A Register represents special cases when 
generating a PWM waveform output in the fast PWM mode. If the OCR0A is 
set equal to BOTTOM, the output will be a narrow spike for each MAX+1 
timer clock cycle. Setting the OCR0A equal to MAX will result in a 
constantly high or low output.

Man kann also bei Invertierung der PWM ein konstantes "low" erreichen.
#4613619
@ Felix Pflaum (fixxl)

>Man kann also bei Invertierung der PWM ein konstantes "low" erreichen.

Kann man, aber dann hat man kein konstantes HIGH mehr. Was ist aber 
wahrscheinlich das kleinere Übel, denn ein leichte Glimmen der LEDs ist 
störender als nur 99,5% Maximalleistung.
OP #4613728
Falk B. schrieb:
> pwm=wasauchimmer;
>
> if (pwm == 0) {
>   // SOnderbehandlung, OCRxy abschalten und manuell auf LOW schalten
>   TCCRxA = ...  // PWM ausschalten
>
> } else {
>   TCCRxA = ...  // PWM einschalten
>   OCRxA = pwm;
> }

Hi Falk.
Sorry für die späte Antwort. Wahr beim Sport.
Hhmm, ich glaube das ich das nicht anwenden kann. Denn mit dem 16 Bit 
Timer kontrolliere ich die Rote und die Grüne LED in der RGB Led. Also 
ausschalten. Dann wäre ja auch der Rote weg wenn Grün 0 ist und 
umgekehrt. Ich werde es mal mit PWM Phase Correct versuchen
Gast #4613770
Hi

>Dann wäre ja auch der Rote weg wenn Grün 0 ist und
>umgekehrt. Ich werde es mal mit PWM Phase Correct versuchen

Dann schalte halt nur den entsprechenden Ausgangag ab.

MfG Spess
Gast #4613775
>Kann man, aber dann hat man kein konstantes HIGH mehr. Was ist aber
>wahrscheinlich das kleinere Übel, denn ein leichte Glimmen der LEDs ist
>störender als nur 99,5% Maximalleistung.

Genau umgekehrt. Das menschliche Auge wird den Unterschied zwischen 
99,5% und 100% überhaupt nicht sehen - ein leichtes Glimmen, wenn 
eigentlich Dunkelheit sein soll sehr wohl.
#4613988
Durchstarter schrieb:
>>Kann man, aber dann hat man kein konstantes HIGH mehr. Was ist aber
>>wahrscheinlich das kleinere Übel, denn ein leichte Glimmen der LEDs ist
>>störender als nur 99,5% Maximalleistung.
>
> Genau umgekehrt. Das menschliche Auge wird den Unterschied zwischen
> 99,5% und 100% überhaupt nicht sehen - ein leichtes Glimmen, wenn
> eigentlich Dunkelheit sein soll sehr wohl.

Darüber willst du nochmal nachdenken. Glaube ich.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.