@@ -247,7 +247,7 @@ void i2c_init(uint8_t bdiv)
247247 TWSR = 0 ; // Set prescalar for 1
248248 TWBR = bdiv ; // Set bit rate register
249249
250- MillisInit ();
250+ MillisInit (2 );
251251}
252252
253253static volatile uint8_t _i2cIsRunning ;
@@ -300,8 +300,14 @@ uint8_t I2CSendnRecvData(uint8_t address, const uint8_t * txdata,
300300 * 1 on NAK recv
301301 * 2 on START not ok
302302 * 3 on address not sent ok
303- * 4 on unknown
303+ * 4 on timeout, check your wiring
304+ * 5 on unknown error
304305 */
306+ #ifdef DEBUG
307+ #define _I2C_TIMEOUT_INTERVAL 1000
308+ #else
309+ #define _I2C_TIMEOUT_INTERVAL 100
310+ #endif
305311uint8_t I2CCheckAlive (uint8_t address )
306312{
307313 if (_i2cIsRunning )
@@ -310,7 +316,7 @@ uint8_t I2CCheckAlive(uint8_t address)
310316
311317 uint8_t status ;
312318 uint8_t retVal = 0 ;
313- unsigned long long initMillis = 0 ;
319+ unsigned long initMillis = 0 ;
314320 uint8_t isValid = 0 ;
315321
316322 // send I2C start
@@ -319,14 +325,15 @@ uint8_t I2CCheckAlive(uint8_t address)
319325
320326 initMillis = Millis ();
321327 isValid = 0 ;
322- while ( Millis () - initMillis < 100 )
328+ while ( Millis () - initMillis < _I2C_TIMEOUT_INTERVAL )
323329 {
324330 if ((TWCR & (1 << TWINT ))) // Wait for TWINT to be set in 100ms
325331 {
326332 isValid = 1 ;
327333 break ;
328334 }
329335 }
336+ TRACE ()
330337 if (!isValid )
331338 {
332339 retVal = 4 ;
@@ -349,7 +356,7 @@ uint8_t I2CCheckAlive(uint8_t address)
349356
350357 initMillis = Millis ();
351358 isValid = 0 ;
352- while ( Millis () - initMillis < 100 )
359+ while ( Millis () - initMillis < _I2C_TIMEOUT_INTERVAL )
353360 {
354361 if ((TWCR & (1 << TWINT ))) // Wait for TWINT to be set in 100ms
355362 {
0 commit comments