Commit Graph

5 Commits

Author SHA1 Message Date
chuck todd f1c4cc6316 UnConfigured I2C Slave ISR Causing Reboot
In a MultiMaster I2C environment, The Default value of 0xFE in the TWAR cause the Arduino to respond as an I2C Slave device at address 0x7f.  If the Wire.h library was not configured as a I2C Slave, `Wire.begin(slaveID);` the Callbacks for `twi_onSlaveTransmit()` and `twi_onSlaveReceive()` are never initialized.
But, they are called during servicing the TWI ISR.  This causes a reboot of the Arduino by jumping to an uninitialized function address (0).
So, this fix initializes them to the Default Wire.h handler which will respond correctly even during Master Mode operations.
A MASTER MODE only Arduino will respond to all Slave Calls that match TWAR, Unless the TWEA bit is disabled outside of Master Transactions.
Chuck.
It also initialized the TWAR to the General Call ID (0x0) and Disables General Call responses.

Chuck.
2017-11-13 17:45:33 +01:00
kellerkindt 43d5e073b4 Fix buffer being overwritten by multiple twi_transmit calls
Fixes that more complex methods (like Stream::print(float)) do not work properly.

Without this fix, Wire.print(1.01f); results in '1' because Print::printFloat(double, uint8_t) performs multiple print() and therefore twi_transmit calls. Also Wire.println("Heyho"); results only in a newline character.
2016-06-05 03:01:57 +02:00
Paolo Paolucci 7b2f6fc028 Fix Wire register
Move TWBR register from Wire.cpp to twi.c file.
2016-03-09 15:47:55 -05:00
Sandeep Mistry aa710ab682 Move AVR Wire library utility folder under source 2016-03-04 17:11:56 -05:00
Alice Pintus 3ba80468d5 add src folder when missing 2016-03-02 14:45:57 +01:00