Problemlos möglich, ich hab vor nicht allzulanger Zeit 16 Software PWM Kanäle mit 8 Bit Auflösung bei 500 Hz realisiert.Zitat von Goblin
Der Mikrocontroller lief dabei mit 16 MHz und er war von der Rechenzeit her zu ca. 30% ausgelastet, insofern die PWM Werte konstant blieben.
Neue PWM Werte benötigten ca. 3-4 ms um verarbeitet zu werden.
Bei meiner Anwendung wurden die neuen Daten über die serielle Schnittstelle übertragen. Flackern oder Stehenbleiben gab er wären der Übertragung nicht.Zitat von Goblin
Im übrigen würde ich die TWI nicht pollen sondern mit einem Interupt und entsprechenden Statusflags arbeiten.
Vom Prinzip her funktioniert es recht einfach, der Code allerdings ist wesentlich komplexer und Assemblertypisch recht schlecht lesbar. Deshalb möchte ich hier davon Abstand nehmen ihn zu posten.
Das Funktionsprinzip (ein kurzer Umriss):
Ich benötige einen schnelllaufenden Timer, welcher für die Ansteuerung der LED`s zuständig ist.
Die eingehenden Daten werden in eine Kanalmatrix umgerechnet, welche neben dem tatsächlich angesprochenem Kanal(Pin) auch den entsprechenden Helligkeitswert beinhaltet. Anschließend wird die Kanalmatrix nach der Helligkeit sortiert und gepackt. Diese Daten stehen dann im RAM bereit und werden in der Timerroutine nur noch ausgegeben.
Bei Bedarf kann ich das System das dahinter steckt gerne näher erläutern.
Grüße,
Hanni
Lesezeichen