diff options
Diffstat (limited to 'libraries/Wire/src')
-rw-r--r-- | libraries/Wire/src/Wire.cpp | 7 | ||||
-rw-r--r-- | libraries/Wire/src/utility/twi.c | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index d2146f7..58916ce 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -17,6 +17,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts + Modified 2017 by Chuck Todd (ctodd@cableone.net) to correct Unconfigured Slave Mode reboot */ extern "C" { @@ -60,14 +61,14 @@ void TwoWire::begin(void) txBufferLength = 0; twi_init(); + twi_attachSlaveTxEvent(onRequestService); // default callback must exist + twi_attachSlaveRxEvent(onReceiveService); // default callback must exist } void TwoWire::begin(uint8_t address) { - twi_setAddress(address); - twi_attachSlaveTxEvent(onRequestService); - twi_attachSlaveRxEvent(onReceiveService); begin(); + twi_setAddress(address); } void TwoWire::begin(int address) diff --git a/libraries/Wire/src/utility/twi.c b/libraries/Wire/src/utility/twi.c index 171af73..1a35146 100644 --- a/libraries/Wire/src/utility/twi.c +++ b/libraries/Wire/src/utility/twi.c @@ -445,6 +445,7 @@ ISR(TWI_vect) case TW_MR_DATA_ACK: // data received, ack sent // put byte into buffer twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + __attribute__ ((fallthrough)); case TW_MR_SLA_ACK: // address sent, ack received // ack if more bytes are expected, otherwise nack if(twi_masterBufferIndex < twi_masterBufferLength){ @@ -530,6 +531,7 @@ ISR(TWI_vect) twi_txBufferLength = 1; twi_txBuffer[0] = 0x00; } + __attribute__ ((fallthrough)); // transmit first byte from buffer, fall case TW_ST_DATA_ACK: // byte sent, ack returned // copy data to output register |