25 #ifndef ACE_WIRE_SIMPLE_WIRE_FAST_INTERFACE_H
26 #define ACE_WIRE_SIMPLE_WIRE_FAST_INTERFACE_H
50 uint8_t T_DELAY_MICROS
67 digitalWriteFast(T_CLOCK_PIN, LOW);
68 digitalWriteFast(T_DATA_PIN, LOW);
93 uint8_t effectiveAddr = (addr << 1) | 0x00;
108 for (uint8_t i = 0; i < 8; ++i) {
131 uint8_t
requestFrom(uint8_t addr, uint8_t quantity,
bool stop =
true) {
132 mQuantity = quantity;
142 uint8_t effectiveAddr = (addr << 1) | 0x01;
143 write(effectiveAddr);
158 for (uint8_t i = 0; i < 8; ++i) {
161 uint8_t bit = digitalReadFast(T_DATA_PIN);
194 static uint8_t readAck() {
197 uint8_t ack = digitalReadFast(T_DATA_PIN);
206 static void sendAck() {
213 static void sendNack() {
219 static void bitDelay() { delayMicroseconds(T_DELAY_MICROS); }
221 static void clockHigh() { pinModeFast(T_CLOCK_PIN, INPUT); bitDelay(); }
223 static void clockLow() { pinModeFast(T_CLOCK_PIN, OUTPUT); bitDelay(); }
225 static void dataHigh() { pinModeFast(T_DATA_PIN, INPUT); bitDelay(); }
227 static void dataLow() { pinModeFast(T_DATA_PIN, OUTPUT); bitDelay(); }