MCPcopy Create free account
hub / github.com/RobTillaart/Arduino / digitalWrite

Method digitalWrite

libraries/MCP23017_RT/MCP23017.cpp:139–178  ·  view source on GitHub ↗

pin = 0..15 value = LOW, HIGH

Source from the content-addressed store, hash-verified

137// pin = 0..15
138// value = LOW, HIGH
139bool MCP23017::digitalWrite(uint8_t pin, uint8_t value)
140{
141 if (pin > 15)
142 {
143 _error = MCP23017_PIN_ERROR;
144 return false;
145 }
146 uint8_t IOR = MCP23017_GPIO_A;
147 if (pin > 7)
148 {
149 IOR = MCP23017_GPIO_B;
150 pin -= 8;
151 }
152
153 uint8_t val = readReg(IOR);
154 uint8_t pre = val;
155 if (_error != MCP23017_OK)
156 {
157 return false;
158 }
159
160 uint8_t mask = 1 << pin;
161 if (value)
162 {
163 val |= mask;
164 }
165 else
166 {
167 val &= ~mask;
168 }
169 if (pre != val)
170 {
171 writeReg(IOR, val);
172 if (_error != MCP23017_OK)
173 {
174 return false;
175 }
176 }
177 return true;
178}
179
180
181uint8_t MCP23017::digitalRead(uint8_t pin)

Callers 1

unittestFunction · 0.45

Calls

no outgoing calls

Tested by 1

unittestFunction · 0.36