Es klang so, als wenn Du den 2313 gern als universellen Tiny für alles einsetzt, weil man sich dann eben nur mit dem einen auskennen muß...
DA würde ich dann aber eher auf einen mit ADC (möglichst differentiell und bipolar) und UART und SPI und TWI setzen. Egal.
Zum stromsparen hilft (wie Thomas bereits angedeutet hat) eine Reduktion der Betriebsspannung (was nebenbei vielleicht auch nochmal den Trafo verkleinert?) und der Taktfrequenz (bei manchen AVR kann man zB den Watchdog Oszillator als Systemtakt nutzen (@Thomas: und beim Tiny441 sogar zur Laufzeit variabel die ClockSources umschalten)).
Aber damit reduzierst Du eben den Strom den der Controller selbst verbraucht vom mA-Bereich in den µA (nA) Bereich (Oft wird die A/PA-Generation auch als picoPower-Variante bezeichnet, genaueres muß man den Datenblättern entnehmen). Dem gegenüber stehen aber immer Verbraucher im mehrstelligen mA-Bereich, um die Du Dich eher kümmern solltest.
Was sich bei dem Analog-Teil sparen läßt, kann ich nicht sagen, zum AVR:
- über das Widerstandsnetzwerk fließt zB immer entsprechend der Codierschalter Strom. Wie oft müssen/sollen die den ausgewertet werden? Man könnte zB festlegen, daß die nur einmal nach einem Reset ausgewertet werden sollen. In der Software könnte man dann nacheinander(!) immer für einen Pin den internen Pullup aktivieren, den Pin auslesen, und den Pin danach auf Gnd legen (fester Pegel, kein Strom). Dann fließt während des Auslesens für jeden der Pins eventuell kurzzeitig Strom über den internen Pullup (10..50K oder so), und danach nicht mehr.
- Bei den Anzeige LEDs könnte einerseits die Leuchtdauer begrenzt werden, andererseits könnte man auch sicherstellen, daß maximal eine LED gleichzeitig leuchten darf (wenn das nicht bereits so ist).
Ansonsten gilt es im Controller alle nicht benötigte Hardware abzuschalten, und wo möglich entsprechende Sleepmodes zu nutzen (war das nicht der Tiny2313 mit den Bugs im PRR (also in der Definitionsdatei), Thomas? Auf alle Fälle gab's hier die Bugs mit den PCINTs)
Zur 10ms-Zeitbasis: Ich hatte bei meinem Phasenanschnittsdimmer (also Nulldurchgangsdetektion und verzögertem Zünden der TRIACs) zum Tasterentprellen einfach die Nulldurchgangsinterrupts als Zeitbasis mitverwendet. Etwa 10ms
.
P.S.: Zu stromsparenden Indikator-LEDs hat Dino irgendwann mal gepostet, daß es stromsparender wäre Ultrahelle LEDs über einen 1K-Widerstand zu verwenden (funzeln dann bei <1mA vor sich hin) als konventionelle lowPower LEDs mit 3-5mA (die da auch nicht viel heller sind)
Alternativ kannste natürlich auch über ein
eInk-Display nachdenken