20ms sind für einen Mikrocontroller halt recht lang. Von den 20ms interessieren nur die ersten 2ms, deswegen wäre hier ein 16bit-Timer interessant.
Salopp gesagt interessiert nur das erste zehntel - selbst wenn man 8bit voll ausnutzen könnte, lägen im ersten zehntel nur 25 diskrete Werte. Bei einem 16bitter entsprechend etwa 6553. Da wir den 16bitter auch nicht voll nutzen und den 8ter Vorteiler nutzen, können immerhin noch 1101 verschiedene Werte angefahren werden.
Für den Entfernungsmesser willst Du auch 'ne möglichst gute zeitliche Auflösung. Grundsätzlich wäre da erstmal egal, ob 8 oder 16 Bit - da der 8Bitter aber viel öfter überläuft (und die Überläufe mitbehandelt werden müßten), wäre auch hier ein 16bitter vorzuziehen. Der Tiny441/841 besitzt zwei identische 16bitter, Du könntest also beide verwenden. Deine Frage/Annahme in #19 war, ob/daß man dafür zwingend zwei Timer braucht. Und meine Antwort war, daß es auch mit einem gehen sollte, falls die Auflösung für den entfernungsmesser dann noch hinreichend ist.
Erzielbar wäre 'ne Auflösung von 1µs. Schallgeschwindigkeit war etwa 345m/s (Faustregel: 3s für einen Kilometer -> Gewitter, Blitzentfernung abschätzen).
Bzw 345mm/ms. Bzw 0,345mm/µs. Da sich durch die Reflektion aber der Weg (und somit die Zeit) verdoppelt, könnten wir auf 0,1725mm auflösen.
Da die frequenzkorrektur des Timers über KanalA erfolgt, muß die PWM-Ausgabe über KanalB erfolgen. Das Signal kann auf jeden beliebigen TOCCn mit n gerade geschaltet werden. Du kannst Dir also einen aussuchen, der nicht mit anderen Funktionen kollidiert.
Input Capture Pin von Timer1 wäre A7 (einer der extra High Sink Ausgänge), ICP von Timer2 wäre B2.
und welcher Eingang für ADC am besten ist.
Da jedes Bein als single ended Input genutzt werden kann, spielts da keine Rolle. im differential ended mode hingegen ist nur ein Teil aller theoretisch denkbaren Kombinationsmöglichkeiten nutzbar. Meiner Erinnerung nach hatte ich das schon mal irgendwo zusammengestellt - ADC7 war wohl mit den meisten kombinierbar. Aber wenns nur um ein Paar geht, läßt sich sicher auch was anderes finden...
Nicht alle Kombinationen sind umkehrbar...
Also - wenn Du Dir A7 für irgend'ne andere PWM freihalten willst, solltest du Servo und Entfernungsmesser über Timer2 laufen lassen. Damit wäre für den Sensor ICP2 festgelegt, außerdem die beiden Hardware-TWI-Beine. Der zweite extra high sink wäre TOCC4, wenn das Servo den nicht braucht, wären TOCC2 oder TOCC0 vorzuziehen (wenn man den freihalten will).
Die Genauigkeit der Sensormessung wird natürlich durch den Systemtakt bestimmt. Also soll möglicherweise ein Quarz an die XTALs, oder ein externer präziser Oszillator an ClockIn...
Bei ADC-Messungen willst Du vielleicht gegen eine präzisere externe Spannungsreferenz als die internen messen - dann muß Aref entsprechend beschaltet/freigehalten werden.
Wie gesagt: einige Funktionen können bedingt flexibel auf unterschiedliche Beine geschaltet werden - je nachdem, was Du noch alles nutzen willst, werden dann bestimmte Konstellationen ausgeschlossen. Aber ich weiß eben nicht, was Du noch zusätzlich nutzen willst.
Bisher hast Du konkret nur 'n Servo, den Entfernungsmesser und TWI.
Für LEDs und Taster brauchst Du keine speziellen Beine, möglicherweise aber 'n zweiten Timer (obwohl die 20ms auch für Polling+Entprellung herhalten können).
Dasselbe dann beim Drehencoder.
Vielleicht hast Du bei LEDs auch an PWM und/oder 'ne RGB-LED gedacht, hier wären dann weitere Timer und TOCCs festzulegen (möglicherweise insbesondere auch die extra high sink Beine).
Die beiden Potis des Joysticks wären je (abwechselnd) im single ended Mode durch den ADC zu messen - hier wären die Beine also wieder egal.
Sollen Joystick und Encoder zusammen bestückt werden (also gleichzeitig nutzbar), oder alternativ? Bei letzterem könnten ja dieselben Eingänge vorgesehen werden - entweder entsprechend mit zwei alternativen Firmwares, oder mit einer Firmware die beides unterstützt, und wo die tatsächliche Bestückung im Eeprom abgelegt/ausgelesen werden kann (und ggf per TWI vom Master verändert werden kann).