Fix daisy-chain MUX byte order: MUX1 (first 8 bits) → low byte/switches 0-7, MUX2 → high byte/switches 8-15
This commit is contained in:
+26
-8
@@ -37,15 +37,25 @@ uint16_t PixelStompMux::read_buttons() {
|
|||||||
digitalWrite(pin_ld, HIGH);
|
digitalWrite(pin_ld, HIGH);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
|
||||||
uint16_t data = 0;
|
uint8_t mux1 = 0;
|
||||||
for (int i = 15; i >= 0; i--) {
|
for (int i = 7; i >= 0; i--) {
|
||||||
bitWrite(data, i, digitalRead(pin_di));
|
bitWrite(mux1, i, digitalRead(pin_di));
|
||||||
digitalWrite(pin_clk, HIGH);
|
digitalWrite(pin_clk, HIGH);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
digitalWrite(pin_clk, LOW);
|
digitalWrite(pin_clk, LOW);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t mux2 = 0;
|
||||||
|
for (int i = 7; i >= 0; i--) {
|
||||||
|
bitWrite(mux2, i, digitalRead(pin_di));
|
||||||
|
digitalWrite(pin_clk, HIGH);
|
||||||
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
digitalWrite(pin_clk, LOW);
|
||||||
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t data = ((uint16_t)mux2 << 8) | mux1;
|
||||||
last_button_state = data;
|
last_button_state = data;
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@@ -104,16 +114,24 @@ void PixelStompMux::probe() {
|
|||||||
digitalWrite(pin_ld, HIGH);
|
digitalWrite(pin_ld, HIGH);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
|
||||||
uint16_t data = 0;
|
uint8_t mux1 = 0;
|
||||||
for (int i = 15; i >= 0; i--) {
|
uint8_t mux2 = 0;
|
||||||
bool bit_val = digitalRead(pin_di);
|
for (int i = 7; i >= 0; i--) {
|
||||||
bitWrite(data, i, bit_val);
|
bitWrite(mux1, i, digitalRead(pin_di));
|
||||||
digitalWrite(pin_clk, HIGH);
|
digitalWrite(pin_clk, HIGH);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
digitalWrite(pin_clk, LOW);
|
digitalWrite(pin_clk, LOW);
|
||||||
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
}
|
}
|
||||||
Serial.printf(" Round %d: 0x%04X\n", round, data);
|
for (int i = 7; i >= 0; i--) {
|
||||||
|
bitWrite(mux2, i, digitalRead(pin_di));
|
||||||
|
digitalWrite(pin_clk, HIGH);
|
||||||
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
digitalWrite(pin_clk, LOW);
|
||||||
|
delayMicroseconds(BMC_MUX_74HC165_DELAY);
|
||||||
|
}
|
||||||
|
uint16_t data = ((uint16_t)mux2 << 8) | mux1;
|
||||||
|
Serial.printf(" Round %d: 0x%04X (MUX1=0x%02X MUX2=0x%02X)\n", round, data, mux1, mux2);
|
||||||
|
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user