diff --git a/drivers/0x0a_ir_cbm/Inc/rp2350.h b/drivers/0x0a_ir_cbm/Inc/rp2350.h index 2d69851..c333a52 100644 --- a/drivers/0x0a_ir_cbm/Inc/rp2350.h +++ b/drivers/0x0a_ir_cbm/Inc/rp2350.h @@ -169,6 +169,7 @@ typedef struct #define PADS_BANK0_IE_SHIFT 6U #define PADS_BANK0_ISO_SHIFT 8U #define PADS_BANK0_PUE_SHIFT 3U +#define PADS_BANK0_PDE_SHIFT 2U /** * @brief SIO GPIO register offsets (word indices from SIO_BASE) diff --git a/drivers/0x0a_ir_cbm/Src/rp2350_ir.c b/drivers/0x0a_ir_cbm/Src/rp2350_ir.c index 24f33ea..7c07b0f 100644 --- a/drivers/0x0a_ir_cbm/Src/rp2350_ir.c +++ b/drivers/0x0a_ir_cbm/Src/rp2350_ir.c @@ -189,6 +189,7 @@ static void _configure_pad(void) value &= ~(1U << PADS_BANK0_OD_SHIFT); value |= (1U << PADS_BANK0_IE_SHIFT); value |= (1U << PADS_BANK0_PUE_SHIFT); + value &= ~(1U << PADS_BANK0_PDE_SHIFT); value &= ~(1U << PADS_BANK0_ISO_SHIFT); PADS_BANK0->GPIO[IR_PIN] = value; } @@ -237,5 +238,8 @@ int ir_getkey(void) return -1; if (!_read_32_bits(data)) return -1; - return _validate_nec_frame(data); + int result = _validate_nec_frame(data); + if (result < 0) + return -1; + return result; }