Hallo zusammen. Ich steuer mittels eines Atmega8 und 3 Transistoren einen 2M RGB-LED-Stripe an und generiere mittels 8-Bit-Hardware-PWM Dimm- und Fade-Effekte. Das funktioniert soweit auch schon ganz gut, jedoch habe ich noch ein kleines Problem: Die blauen LEDs gehen nie ganz aus und glimmen immer ein wenig, selbst wenn wenn ich den OCR1A-/OCR1B-/OCR2-Wert auf 0 setze. Rot und Grün sind dann auch komplett aus, nur Blau glimmt halt noch ein wenig. Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind jeweils vor dem Kollektor des Transistors angschlossen. Nehme ich den µC komplett aus seinem Sockel, sind alle LEDs aus (auch die Blaue). Wisst ihr woran das liegen könnte? Grüße!
Hi >Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set >OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind >jeweils vor dem Kollektor des Transistors angschlossen. Die minimal ON-Zeit (OCR=0) ist ein Timer-Takt. D.h. die Ausgangspannung wird nicht Null. Im einfachsten Fall hilft invertierte PWM. MfG Spess
Oder Phase/Frequency Correct PWM, dann geht auch 0 richtig aus.
Hi
>Oder Phase/Frequency Correct PWM, dann geht auch 0 richtig aus.
Aber nur mit der halben Frequenz.
MfG Spess
Spess53 schrieb: > Hi > >>Bei der PWM benutze ich die Fast-PWM mit "Clear on Compare Match, set >>OCR1A/OCR1B/OCR2 at BOTTOM, (non-inverting mode)" und die LEDs sind >>jeweils vor dem Kollektor des Transistors angschlossen. > > Die minimal ON-Zeit (OCR=0) ist ein Timer-Takt. D.h. die Ausgangspannung > wird nicht Null. Im einfachsten Fall hilft invertierte PWM. > > MfG Spess Danke für den Hinweis, von dieser "Problematik" habe ich sogar schon mal gehört. Aber warum gehen Rot und Grün bei mir komplett aus wenn ich OCR=0 setze, Blau jedoch nicht? Ich verwende nämlich bei allen LEDs die nicht-invertierte PWM. Die Register habe ich wie folgt gesetzt: TCCR2 = (1<<WGM20) | (1<<WGM21); TCCR2 |= (1<<COM21); TCCR2 |= (1<<CS21); TCCR1A = (1<<WGM12) | (1<<WGM10); TCCR1A |= (1<<COM1A1) | (1<<COM1B1); TCCR1B = (1<<CS11); Grüße
Könnte da evtl. noch jemand was zu sagen? Also warum Rot und Grün komplett aus gehen und Blau nicht, obwohl ich überall die gleiche PWM verwende?
Magnus M. schrieb: > jaynis schrieb: >> TCCR1A = (1<<WGM12) | (1<<WGM10); > > WGM12 liegt in TCCR1B. > > Zeig mal deinen Code. Eigentlich ist das Obige schon das Relevante aus meinem Code. Danach ändere ich nur noch die OCR-Werte (bzw. setze sie im konkreten Fall auf 0). Aber Danke für deinen Hinweis, ich glaube daran könnte es liegen! Ich habe mich da im Datenblatt (http://www.atmel.com/images/doc2486.pdf) wohl verlesen. Ich bin davon ausgegangen, dass WGM12 zu TCCR1A gehört, da die "Waveform Generation Mode"-Tabelle auf Seite 97 in der Beschreibung des TCCR1A Registers liegt. Deshalb habe ich fälschlicherweise gedacht, dass alle Werte dieser Tabelle zu TCCR1A gehören und nicht gemerkt, dass sie ja Registerübergreifend ist. Long story short: Da ich in TCCR1B das WGM12-Bit nun gar nicht gesetzt habe, habe ich auch nicht die 8-Bit-Fast-PWM gewählt, sondern die 8-Bit-Phase-Correct-PWM. Ich könnte mir vorstellen, dass dort das Problem liegt.
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.