Hi Searcher,

ich hatte eine ähnliche Idee:
Lade den Inhalt des RAMs vorher in ein Register (MUXR - wird ja nur in den ADC-Routinen benötigt, liegt also beim Blinken brach).
MUXR wird in der POR-Routine aus dem RAM geladen (LD MUXR,X). Ich blieb bei 2, damit keine Änderung des Verhaltens dadurch hervorgerufen werden konnte.

Vorweg: Sämtliche Änderungen erfolgten ausschließlich in der Routine SHOWCELL!
Alles andere im gesamten Programm blieb absolut unverändert!

Erste Änderung:
SHOWCELL:
mov celr,muxr
cbi PORTB,0
CELCNT:
sbi PORTB,1
ldi timr,1
rcall wait
cbi PORTB,1
ldi timr,1
rcall wait
dec celr
brne celcnt
PAUSE:
ldi timr,3
rcall wait
rjmp showcell

LD CELR,X (siehe Listing im Anhang am Anfang des Treads) wurde durch MOV CELR,MUXR ersetzt.

Auswirkung: Unregelmäßigkeiten noch immer vorhanden, gefühlsmäßig jedoch seltener!

Dann folgende Änderung:
PB0 wird nur mehr 1x bei Aufruf der Routine durchgeführt, weil
1. die Reihenfolge von MOV und CBI getauscht wurde und
2. die RJMPs nicht mehr per Label durchgeführt werden, sondern per "Rückschritten" (PC-x):

SHOWCELL:
cbi PORTB,0
mov celr,muxr
sbi PORTB,1
ldi timr,1
rcall wait
cbi PORTB,1
ldi timr,1
rcall wait
dec celr
brne pc-7 ; Sprungpunkt > SBI
ldi timr,3
rcall wait
rjmp pc-11 ; Sprungpunkt > MOV

Auswirkung: KURIOS!! Habe ca. 10 Minuten beobachtet - innerhalb dieser Zeit absolut keine Unregelmäßigkeiten mehr!!
Jetzt frage ich mich, was die Änderungen mit dem Timer zu tun haben!???!?

Für mich heißt das im Klartext: man kann sich auf den Tiny13/Timer nur bedingt verlassen!!
Unter ganz bestimmten Konstellationen - weiß der Teufel welche, so scheint es zumindest, werden ohne jede Ersichtlichkeit irgendwelche internen Funktionen beeinflusst!
Wie, wann, warum!? Keine Ahnung!
Zumindest sieht es für mich so aus.
Wenn jemand eine schlüssige Erklärung zum obigen Phänomen hat, möge er sie mir bitte klarlegen.

Gruß
Heinz