From 6351d29d702e4e254875e4483e98aae2c11999b7 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Thu, 17 Feb 2022 00:05:09 +0100 Subject: [PATCH] TWI timeout --- Firmware/{pat9125.c => pat9125.cpp} | 0 Firmware/pat9125.h | 11 ----------- Firmware/{twi.c => twi.cpp} | 9 ++++++++- Firmware/twi.h | 2 ++ 4 files changed, 10 insertions(+), 12 deletions(-) rename Firmware/{pat9125.c => pat9125.cpp} (100%) rename Firmware/{twi.c => twi.cpp} (94%) diff --git a/Firmware/pat9125.c b/Firmware/pat9125.cpp similarity index 100% rename from Firmware/pat9125.c rename to Firmware/pat9125.cpp diff --git a/Firmware/pat9125.h b/Firmware/pat9125.h index 1fb2539f4..18518df62 100755 --- a/Firmware/pat9125.h +++ b/Firmware/pat9125.h @@ -4,12 +4,6 @@ #include - -#if defined(__cplusplus) -extern "C" { -#endif //defined(__cplusplus) - - extern uint8_t pat9125_PID1; extern uint8_t pat9125_PID2; @@ -24,9 +18,4 @@ extern uint8_t pat9125_update(void); // update all sensor data extern uint8_t pat9125_update_y(void); // update _y only extern uint8_t pat9125_update_bs(void); // update _b/_s only - -#if defined(__cplusplus) -} -#endif //defined(__cplusplus) - #endif //PAT9125_H diff --git a/Firmware/twi.c b/Firmware/twi.cpp similarity index 94% rename from Firmware/twi.c rename to Firmware/twi.cpp index e8c9a378e..5e3cf0674 100644 --- a/Firmware/twi.c +++ b/Firmware/twi.cpp @@ -24,6 +24,7 @@ #include "config.h" #include "fastio.h" #include "twi.h" +#include "Timer.h" void twi_init(void) @@ -58,7 +59,13 @@ static void twi_stop() static uint8_t twi_wait(uint8_t status) { - while(!(TWCR & _BV(TWINT))); + static ShortTimer timmy; + timmy.start(); + while(!(TWCR & _BV(TWINT))) { + if (timmy.expired(TWI_TIMEOUT_MS)) { + return 2; + } + } if(TW_STATUS != status) { twi_stop(); diff --git a/Firmware/twi.h b/Firmware/twi.h index bdb617fcb..01b1deb6b 100644 --- a/Firmware/twi.h +++ b/Firmware/twi.h @@ -26,6 +26,8 @@ #define TWI_FREQ 400000L #endif +#define TWI_TIMEOUT_MS 100 + /* * Function twi_init * Desc readys twi pins and sets twi bitrate