RGB Farbwechsel Verbesserungsvorschläge

OP #1557646
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
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
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
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:
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

Eine eigene Frage? Dieser Thread ist über 16 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.