From e2d2b21551916c39cdd6994685922d0828f4dbcc Mon Sep 17 00:00:00 2001 From: Kevin Thomas Date: Mon, 6 Apr 2026 21:47:48 -0400 Subject: [PATCH] fix(ir_cbm): clear PDE bit in pad config for proper pull-up input PADS_BANK0 GPIO5 had PDE (pull-down enable, bit 2) still set to its reset default. With both PUE and PDE active the pin floated to ~VDD/2, causing the Schmitt trigger to read LOW permanently. Clear PDE in _configure_pad() so the pull-up works correctly. Added PADS_BANK0_PDE_SHIFT define to rp2350.h. --- drivers/0x0a_ir_cbm/Inc/rp2350.h | 1 + drivers/0x0a_ir_cbm/Src/rp2350_ir.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) 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; }