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:
irgendwie kommt mir das komisch vor.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); }
Danke in Vorraus
LittleBoy







Zitieren


Lesezeichen