Der 441/841 hat 12 I/Os. Elf, wenn der Reset Reset bleiben soll.
Du brauchst grundsätzlich:
- 2 - für I²C
- 2 - für den Drehgeber
- 1 - für den Taster
- 3 - für LEDs
Blieben erstmal drei Beine frei.
Andere Möglichkeit ist den Quarz wegzulassen, zu ungenau dadurch?
Wofür willst/brauchst Du denn Quarz-Genauigkeit?
Für den Drehgeber/Taster?
Ob die PWM-Frequenz der LEDs 'n Tick höher oder tiefer ist, interessiert Dich auch nicht (soll eh hinter der Wahrnehmungsgrenze liegen).
Und I²C ist 'ne gelatchte Übertragung.
Die LEDs im Encoder sind für 20mA festgelegt. Muss also noch zusätzliche Transistoren rein für die LEDs.
Hast du eine Idee dazu?
Für die R
GB wirst Du mit 'ner Versorgungsspannung von 5V (zumindest über 3V5) arbeiten müssen; ab 3V können A5 und A7 die 20mA aufnehmen. Wenn Deine LED sich als Common Anode betreiben läßt, kein Thema.
Bliebe die dritte LED. Bei 5V verkraften die anderen Beine 10mA. Entweder Du legst die auf 10mA aus, oder Du verwendest 'nen externen Transistor, oder Du klärst, ob Du zwei Ausgänge parallel schalten kannst.
Dann blieben zwei Pins für die Adresswahl. (Drei, wenn man den Reset miteinbezieht).
A5 ist als (extra) High-Sink pin allerdings auch default-MISO, und somit Bestandteil des ISP. Während des Reset (und des Flashens) wird sich der Pin nur im High-Sink (nicht em Extra High Sink) Mode befinden. Trotzdem sollte der Tiny die (bei Vcc=5V) beim Flashen mittreiben können. Würde ich an Deiner Stelle also einfach vorher ausprobieren.
Für die anderen beiden ISP-Leitungen bietet sich zB der Taster an (wenn sicher gestellt werden kann, daß keiner den beim Programmieren drückt), und der Pin der dritten LED. (Die Adress-Jumper willst Du nicht jedesmal kontrollieren müssen, den Encoder in eine Position drehen wo der/die Schalter offen sind sicher auch nicht...)
Du hattest Dich auf diesen Controller wegen des Hardware-Slave-TWI festgelegt - die Alternative wäre ein anderer Controller der mehr Leistung durch die Pins verträgt, aber dann ggf nur USI (oder gar kein Hardware-I²C) hat.