void rencoder_count(void)
{
unsigned char dir = RENC_NONE;
+ unsigned char pha = RENC_PH_A;
+ unsigned char phb = RENC_PH_B;
- if(RENC_PH_A != renc_state_a) {
- if(RENC_PH_A == 1){ // A: FALL DOWN
- if(RENC_PH_B == 0){ // B: Stable
+ /*
+ * Count sequence description of rotary-encoder:
+ * See figure of http://homepage1.nifty.com/rikiya/software/113ROTENC.htm .
+ */
+ if(pha != renc_state_a) {
+ if(pha == 1){ // A: RISE UP
+ if(phb == 0){ // B: Stable
dir = RENC_RIGHT;
} else {
dir = RENC_LEFT;
}
}
- } else if(RENC_PH_B != renc_state_b){
- if(RENC_PH_B == 1){ // B: FALL DOWN
- if(RENC_PH_A == 0){ // A: Stable
+ renc_state_a = pha;
+ //renc_state_b = phb;
+ } else if(phb != renc_state_b){
+ if(phb == 1){ // B: RISE UP
+ if(pha == 0){ // A: Stable
dir = RENC_LEFT;
} else {
dir = RENC_RIGHT;
}
}
+ //renc_state_a = pha;
+ renc_state_b = phb;
}
if(dir != RENC_NONE) {
// rencoder_up(dir);
- renc_state_a = RENC_PH_A;
- renc_state_b = RENC_PH_B;
}