Ich habe mir mit einem tiny2313 einen kleinen LED Cube (3x3x3) gebaut.
Bis jetzt benutze ich einen 8bit Timer für das Multiplexen der 3 Ebenen
und einen 16Bit Timer für das durchschlaten der einzelnen
komplett-Bilder.
Im Timer für die Bilder habe ich noch ein Register als Zähler, das mit
einem anderen Register, das einen bestimmten Wert enthält,
verglichenwird. Es wird nur auf das nächste Bild geschaltet wenn der
Zähler mit dem vergleichswert übereinstimmt und der Zähler wird dann
wieder auf null gesetzt. Andernfalls wird nur der Zähler um 1 erhöht.
So kann ich also über das register mit dem vergleichswert, die
geschwindigkeit mit der der Würfel die einzelnen Bilder durchschaltet
beeinflussen.
Jetzt hätte ich es gerne so, dass ich die Geschwindigkeit ändern kann
ohne das Programm zu ändern und neu in den tiny zu schreiben.
Ich dachte jetzt entweder an eine astabile Kippstufe mit einem NE555
(mit Poti) dessen Ausgang ich an INT0 oder INT1 anschließe.
oder zwei Taster, einer erhöht das register mit dem vergleichswert, der
andere veringert es.
Am besten wäre noch ein umschalter zwischen beiden Varianten. Ob das
sinnvoll ist, ist erstmal egal. Mir gehts mehr ums prinzip wie man sowas
macht und den Lerneffekt.
Der Umschalter müsste dann ja entweder den 16Bit Timer oder den externen
Interrupt aktivieren, odeR?
Ist das so machbar?
Wie müsste man dann die Taster im Programm abfragen?
Im moment besteht das Programm nur aus den ganzen Initalisierungen und
den beiden timer Interrupt Handler Teilen.
Würde es bei dem Umschalter dann reichen den entsprechenden PIN
abzufragen und dann entsprechend das TIMSK Register zu ändern?
EDIT:
so einen umschalter könnte man doch auch auf einen Interrupt pin legen
und im Interrupt Handler dann das TIMSK Register mit einem geigneten
Bitmuster XOR nehmen, oder?