RGB Farbwechsel Verbesserungsvorschläge

OP #1557646
Lesenswert?

Hallo,

ich bastle derzeit ein bisschen für ein Projekt das ich dämnächst in 
Angriff nehmen will und brauche dafür ein paar Funktionen u.A. auch ein 
RGB Farbwechsel nun habe ich mich mit meinem Wissen an µC Programmierung 
mal hingesetzt und was programmiert.

Muss sagen es funktioniert gut aber es ist sicherlich nicht der beste 
Weg das umzusetzten :)

Ich hoffe auf eure Kritik und Verbesserungsvorschläge zu meinem Code.

MFG Daniel L.
Angehängte Dateien:
Gast #1557653
Lesenswert?

Wenn dir 8 Bit pro Farbe reichen und der eingesetzte AVR genug Timer und 
PWM Kanäle bietet lässt sich ein Großteil per Hardware-PWM erledigen. Du 
brauchst dann nur noch bei Bedarf neue Werte für R,G,B in die Register 
laden und der Rest läuft im Hintergrund.
Gast #1557654
Lesenswert?

Ich weiss zwar nicht welchen AVR du benutzt aber vielleicht wäre es eine 
Möglichkeit für dich per Hardware zu lösen. Du musst dann nur noch die 
richtigen Timer Einstellungen machen und kannst die RGB-Werte direkt ins 
Register schreiben.
OP #1558183
Lesenswert?

Hi,

hab mich heute mal an Hardware PWM gewagt, doch irgendwie kommm ich da 
nicht weiter.

Allerdings funktioniert das so wie ich mir das gedacht hatte nicht und 
mir ist aufgefallen das der Timer 2 bei OCR2 = 0 immer noch glimmt 
obwohl er auf 0 ist.

Ich hab im Anhang mal mein Ansatz gepostet, der jedoch nicht 
funktioniert hoffe ihr könnt mir sagen wo mein Denkfehler dabei ist :)
Angehängte Dateien:
#1558256
Lesenswert?

Der zählt in jedem Durchlauf von 0 bis 255 und unterteilt damit eine 
Periode in 256 Zeitabschnitte. Das OCR kann ebenfalls 256 Werte 
annehmen, was ausreicht, um die Zustände von "Ein Takt ist an" bis "alle 
256 Takte sind an" abzubilden. Für den Zustand "alle Takte sind aus" 
wäre aber noch ein 257. Zustand nötig.

Es ist auch in den AVR-Datenblättern dokumentiert, daß bei positiver 
Logik am OCR-Ausgang (einschalten bei Überlauf, ausschalten bei 
OCR-Match), der OCR-Wert 0 zu einem kurzen Impuls am Ausgang führt.

Abhilfe kannst Du z.B. dadurch schaffen, daß Du den OCR mit negativer 
Logik arbeiten läßt, also aus bei Überlauf, ein bei OCR-Match. Den 
OCR-Wert mußt DU dann natürlich auch umdrehen, statt x also 255-x. 
Dadurch verschiebst Du den Spike ans helle Ende der Skala, an dem das 
menschliche Auge weit weniger empfindlich ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren