5 template<u
int8_t CsPin, u
int8_t ClkPin, u
int8_t DoutPin, u
int8_t UsecDelay = 0>
14 fastPinMode(ClkPin, 1);
15 fastDigitalWrite(ClkPin, 0);
16 fastPinMode(CsPin, 1);
17 fastDigitalWrite(CsPin, 1);
18 fastPinMode(DoutPin, 0);
27 fastDigitalWrite(CsPin, 0);
32 delayMicroseconds(UsecDelay);
51 fastDigitalWrite(CsPin, 1);
60 void delayCycles(uint8_t n)
63 asm volatile(
"nop\n\t");
66 asm volatile(
"nop\n\t" "nop\n\t");
69 asm volatile(
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t");
76 void mcpAdcDummy(uint8_t delayBefore)
78 delayCycles(delayBefore);
79 fastDigitalWrite(ClkPin, 1);
81 fastDigitalWrite(ClkPin, 0);
85 void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 2)
88 fastDigitalWrite(ClkPin, 1);
89 delayCycles(delayRead);
90 if (fastDigitalRead(DoutPin)) {
93 fastDigitalWrite(ClkPin, 0);
97 template<uint8_t CsPin, uint8_t ClkPin,
98 uint8_t DoutPin, uint8_t DinPin, uint8_t UsecDelay = 0>
107 fastPinMode(ClkPin, 1);
108 fastDigitalWrite(ClkPin, 0);
109 fastPinMode(CsPin, 1);
110 fastDigitalWrite(CsPin, 1);
111 fastPinMode(DoutPin, 0);
112 fastPinMode(DinPin, 1);
119 uint16_t read(uint8_t
config)
122 fastDigitalWrite(CsPin, 0);
126 writeBit(config & 2);
128 writeBit(config & 1);
131 delayMicroseconds(UsecDelay);
150 fastDigitalWrite(CsPin, 1);
159 void delayCycles(uint8_t n)
162 asm volatile(
"nop\n\t");
165 asm volatile(
"nop\n\t" "nop\n\t");
168 asm volatile(
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t");
175 void writeBit(
bool value)
177 fastDigitalWrite(DinPin, value);
178 fastDigitalWrite(ClkPin, 1);
180 fastDigitalWrite(ClkPin, 0);
184 void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 1)
187 fastDigitalWrite(ClkPin, 1);
188 delayCycles(delayRead);
189 if (fastDigitalRead(DoutPin)) {
192 fastDigitalWrite(ClkPin, 0);
196 template<uint8_t CsPin, uint8_t ClkPin,
197 uint8_t DoutPin, uint8_t DinPin, uint8_t UsecDelay = 0>
206 fastPinMode(ClkPin, 1);
207 fastDigitalWrite(ClkPin, 0);
208 fastPinMode(CsPin, 1);
209 fastDigitalWrite(CsPin, 1);
210 fastPinMode(DoutPin, 0);
211 fastPinMode(DinPin, 1);
218 uint16_t read(uint8_t
config)
221 fastDigitalWrite(CsPin, 0);
225 writeBit(config & 8);
227 writeBit(config & 4);
229 writeBit(config & 2);
231 writeBit(config & 1);
234 delayMicroseconds(UsecDelay);
253 fastDigitalWrite(CsPin, 1);
262 void delayCycles(uint8_t n)
265 asm volatile(
"nop\n\t");
268 asm volatile(
"nop\n\t" "nop\n\t");
271 asm volatile(
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t");
278 void writeBit(
bool value)
280 fastDigitalWrite(DinPin, value);
281 fastDigitalWrite(ClkPin, 1);
283 fastDigitalWrite(ClkPin, 0);
287 void readBit(uint16_t &v, uint8_t b, uint8_t delayRead = 1)
290 fastDigitalWrite(ClkPin, 1);
291 delayCycles(delayRead);
292 if (fastDigitalRead(DoutPin)) {
295 fastDigitalWrite(ClkPin, 0);
300 template<uint8_t CsPin, uint8_t ClkPin,
301 uint8_t DoutPin, uint8_t DinPin, uint8_t UsecDelay = 0>
__attribute__((always_inline)) uint16_t read(uint8_t config)
Definition: MCP320X.h:118
Fast Digital I/O functions.
__attribute__((always_inline)) uint16_t read()
Definition: MCP320X.h:24
Definition: MCP320X.h:302
__attribute__((always_inline)) uint16_t read(uint8_t config)
Definition: MCP320X.h:217
Definition: MCP320X.h:199
Definition: MCP320X.h:100
void begin()
Definition: MCP320X.h:204
void begin()
Definition: MCP320X.h:12
void begin()
Definition: MCP320X.h:105