mirror of https://github.com/ArduPilot/ardupilot
I2C: added lockup_count() interface
used for reporting I2C problems
This commit is contained in:
parent
c9031f1d36
commit
1476f044e6
|
@ -536,6 +536,12 @@ void I2C::lockUp()
|
||||||
{
|
{
|
||||||
TWCR = 0; //releases SDA and SCL lines to high impedance
|
TWCR = 0; //releases SDA and SCL lines to high impedance
|
||||||
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); //reinitialize TWI
|
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); //reinitialize TWI
|
||||||
|
_lockup_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t I2C::lockup_count(void)
|
||||||
|
{
|
||||||
|
return _lockup_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
SIGNAL(TWI_vect)
|
SIGNAL(TWI_vect)
|
||||||
|
|
|
@ -97,6 +97,7 @@ class I2C
|
||||||
uint8_t read(uint8_t, uint8_t, uint8_t*);
|
uint8_t read(uint8_t, uint8_t, uint8_t*);
|
||||||
uint8_t read(uint8_t, uint8_t, uint8_t, uint8_t*);
|
uint8_t read(uint8_t, uint8_t, uint8_t, uint8_t*);
|
||||||
uint8_t receive();
|
uint8_t receive();
|
||||||
|
uint8_t lockup_count();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint8_t start();
|
uint8_t start();
|
||||||
|
@ -108,6 +109,8 @@ class I2C
|
||||||
uint8_t returnStatus;
|
uint8_t returnStatus;
|
||||||
uint8_t nack;
|
uint8_t nack;
|
||||||
uint8_t data[MAX_BUFFER_SIZE];
|
uint8_t data[MAX_BUFFER_SIZE];
|
||||||
|
uint8_t _lockup_count;
|
||||||
|
|
||||||
static uint8_t bytesAvailable;
|
static uint8_t bytesAvailable;
|
||||||
static uint8_t bufferIndex;
|
static uint8_t bufferIndex;
|
||||||
static uint8_t totalBytes;
|
static uint8_t totalBytes;
|
||||||
|
|
Loading…
Reference in New Issue