Kürzer als das folgende bekomme ich es nicht hin:
Aus Vector(2) wird dannCode:#include <avr/signal.h> #include <avr/interrupt.h> #include <inttypes.h> void foo( uint8_t param ); // key press down SIGNAL( SIG_INTERRUPT0 ) { foo( 0 ); } void _VECTOR(2)( void ) __attribute__ ((naked)); void _VECTOR(2)( void ) { foo(3); __asm__ __volatile__ ("reti" ::); } void foo( uint8_t param ) { }
Das Retten und Restaurieren von SREG muss dann von Hand rein.Code:/* function __vector_1 size 43 (3) */ .LFE3: .size __vector_1, .-__vector_1 .global __vector_2 .type __vector_2, @function __vector_2: .LFB4: .LM3: /* prologue: frame size=0 */ /* prologue: naked */ /* prologue end (size=0) */ .LM4: ldi r24,lo8(3) call foo .LM5: /* #APP */ reti







Zitieren

Lesezeichen