Enable user to change the I2C clock frequency by calling setClock in the Wire library

This commit is contained in:
Kristian Lauszus 2014-03-06 17:23:49 +01:00
parent d2ef583c2c
commit 7fcc8ab08a
3 changed files with 9 additions and 2 deletions

View File

@ -75,6 +75,11 @@ void TwoWire::begin(int address)
begin((uint8_t)address); begin((uint8_t)address);
} }
void TwoWire::setClock(uint32_t frequency)
{
TWBR = ((F_CPU / frequency) - 16) / 2;
}
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop)
{ {
// clamp to buffer length // clamp to buffer length

View File

@ -49,6 +49,7 @@ class TwoWire : public Stream
void begin(); void begin();
void begin(uint8_t); void begin(uint8_t);
void begin(int); void begin(int);
void setClock(uint32_t);
void beginTransmission(uint8_t); void beginTransmission(uint8_t);
void beginTransmission(int); void beginTransmission(int);
uint8_t endTransmission(void); uint8_t endTransmission(void);
@ -62,7 +63,7 @@ class TwoWire : public Stream
virtual int available(void); virtual int available(void);
virtual int read(void); virtual int read(void);
virtual int peek(void); virtual int peek(void);
virtual void flush(void); virtual void flush(void);
void onReceive( void (*)(int) ); void onReceive( void (*)(int) );
void onRequest( void (*)(void) ); void onRequest( void (*)(void) );

View File

@ -11,6 +11,7 @@
####################################### #######################################
begin KEYWORD2 begin KEYWORD2
setClock KEYWORD2
beginTransmission KEYWORD2 beginTransmission KEYWORD2
endTransmission KEYWORD2 endTransmission KEYWORD2
requestFrom KEYWORD2 requestFrom KEYWORD2