Moved interrupt to separate function
This commit is contained in:
parent
1f1afebd98
commit
050c1156f2
117
Main/Main.ino
117
Main/Main.ino
|
@ -46,110 +46,6 @@ mtx_type vel_Matrix [2][1];
|
||||||
mtx_type inv_Kin [2][2];
|
mtx_type inv_Kin [2][2];
|
||||||
|
|
||||||
|
|
||||||
//Interrupt routines
|
|
||||||
void IRAM_ATTR m1_A_changed() {
|
|
||||||
M1_A_state = digitalRead(M1_ENC_A);
|
|
||||||
M1_B_state = digitalRead(M1_ENC_B);
|
|
||||||
|
|
||||||
//Rising
|
|
||||||
if (M1_A_state == HIGH) {
|
|
||||||
if (M1_B_state == HIGH) {
|
|
||||||
m1Raw = m1Raw - 1;
|
|
||||||
}
|
|
||||||
else if (M1_B_state == LOW) {
|
|
||||||
m1Raw = m1Raw + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Falling
|
|
||||||
else if (M1_A_state == LOW) {
|
|
||||||
if (M1_B_state == HIGH) {
|
|
||||||
m1Raw = m1Raw + 1;
|
|
||||||
}
|
|
||||||
else if (M1_B_state == LOW) {
|
|
||||||
m1Raw = m1Raw - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void IRAM_ATTR m1_B_changed() {
|
|
||||||
M1_A_state = digitalRead(M1_ENC_A);
|
|
||||||
M1_B_state = digitalRead(M1_ENC_B);
|
|
||||||
|
|
||||||
//Rising
|
|
||||||
if (M1_B_state == HIGH) {
|
|
||||||
if (M1_A_state == HIGH) {
|
|
||||||
m1Raw = m1Raw + 1;
|
|
||||||
}
|
|
||||||
else if (M1_A_state == LOW) {
|
|
||||||
m1Raw = m1Raw - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Falling
|
|
||||||
else if (M1_B_state == LOW) {
|
|
||||||
if (M1_A_state == HIGH) {
|
|
||||||
m1Raw = m1Raw - 1;
|
|
||||||
}
|
|
||||||
else if (M1_A_state == LOW) {
|
|
||||||
m1Raw = m1Raw + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void IRAM_ATTR m2_A_changed() {
|
|
||||||
M2_A_state = digitalRead(M2_ENC_A);
|
|
||||||
M2_B_state = digitalRead(M2_ENC_B);
|
|
||||||
|
|
||||||
//Rising
|
|
||||||
if (M2_A_state == HIGH) {
|
|
||||||
if (M2_B_state == HIGH) {
|
|
||||||
m2Raw = m2Raw + 1;
|
|
||||||
}
|
|
||||||
else if (M2_B_state == LOW) {
|
|
||||||
m2Raw = m2Raw - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Falling
|
|
||||||
else if (M2_A_state == LOW) {
|
|
||||||
if (M2_B_state == HIGH) {
|
|
||||||
m2Raw = m2Raw - 1;
|
|
||||||
}
|
|
||||||
else if (M2_B_state == LOW) {
|
|
||||||
m2Raw = m2Raw + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void IRAM_ATTR m2_B_changed() {
|
|
||||||
M2_A_state = digitalRead(M2_ENC_A);
|
|
||||||
M2_B_state = digitalRead(M2_ENC_B);
|
|
||||||
|
|
||||||
//Rising
|
|
||||||
if (M2_B_state == HIGH) {
|
|
||||||
if (M2_A_state == HIGH) {
|
|
||||||
m2Raw = m2Raw - 1;
|
|
||||||
}
|
|
||||||
else if (M2_A_state == LOW) {
|
|
||||||
m2Raw = m2Raw + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Falling
|
|
||||||
else if (M2_B_state == LOW) {
|
|
||||||
if (M2_A_state == HIGH) {
|
|
||||||
m2Raw = m2Raw + 1;
|
|
||||||
}
|
|
||||||
else if (M2_A_state == LOW) {
|
|
||||||
m2Raw = m2Raw - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
//Initialize serial
|
//Initialize serial
|
||||||
Serial.begin(57600);
|
Serial.begin(57600);
|
||||||
|
@ -166,14 +62,8 @@ void setup() {
|
||||||
delay(10);
|
delay(10);
|
||||||
|
|
||||||
//Initialize encoder interrupts
|
//Initialize encoder interrupts
|
||||||
pinMode(M1_ENC_A, INPUT_PULLUP);
|
initInterrupt();
|
||||||
pinMode(M1_ENC_B, INPUT_PULLUP);
|
|
||||||
pinMode(M2_ENC_A, INPUT_PULLUP);
|
|
||||||
pinMode(M2_ENC_B, INPUT_PULLUP);
|
|
||||||
attachInterrupt(digitalPinToInterrupt(M1_ENC_A), m1_A_changed, CHANGE);
|
|
||||||
attachInterrupt(digitalPinToInterrupt(M1_ENC_B), m1_B_changed, CHANGE);
|
|
||||||
attachInterrupt(digitalPinToInterrupt(M2_ENC_A), m2_A_changed, CHANGE);
|
|
||||||
attachInterrupt(digitalPinToInterrupt(M2_ENC_B), m2_B_changed, CHANGE);
|
|
||||||
|
|
||||||
//Initialize encoders
|
//Initialize encoders
|
||||||
m1Raw = 0;
|
m1Raw = 0;
|
||||||
|
@ -182,9 +72,6 @@ void setup() {
|
||||||
m2RawLast = 100;
|
m2RawLast = 100;
|
||||||
|
|
||||||
// Initialize PWM channels
|
// Initialize PWM channels
|
||||||
// channels 0-15, resolution 1-16 bits, freq limits depend on resolution
|
|
||||||
// ledcSetup(uint8_t channel, uint32_t freq, uint8_t resolution_bits);
|
|
||||||
|
|
||||||
ledcAttachPin(M1_A, 1);
|
ledcAttachPin(M1_A, 1);
|
||||||
ledcAttachPin(M1_B, 2);
|
ledcAttachPin(M1_B, 2);
|
||||||
ledcAttachPin(M2_A, 3);
|
ledcAttachPin(M2_A, 3);
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
//Interrupt routines
|
||||||
|
void IRAM_ATTR m1_A_changed() {
|
||||||
|
M1_A_state = digitalRead(M1_ENC_A);
|
||||||
|
M1_B_state = digitalRead(M1_ENC_B);
|
||||||
|
|
||||||
|
//Rising
|
||||||
|
if (M1_A_state == HIGH) {
|
||||||
|
if (M1_B_state == HIGH) {
|
||||||
|
m1Raw = m1Raw - 1;
|
||||||
|
}
|
||||||
|
else if (M1_B_state == LOW) {
|
||||||
|
m1Raw = m1Raw + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Falling
|
||||||
|
else if (M1_A_state == LOW) {
|
||||||
|
if (M1_B_state == HIGH) {
|
||||||
|
m1Raw = m1Raw + 1;
|
||||||
|
}
|
||||||
|
else if (M1_B_state == LOW) {
|
||||||
|
m1Raw = m1Raw - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void IRAM_ATTR m1_B_changed() {
|
||||||
|
M1_A_state = digitalRead(M1_ENC_A);
|
||||||
|
M1_B_state = digitalRead(M1_ENC_B);
|
||||||
|
|
||||||
|
//Rising
|
||||||
|
if (M1_B_state == HIGH) {
|
||||||
|
if (M1_A_state == HIGH) {
|
||||||
|
m1Raw = m1Raw + 1;
|
||||||
|
}
|
||||||
|
else if (M1_A_state == LOW) {
|
||||||
|
m1Raw = m1Raw - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Falling
|
||||||
|
else if (M1_B_state == LOW) {
|
||||||
|
if (M1_A_state == HIGH) {
|
||||||
|
m1Raw = m1Raw - 1;
|
||||||
|
}
|
||||||
|
else if (M1_A_state == LOW) {
|
||||||
|
m1Raw = m1Raw + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR m2_A_changed() {
|
||||||
|
M2_A_state = digitalRead(M2_ENC_A);
|
||||||
|
M2_B_state = digitalRead(M2_ENC_B);
|
||||||
|
|
||||||
|
//Rising
|
||||||
|
if (M2_A_state == HIGH) {
|
||||||
|
if (M2_B_state == HIGH) {
|
||||||
|
m2Raw = m2Raw + 1;
|
||||||
|
}
|
||||||
|
else if (M2_B_state == LOW) {
|
||||||
|
m2Raw = m2Raw - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Falling
|
||||||
|
else if (M2_A_state == LOW) {
|
||||||
|
if (M2_B_state == HIGH) {
|
||||||
|
m2Raw = m2Raw - 1;
|
||||||
|
}
|
||||||
|
else if (M2_B_state == LOW) {
|
||||||
|
m2Raw = m2Raw + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void IRAM_ATTR m2_B_changed() {
|
||||||
|
M2_A_state = digitalRead(M2_ENC_A);
|
||||||
|
M2_B_state = digitalRead(M2_ENC_B);
|
||||||
|
|
||||||
|
//Rising
|
||||||
|
if (M2_B_state == HIGH) {
|
||||||
|
if (M2_A_state == HIGH) {
|
||||||
|
m2Raw = m2Raw - 1;
|
||||||
|
}
|
||||||
|
else if (M2_A_state == LOW) {
|
||||||
|
m2Raw = m2Raw + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Falling
|
||||||
|
else if (M2_B_state == LOW) {
|
||||||
|
if (M2_A_state == HIGH) {
|
||||||
|
m2Raw = m2Raw + 1;
|
||||||
|
}
|
||||||
|
else if (M2_A_state == LOW) {
|
||||||
|
m2Raw = m2Raw - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void initInterrupt(){
|
||||||
|
pinMode(M1_ENC_A, INPUT_PULLUP);
|
||||||
|
pinMode(M1_ENC_B, INPUT_PULLUP);
|
||||||
|
pinMode(M2_ENC_A, INPUT_PULLUP);
|
||||||
|
pinMode(M2_ENC_B, INPUT_PULLUP);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(M1_ENC_A), m1_A_changed, CHANGE);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(M1_ENC_B), m1_B_changed, CHANGE);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(M2_ENC_A), m2_A_changed, CHANGE);
|
||||||
|
attachInterrupt(digitalPinToInterrupt(M2_ENC_B), m2_B_changed, CHANGE);
|
||||||
|
}
|
Loading…
Reference in New Issue