Wenn dir die Pins bei einem MegaAVR nicht reichen, dann weiß ich auch nicht. Da kannst du das LCD ja sogar mit 8 Pins anschließen!
Was die Ressourcen angeht: Die Timer müssen halt gut durchdacht werden und sind dann IRQ-ausgelöst. Da ist das LCD-ansprechen überhaupt nicht relevant. Wenn was zeitkritisches ansteht muss das per IRQ erfolgen, dann wird das alles kein Problem.
Ich würde einen kurzen Timer planen, in dem dann die PWM-Signale erzeugt werden. Einfach den Timer auf die gewünschte Frequenz z.B. 30 Hz berechnen und 4 if-Abfragen, ob der Pin High gesetzt werden soll für den entsprechenden PWM-Ausgang. Wenn der Timer dann resetet wird, alle Ausgänge wieder auf Low.
Dann kommt noch ein weiterer Timer als Zähler für deine Duty-Cycles. Diese legst du am besten an die INT0 und INT1 Eingänge und liesst dann beim IRQ immer nur den Zählerstand ab. Fertig.
Bis jetzt wird quasi noch keine Prozessorlast erzeugt.
LCD + Taster macht dann der AVR gähnend im Hauptprogramm und langweilt sich geschätzt 80% in Warteschleifen.
Was du mit dem Multiplexen meinst, weiß ich nicht genau, sollte aber egal wie auch noch locker zu realisieren sein.
Viele Grüße
Andreas
Lesezeichen