5 #define nop asm volatile ("nop\n\t") 8 #define STATIC_ALWAYS_INLINE static inline __attribute__((always_inline)) 10 template<u
int8_t ClkPin, u
int8_t ConvPin, u
int8_t DataPin>
19 fastPinMode(ClkPin, 1);
20 fastDigitalWrite(ClkPin, 0);
21 fastPinMode(ConvPin, 1);
22 fastDigitalWrite(ConvPin, 1);
23 fastPinMode(DataPin, 0);
33 fastDigitalWrite(ConvPin, 0);
34 fastDigitalWrite(ClkPin, 1);
35 fastDigitalWrite(ClkPin, 0);
36 fastDigitalWrite(ConvPin, 1);
37 fastDigitalWrite(ClkPin, 1);
38 fastDigitalWrite(ClkPin, 0);
57 void readBitFast16(uint16_t &v, uint8_t b)
59 fastDigitalWrite(ClkPin, 1);
60 if (fastDigitalRead(DataPin)) {
63 fastDigitalWrite(ClkPin, 0);
68 STATIC_ALWAYS_INLINE
void adcBegin()
70 fastPinMode(ADC_CLK_PIN, 1);
71 fastDigitalWrite(ADC_CLK_PIN, 0);
72 fastPinMode(ADC_CONV_PIN, 1);
73 fastDigitalWrite(ADC_CONV_PIN, 1);
74 fastPinMode(ADC_DATA_PIN, 0);
79 STATIC_ALWAYS_INLINE
void fastDummy(
bool first)
84 fastDigitalWrite(ADC_CLK_PIN, 1);
86 fastDigitalWrite(ADC_CLK_PIN, 0);
93 STATIC_ALWAYS_INLINE
void readBitFast16(uint16_t &v, uint8_t b)
95 fastDigitalWrite(ADC_CLK_PIN, 1);
96 if (fastDigitalRead(ADC_DATA_PIN)) {
99 fastDigitalWrite(ADC_CLK_PIN, 0);
105 STATIC_ALWAYS_INLINE uint16_t adcRead(
bool centered =
false)
108 fastDigitalWrite(ADC_CONV_PIN, 0);
109 fastDigitalWrite(ADC_CLK_PIN, 1);
110 fastDigitalWrite(ADC_CLK_PIN, 0);
111 fastDigitalWrite(ADC_CONV_PIN, 1);
112 fastDigitalWrite(ADC_CLK_PIN, 1);
113 fastDigitalWrite(ADC_CLK_PIN, 0);
125 readBitFast16(v, 11);
126 readBitFast16(v, 10);
137 return centered ? v ^ 0X8000 : v;
void begin()
Definition: ADS7818.h:17
#define nop
Definition: SoftSPI.h:35
__attribute__((always_inline)) uint16_t read()
Definition: ADS7818.h:29