Mein ISR code sieht so aus :
Code:
/**
* External Interrupt 0 ISR
* (ENCL)
*
*/
ISR (INT0_vect)
{
if(PINC&KMI_L){
mleft_dist++;
mleft_counter++; //writeString_P("ISR0");//controle interrupt
e_compass++;
delta_distance++;} //richting robby !!
else {
mleft_dist--;
mleft_counter--;
e_compass--;
delta_distance--;} //delta_distance voor odometrie !!
}
In main gibt dan die Aenderung von mleft_dist wieviel tics und in welche Richtung da passiert sein. Der zweite variable mleft_counter wird jeden 100 mS ausgewertet und gibt dan die Geschwindigkeit for. Die variabel e_compass ist dan das unterschied in Abstand zwischen Rechter und Linker Rad.
Lesezeichen