Skip to content

Commit cb4ae51

Browse files
committed
Merge pull request #1912 from Lauszus/issues440
Enable user to change the I2C clock frequency by calling setClock in the Wire library
2 parents e7c3527 + 5216e55 commit cb4ae51

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

libraries/Wire/Wire.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ void TwoWire::begin(int address)
7575
begin((uint8_t)address);
7676
}
7777

78+
void TwoWire::setClock(uint32_t frequency)
79+
{
80+
TWBR = ((F_CPU / frequency) - 16) / 2;
81+
}
82+
7883
uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop)
7984
{
8085
// clamp to buffer length

libraries/Wire/Wire.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class TwoWire : public Stream
4949
void begin();
5050
void begin(uint8_t);
5151
void begin(int);
52+
void setClock(uint32_t);
5253
void beginTransmission(uint8_t);
5354
void beginTransmission(int);
5455
uint8_t endTransmission(void);
@@ -62,10 +63,10 @@ class TwoWire : public Stream
6263
virtual int available(void);
6364
virtual int read(void);
6465
virtual int peek(void);
65-
virtual void flush(void);
66+
virtual void flush(void);
6667
void onReceive( void (*)(int) );
6768
void onRequest( void (*)(void) );
68-
69+
6970
inline size_t write(unsigned long n) { return write((uint8_t)n); }
7071
inline size_t write(long n) { return write((uint8_t)n); }
7172
inline size_t write(unsigned int n) { return write((uint8_t)n); }

libraries/Wire/keywords.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#######################################
1212

1313
begin KEYWORD2
14+
setClock KEYWORD2
1415
beginTransmission KEYWORD2
1516
endTransmission KEYWORD2
1617
requestFrom KEYWORD2

0 commit comments

Comments
 (0)