From 33e86048346cfa0be8fdf48e1e023582764f7253 Mon Sep 17 00:00:00 2001 From: Graziano Misuraca Date: Tue, 14 Jul 2026 21:19:49 -0400 Subject: [PATCH] MPU_6050: add timeout to device reset polling loop The DEVICE_RESET busy-wait loop had no timeout or delay, causing an infinite hang if the device never clears the reset bit. Add a 1s timeout with 1ms polling interval. Co-Authored-By: salalaika --- drivers/src/sensor/MPU_6050.zig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/src/sensor/MPU_6050.zig b/drivers/src/sensor/MPU_6050.zig index 802587bb9..2bb31f3e7 100644 --- a/drivers/src/sensor/MPU_6050.zig +++ b/drivers/src/sensor/MPU_6050.zig @@ -84,7 +84,15 @@ pub const MPU_6050 = struct { self.accel_range = .@"2G"; self.gyro_range = .@"250d"; - while ((try self.read_reg(.pwr_mgmt_1, regs.PWR_MGMT_1)).DEVICE_RESET) {} + // Wait for device to complete reset + var timeout: usize = 1000; + while ((try self.read_reg(.pwr_mgmt_1, regs.PWR_MGMT_1)).DEVICE_RESET) { + timeout -= 1; + if (timeout == 0) { + return Error.Timeout; + } + self.clock.sleep_ms(1); + } try self.modify_reg(.user_ctrl, regs.USER_CTRL, .{ .SIG_COND_RESET = true,