20 #if defined(__AVR__) || defined(DOXYGEN) // AVR only
53 void *buf,
size_t nbytes, uint8_t option) {
81 uint8_t* p =
reinterpret_cast<uint8_t*
>(buf);
83 for (
size_t i = 0; i < nbytes; i++) {
87 for (
size_t i = 0; i < nbytes; i++) {
115 SoftI2cMaster::SoftI2cMaster(uint8_t sclPin, uint8_t sdaPin) {
116 begin(sclPin, sdaPin);
130 _sclBit = digitalPinToBitMask(sclPin);
131 port = digitalPinToPort(sclPin);
132 _sclDDR = portModeRegister(port);
133 volatile uint8_t* sclOutReg = portOutputRegister(port);
136 _sdaBit = digitalPinToBitMask(sdaPin);
137 port = digitalPinToPort(sdaPin);
138 _sdaDDR = portModeRegister(port);
139 _sdaInReg = portInputRegister(port);
140 volatile uint8_t* sdaOutReg = portOutputRegister(port);
145 *sclOutReg &= ~_sclBit;
146 *sdaOutReg &= ~_sdaBit;
166 for (uint8_t i = 0; i < 8; i++) {
172 if (readSda()) b |= 1;
216 for (uint8_t m = 0X80; m != 0; m >>= 1) {
231 uint8_t rtn = readSda();
virtual uint8_t read(uint8_t last)=0
bool transfer(uint8_t addressRW, void *buf, size_t nbyte, uint8_t option=I2C_STOP)
const uint8_t STATE_TX_DATA_NACK
const uint8_t I2C_REP_START
uint8_t read(uint8_t last)
AVR Software I2C library.
const uint8_t STATE_TX_ADDR_NACK
const uint8_t STATE_RX_DATA
const uint8_t STATE_REP_START
bool transferContinue(void *buf, size_t nbyte, uint8_t option=I2C_STOP)
const uint8_t STATE_TX_DATA
const uint8_t I2C_CONTINUE
void begin(uint8_t sclPin, uint8_t sdaPin)
virtual bool write(uint8_t data)=0
const uint8_t STATE_RX_ADDR_NACK