39 pinMode(pinClock, OUTPUT);
40 pinMode(pinData, OUTPUT);
42 _portClock = portOutputRegister(digitalPinToPort(_pinClock));
43 _pinMaskClock = digitalPinToBitMask(_pinClock);
44 _portData = portOutputRegister(digitalPinToPort(_pinData));
45 _pinMaskData = digitalPinToBitMask(_pinData);
50 pinMode(_pinClock, INPUT);
51 pinMode(_pinData, INPUT);
56 digitalWrite(_pinClock, LOW);
57 digitalWrite(_pinData, LOW);
67 digitalWrite(_pinData, LOW);
76 *_portData |= _pinMaskData;
80 *_portData &= ~_pinMaskData;
85 *_portClock |= _pinMaskClock;
89 *_portClock &= ~_pinMaskClock;
94 for (
int bit = 7; bit >= 0; bit--)
100 *_portData |= _pinMaskData;
104 *_portData &= ~_pinMaskData;
109 *_portClock |= _pinMaskClock;
115 *_portClock &= ~_pinMaskClock;
121 const uint8_t* endData = data + dataSize;
122 while (data < endData)
133 const uint8_t _pinClock;
134 const uint8_t _pinData;
136 volatile uint8_t* _portData;
137 uint8_t _pinMaskData;
138 volatile uint8_t* _portClock;
139 uint8_t _pinMaskClock;
Definition: NeoSettings.h:29
Definition: TwoWireBitBangImple.h:31
void endTransaction()
Definition: TwoWireBitBangImpleAvr.h:65
~TwoWireBitBangImple()
Definition: TwoWireBitBangImpleAvr.h:48
NeoNoSettings SettingsObject
Definition: TwoWireBitBangImpleAvr.h:33
void transmitByte(uint8_t data)
Definition: TwoWireBitBangImpleAvr.h:92
TwoWireBitBangImple(uint8_t pinClock, uint8_t pinData)
Definition: TwoWireBitBangImpleAvr.h:35
void beginTransaction()
Definition: TwoWireBitBangImpleAvr.h:60
void transmitBytes(const uint8_t *data, size_t dataSize)
Definition: TwoWireBitBangImpleAvr.h:119
void transmitBit(uint8_t bit)
Definition: TwoWireBitBangImpleAvr.h:70
void begin()
Definition: TwoWireBitBangImpleAvr.h:54
void applySettings([[maybe_unused]] const SettingsObject &settings)
Definition: TwoWireBitBangImpleAvr.h:128