Hallo,
Ich habe mir ein kleines Prog zum Auslesen von Drehimpulsgebern geschrieben.
Was haltet ihr davon, Funktionieren tut es bis jetzt sehr gut:
Code:
if( PINC & (1<<PINC0) ){ A_AKT = 0; }else{ A_AKT = 1; }
if( PINC & (1<<PINC1) ){ B_AKT = 0; }else{ B_AKT = 1; }
if( PINC & (1<<PINC2) ){ E_AKT = 0; }else{ E_AKT = 1; }
if( A_AKT != A_ALT ){
if( B_FLAG ){ way = 1; }else{ A_FLAG = 1; }
A_ALT = A_AKT;
}
if( B_AKT != B_ALT ){
if( A_FLAG ){ way = 2; }else{ B_FLAG = 1; }
B_ALT = B_AKT;
}
if( way==1 ){ x--; LCD_Write_ZAHL( 40, x ); way=0; B_FLAG=0; }
if( way==2 ){ x++; LCD_Write_ZAHL( 40, x ); way=0; A_FLAG=0; }
funktionieren tut es so:
zum Beispiel:
Ändert sich A zuerst, so wird das A_Flag gesetzt
( Aber nur, wenn zuvor nicht das B_Flag gesetzt wurde )
ändert sich nun auch B, stellt man fest, dass bereits ein A_Flag existiert,
also kann man eine Drehrichtung und einen Impuls wahrnehmen.
Way wird entsprechend gesetzt.
Am Schluss wird, wenn way existiert das Gnaze ausgewertet.
Und natürlich way und die Flags zurückgesetzt.
Ist ein kurzer Code, funktioniert, eure Meinungen sind gefragt!
Lesezeichen