diff --git a/digital-inputs/firmware/digital_inputs.cpp b/digital-inputs/firmware/digital_inputs.cpp index 3896b3e..c2d79f9 100644 --- a/digital-inputs/firmware/digital_inputs.cpp +++ b/digital-inputs/firmware/digital_inputs.cpp @@ -3,20 +3,24 @@ #include "digital_inputs.h" #include "chprintf.h" -io_pin addrPins[] = { +#define XOR_MAGIC 1 + +static io_pin addrPins[] = { {GPIOC, 8}, // ADR0 {GPIOC, 6}, {GPIOC, 5}, {GPIOA, 6}, }; -io_pin scenarioPins[] = { +static io_pin scenarioPins[] = { {GPIOB, 12}, // OUT0 {GPIOB, 11}, {GPIOC, 7}, {GPIOC, 4}, }; +static io_pin muxOff = {GPIOA, 7}; + extern BaseSequentialStream *chp; void initDigitalInputs() { @@ -29,12 +33,15 @@ void initDigitalInputs() { io_pin *pin = &scenarioPins[i]; palSetPadMode(pin->port, pin->pin, PAL_MODE_OUTPUT_PUSHPULL); } + + palSetPadMode(muxOff.port, muxOff.pin, PAL_MODE_OUTPUT_PUSHPULL); + palWritePad(muxOff.port, muxOff.pin, 0 ^ XOR_MAGIC); } void setOutputAddrIndex(int index) { int param = index; for (size_t i = 0;i