Skip to content

Commit 6127423

Browse files
committed
change timeout from milliseconds to microseconds
1 parent 4f907bc commit 6127423

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

libraries/Wire/src/Wire.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ void TwoWire::setClock(uint32_t clock)
8686
twi_setFrequency(clock);
8787
}
8888

89-
void TwoWire::setTimeoutInMillis(uint8_t timeout)
89+
void TwoWire::setTimeoutInMicros(uint16_t timeout)
9090
{
91-
twi_setTimeoutInMillis(timeout);
91+
twi_setTimeoutInMicros(timeout);
9292
}
9393

9494
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop)

libraries/Wire/src/Wire.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class TwoWire : public Stream
5454
void begin(int);
5555
void end();
5656
void setClock(uint32_t);
57-
void setTimeoutInMillis(uint8_t);
57+
void setTimeoutInMicros(uint16_t);
5858
void beginTransmission(uint8_t);
5959
void beginTransmission(int);
6060
uint8_t endTransmission(void);

libraries/Wire/src/utility/twi.c

+16-16
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include <avr/io.h>
2626
#include <avr/interrupt.h>
2727
#include <compat/twi.h>
28-
#include "Arduino.h" // for digitalWrite and millis
28+
#include "Arduino.h" // for digitalWrite and micros
2929

3030
#ifndef cbi
3131
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
@@ -42,7 +42,7 @@ static volatile uint8_t twi_state;
4242
static volatile uint8_t twi_slarw;
4343
static volatile uint8_t twi_sendStop; // should the transaction end with a stop
4444
static volatile uint8_t twi_inRepStart; // in the middle of a repeated start
45-
static volatile uint8_t twi_timeout_ms = 0;
45+
static volatile uint16_t twi_timeout_us = 0;
4646

4747
static void (*twi_onSlaveTransmit)(void);
4848
static void (*twi_onSlaveReceive)(uint8_t*, int);
@@ -155,9 +155,9 @@ uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length, uint8_t sen
155155
}
156156

157157
// wait until twi is ready, become master receiver
158-
uint32_t startMillis = millis();
158+
uint32_t startMicros = micros();
159159
while(TWI_READY != twi_state){
160-
if((twi_timeout_ms > 0) && (millis() - startMillis > twi_timeout_ms)) {
160+
if((twi_timeout_us > 0) && (micros() - startMicros > twi_timeout_us)) {
161161
twi_handleTimeout();
162162
return 0;
163163
}
@@ -199,9 +199,9 @@ uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length, uint8_t sen
199199
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA);
200200

201201
// wait for read operation to complete
202-
startMillis = millis();
202+
startMicros = micros();
203203
while(TWI_MRX == twi_state){
204-
if((twi_timeout_ms > 0) && (millis() - startMillis > twi_timeout_ms)) {
204+
if((twi_timeout_us > 0) && (micros() - startMicros > twi_timeout_us)) {
205205
twi_handleTimeout();
206206
return 0;
207207
}
@@ -244,9 +244,9 @@ uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait
244244
}
245245

246246
// wait until twi is ready, become master transmitter
247-
uint32_t startMillis = millis();
247+
uint32_t startMicros = micros();
248248
while(TWI_READY != twi_state){
249-
if((twi_timeout_ms > 0) && (millis() - startMillis > twi_timeout_ms)) {
249+
if((twi_timeout_us > 0) && (micros() - startMicros > twi_timeout_us)) {
250250
twi_handleTimeout();
251251
return 4;
252252
}
@@ -291,9 +291,9 @@ uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait
291291
TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE) | _BV(TWSTA); // enable INTs
292292

293293
// wait for write operation to complete
294-
startMillis = millis();
294+
startMicros = micros();
295295
while(wait && (TWI_MTX == twi_state)){
296-
if((twi_timeout_ms > 0) && (millis() - startMillis > twi_timeout_ms)) {
296+
if((twi_timeout_us > 0) && (micros() - startMicros > twi_timeout_us)) {
297297
twi_handleTimeout();
298298
return 4;
299299
}
@@ -397,7 +397,7 @@ void twi_stop(void)
397397
uint32_t counter = 0;
398398
while(TWCR & _BV(TWSTO)){
399399
counter++;
400-
if((twi_timeout_ms > 0) && (counter >= 25000)) {
400+
if((twi_timeout_us > 0) && (counter >= 25000)) {
401401
twi_handleTimeout();
402402
return;
403403
}
@@ -425,19 +425,19 @@ void twi_releaseBus(void)
425425
}
426426

427427
/*
428-
* Function twi_setTimeoutInMillis
428+
* Function twi_setTimeoutInMicros
429429
* Desc set a global timeout for while loops that we might get stuck in
430-
* Input timeout value in milliseconds
430+
* Input timeout value in microseconds
431431
* Output none
432432
*/
433-
void twi_setTimeoutInMillis(uint8_t timeout)
433+
void twi_setTimeoutInMicros(uint16_t timeout)
434434
{
435-
twi_timeout_ms = timeout;
435+
twi_timeout_us = timeout;
436436
}
437437

438438
/*
439439
* Function twi_handleTimeout
440-
* Desc do this stuff when a while loop here has run for longer than twi_timeout_ms milliseconds
440+
* Desc do this stuff when a while loop here has run for longer than twi_timeout_us microseconds
441441
* Input none
442442
* Output none
443443
*/

libraries/Wire/src/utility/twi.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
void twi_reply(uint8_t);
5151
void twi_stop(void);
5252
void twi_releaseBus(void);
53-
void twi_setTimeoutInMillis(uint8_t);
53+
void twi_setTimeoutInMicros(uint16_t);
5454
void twi_handleTimeout(void);
5555

5656
#endif

0 commit comments

Comments
 (0)