tja jetzt funktioniert es immer noch nicht so ganz:
ich habe zwei variablen eingefügt, die wie ein timer compare interrupt funktionieren sollen,
allerdings kann ich die nicht immer erfolgreich beschreiben:
Code:
static volatile unsigned int odometry_count_r=0;
static volatile unsigned int odometry_count_l=0;
// auch static getestet
volatile unsigned int odometry_comp_r=0;
volatile unsigned int odometry_comp_l=0;
/*wie gesagt compare */
void ( * odometry_l_comp)(void);
void ( * odometry_r_comp)(void);
ISR(INT0_vect)
{
odometry_count_l++;
#ifdef __TEST
set_led(LED_L_Y,1);
_delay_ms(20);
set_led(LED_L_Y,0);
#endif
if(odometry_count_l==odometry_comp_l)
{
odometry_l_comp();
}
}
void _init_odometrie(void)
{
if(add_mod(_MOD_ODO));
{
GICR|= 1<<INT0;
GICR|= 1<<INT1;
MCUCR|= 1<<ISC01 | 1<<ISC00;
MCUCR|= 1<<ISC11 | 1<<ISC10;
sei();
#ifdef __TEST
odometry_l_comp=lauffeuer;
odometry_r_comp=lauffeuer;
#else
odometry_l_comp=nop;
odometry_r_comp=nop;
#endif
// das wuerde funktionieren
// odometry_comp_l=5;
// odometry_comp_r=5;
}
}
// aus odtest.c
int main(void)
{
// funktioniert nicht.
odometry_comp_l=5;
odometry_comp_r=5;
//auch andersherum getestet
_init_odometrie();
while(1);
}
irgendwie kommt mir das komisch vor.
Danke in Vorraus
LittleBoy
Lesezeichen