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
@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
Falk B. schrieb: > 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?
@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 | }
|
:
Bearbeitet durch User
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.
@ 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.
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
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
>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.
spess53 schrieb: > Dann schalte halt nur den entsprechenden Ausgangag ab. Ich nutze einfach Phase Correct. Damit geht es super.
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.
Jan N. schrieb: > Ich nutze einfach Phase Correct. Damit geht es super. Ja sicher, allerdings nur mit (wahlweise) halber Auflösung oder halber PWM-Frequenz. Das ist der Nachteil gegenüber Fast PWM.
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.