@@ -247,7 +247,7 @@ void i2c_init(uint8_t bdiv)
247
247
TWSR = 0 ; // Set prescalar for 1
248
248
TWBR = bdiv ; // Set bit rate register
249
249
250
- MillisInit ();
250
+ MillisInit (2 );
251
251
}
252
252
253
253
static volatile uint8_t _i2cIsRunning ;
@@ -300,8 +300,14 @@ uint8_t I2CSendnRecvData(uint8_t address, const uint8_t * txdata,
300
300
* 1 on NAK recv
301
301
* 2 on START not ok
302
302
* 3 on address not sent ok
303
- * 4 on unknown
303
+ * 4 on timeout, check your wiring
304
+ * 5 on unknown error
304
305
*/
306
+ #ifdef DEBUG
307
+ #define _I2C_TIMEOUT_INTERVAL 1000
308
+ #else
309
+ #define _I2C_TIMEOUT_INTERVAL 100
310
+ #endif
305
311
uint8_t I2CCheckAlive (uint8_t address )
306
312
{
307
313
if (_i2cIsRunning )
@@ -310,7 +316,7 @@ uint8_t I2CCheckAlive(uint8_t address)
310
316
311
317
uint8_t status ;
312
318
uint8_t retVal = 0 ;
313
- unsigned long long initMillis = 0 ;
319
+ unsigned long initMillis = 0 ;
314
320
uint8_t isValid = 0 ;
315
321
316
322
// send I2C start
@@ -319,14 +325,15 @@ uint8_t I2CCheckAlive(uint8_t address)
319
325
320
326
initMillis = Millis ();
321
327
isValid = 0 ;
322
- while ( Millis () - initMillis < 100 )
328
+ while ( Millis () - initMillis < _I2C_TIMEOUT_INTERVAL )
323
329
{
324
330
if ((TWCR & (1 << TWINT ))) // Wait for TWINT to be set in 100ms
325
331
{
326
332
isValid = 1 ;
327
333
break ;
328
334
}
329
335
}
336
+ TRACE ()
330
337
if (!isValid )
331
338
{
332
339
retVal = 4 ;
@@ -349,7 +356,7 @@ uint8_t I2CCheckAlive(uint8_t address)
349
356
350
357
initMillis = Millis ();
351
358
isValid = 0 ;
352
- while ( Millis () - initMillis < 100 )
359
+ while ( Millis () - initMillis < _I2C_TIMEOUT_INTERVAL )
353
360
{
354
361
if ((TWCR & (1 << TWINT ))) // Wait for TWINT to be set in 100ms
355
362
{
0 commit comments