21 template<uint8_t NumBits,
23 uint32_t MaxSPIClockSpeed,
24 uint8_t SPITransferLength = 3>
73 _useHardwareSPI =
true;
81 pinMode(_csPin, OUTPUT);
86 digitalWrite(_csPin, HIGH);
100 void begin(uint8_t csPin, uint8_t mosiPin, uint8_t misoPin, uint8_t sckPin)
102 _useHardwareSPI =
false;
110 pinMode(_csPin, OUTPUT);
111 pinMode(_mosiPin, OUTPUT);
112 pinMode(_misoPin, INPUT);
113 pinMode(_sckPin, OUTPUT);
117 digitalWrite(_csPin, HIGH);
129 return _read(channel,
false);
147 return _read(inPositiveChannel,
true);
170 uint32_t _read(uint8_t channel,
bool differential)
const 183 data[0] = 0b01000000;
185 data[0] |= (differential ? 0b00000000 : 0b00100000);
187 data[0] |= (channel == 0 ? 0b00000000 : 0b00010000);
189 data[0] |= 0b00001000;
202 data[0] = 0b00000001;
204 data[1] = (differential ? 0b00000000 : 0b10000000) | (channel << 4);
217 digitalWrite(_csPin, LOW);
220 data[i] = SPI.transfer(data[i]);
222 digitalWrite(_csPin, HIGH);
223 SPI.endTransaction();
231 digitalWrite(_csPin, LOW);
234 for (
size_t j = 8; j-- > 0;)
237 digitalWrite(_mosiPin, bitRead(data[i], j));
239 digitalWrite(_sckPin, HIGH);
241 bitWrite(data[i], j, digitalRead(_misoPin));
243 digitalWrite(_sckPin, LOW);
246 digitalWrite(_csPin, HIGH);
258 bool _useHardwareSPI =
true;
264 uint8_t _mosiPin = MOSI;
267 uint8_t _misoPin = MISO;
270 uint8_t _sckPin = SCK;
size_t numChannels() const
Definition: MCP3XXX.h:152
void begin(uint8_t csPin=SS)
Set up the ADC using default hardware SPI pins.
Definition: MCP3XXX.h:71
MCP3XXX_()
Construct a default MCP3XXX_ device.
Definition: MCP3XXX.h:55
Number of input channels.
Definition: MCP3XXX.h:44
uint32_t analogReadDifferential(uint8_t inPositiveChannel) const
Read a differential analog value by specifying the IN+ channel.
Definition: MCP3XXX.h:144
void begin(uint8_t csPin, uint8_t mosiPin, uint8_t misoPin, uint8_t sckPin)
Set up the ADC using custom software SPI pins.
Definition: MCP3XXX.h:100
ADC error value.
Definition: MCP3XXX.h:32
Number of ADC bits.
Definition: MCP3XXX.h:38
uint32_t analogRead(uint8_t channel) const
Read the analog value.
Definition: MCP3XXX.h:126
ADC error value.
Definition: MCP3XXX.h:35
~MCP3XXX_()
Destroy the MCP3XXX_ device.
Definition: MCP3XXX.h:60
Maximum SPI communication speed rate in Hz.
Definition: MCP3XXX.h:47
The number of bytes transferred over SPI.
Definition: MCP3XXX.h:50
A bit mask based on the number of bits.
Definition: MCP3XXX.h:41
size_t numBits() const
Definition: MCP3XXX.h:158
A template class supporting MCP3XXX ADC SPI chips.
Definition: MCP3XXX.h:25