diff --git a/stm-firmware/hw-version-detect.c b/stm-firmware/hw-version-detect.c index d428d12..7dee01e 100644 --- a/stm-firmware/hw-version-detect.c +++ b/stm-firmware/hw-version-detect.c @@ -34,7 +34,8 @@ enum hw_revision get_pcb_hardware_version(void) { uint8_t current_pin; - uint16_t port_bitmask = 0U; + uint16_t port_bitmask = 0U; /* Use uint16_t because a port can have 16 IOs max. */ + const uint16_t highest_bit_mask = (1 << (HW_REV_DETECT_PIN_HIGH - HW_REV_DETECT_PIN_LOW)); static enum hw_revision revision = HW_REV_NOT_DETECTED; /* If the revision has been previously detected, @@ -57,7 +58,7 @@ enum hw_revision get_pcb_hardware_version(void) */ for (current_pin = HW_REV_DETECT_PIN_LOW; current_pin <= HW_REV_DETECT_PIN_HIGH; current_pin++) { port_bitmask >>= 1; - port_bitmask |= (HW_REV_DETECT_GPIO->IDR & (1 << current_pin)) ? 0x0 : 0x80; + port_bitmask |= (HW_REV_DETECT_GPIO->IDR & (1 << current_pin)) ? 0x0 : highest_bit_mask; } /* Resolve the read in bitmask to a hardware version */