Die ISR als
Code:
#include <avr/io.h>
#include <avr/interrupt.h>

uint32_t volatile system_timer;

ISR(...,ISR_NAKED)
{
    static uint8_t prescaler;
    asm volatile (" ... " :: "s" (&prescaler), "s" (&system_timer));
}
und als asm ... ohne Gewähr (den quoten darfst selber )
Code:
push r24
in r24,__SREG__
push r24

lds  r24, %0
subi r24,-1
cpi  r24,100
brne 0f

lds  r24, %1
subi r24, -1
sts  %1, r24
lds  r24, %1+1
sbci r24, -1
sts  %1+1, r24
lds  r24, %1+2
sbci r24, -1
sts  %1+2, r24
lds  r24, %1+3
sbci r24, -1
sts  %1+3, r24
ldi  r24,0
0:
sts  %0,r24

pop r24
out __SREG__,24
pop r24
reti