mega2560 RotaryB ok

This commit is contained in:
JivaroFAD
2014-09-25 00:35:53 +02:00
parent b26187f759
commit 1c24ef3c45
2 changed files with 29 additions and 28 deletions
+25 -24
View File
@@ -71,14 +71,14 @@ inline void boardInit()
/* Rotary encoder interrupt set-up */
EIMSK = 0; // disable ALL external interrupts.
// encoder 1
EICRB = (1<<ISC60) | (1<<ISC50); // 01 = interrupt on any edge
EIFR = (3<<INTF5); // clear the int. flag in case it got set when changing modes
// encoder 2
EICRA = (1<<ISC30) | (1<<ISC20); // do the same for encoder 1
// encoder 1 //KO, wrong interrupt ?
EICRA = (1<<ISC10) | (1<<ISC00); // 01 = interrupt on any edge
EIFR = (3<<INTF0); // clear the int. flag in case it got set when changing modes
// encoder 2 //OK
EICRA = (1<<ISC30) | (1<<ISC20);
EIFR = (3<<INTF2);
EIMSK = (3<<INT5) | (3<<INT2); // enable the two rot. enc. ext. int. pairs.
}
}
#endif // !SIMU
uint8_t pwrCheck()
@@ -216,27 +216,28 @@ FORCEINLINE void readKeysAndTrims()
}
}
ISR(INT2_vect)
{
uint8_t input = (PIND & 0x0C);
if (input == 0 || input == 0x0C) incRotaryEncoder(0, -1);
}
ISR(INT3_vect)
{
uint8_t input = (PIND & 0x0C);
if (input == 0 || input == 0x0C) incRotaryEncoder(0, +1);
}
ISR(INT5_vect)
// Rotary encoders increment/decrement (0 = rotary 1, 1 = rotary 2)
ISR(INT0_vect) // Arduino2560 IO21 (portD pin0)
{
uint8_t input = (PIND & 0x03);
if (input == 0 || input == 0x03) incRotaryEncoder(1, +1);
if (input == 0 || input == 0x03) incRotaryEncoder(0, +1);
}
ISR(INT6_vect)
ISR(INT1_vect) // Arduino2560 IO20 (portD pin1)
{
uint8_t input = (PIND & 0x03);
if (input == 0 || input == 0x03) incRotaryEncoder(1, -1);
if (input == 0 || input == 0x03) incRotaryEncoder(0, -1);
}
ISR(INT2_vect) // Arduino2560 IO19 (portD pin2) //OK
{
uint8_t input = (PIND & 0x0C);
if (input == 0 || input == 0x0C) incRotaryEncoder(1, +1);
}
ISR(INT3_vect) // Arduino2560 IO18 (portD pin3) //OK
{
uint8_t input = (PIND & 0x0C);
if (input == 0 || input == 0x0C) incRotaryEncoder(1, -1);
}
+4 -4
View File
@@ -142,10 +142,10 @@
# define OUT_E_TELEM_TX 0 //same as Gruvin9x
// Rotary encoders driver
# define INP_D_ROT_ENC_1_A 0 //ko
# define INP_D_ROT_ENC_1_B 1 //ko
# define INP_D_ROT_ENC_2_A 2 //ok, but recognised as rotary 1
# define INP_D_ROT_ENC_2_B 3 //ok, but recognised as rotary 1
# define INP_D_ROT_ENC_1_A 0 //ok
# define INP_D_ROT_ENC_1_B 1 //ok
# define INP_D_ROT_ENC_2_A 2 //ok
# define INP_D_ROT_ENC_2_B 3 //ok
# define INP_J_ROT_ENC_1_PUSH 0 //ok
# define INP_J_ROT_ENC_2_PUSH 1 //ok
# define REA_DOWN() (~PINJ & (1<<INP_J_ROT_ENC_1_PUSH))