64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
/*
|
|
* ads1210.cpp
|
|
*
|
|
* Created on: Nov 2, 2014
|
|
* Author: wn
|
|
*/
|
|
|
|
// #include <Arduino.h>
|
|
#include <SPI.h>
|
|
#include <Streaming.h>
|
|
#include "ads1210.h"
|
|
|
|
ADS1210::ADS1210() {
|
|
}
|
|
|
|
void ADS1210::enableCS() const {
|
|
digitalWrite(m_csPin, LOW);
|
|
}
|
|
void ADS1210::disableCS() const {
|
|
digitalWrite(m_csPin, HIGH);
|
|
}
|
|
|
|
void ADS1210::writeCMR () const {
|
|
uint8_t instr = INSR_MB1 | INSR_MB0 | ADDR_CMR3;
|
|
enableCS();
|
|
SPI.transfer(instr);
|
|
SPI.transfer(m_cmrShadow[3]);
|
|
SPI.transfer(m_cmrShadow[2]);
|
|
SPI.transfer(m_cmrShadow[1]);
|
|
SPI.transfer(m_cmrShadow[0]);
|
|
disableCS();
|
|
}
|
|
|
|
void ADS1210::readCMR () {
|
|
uint8_t instr = INSR_MB1 | INSR_MB0 | ADDR_CMR3 | INSR_RW;
|
|
enableCS();
|
|
SPI.transfer(instr);
|
|
m_cmrShadow[3] = SPI.transfer(0);
|
|
m_cmrShadow[2] = SPI.transfer(0);
|
|
m_cmrShadow[1] = SPI.transfer(0);
|
|
m_cmrShadow[0] = SPI.transfer(0);
|
|
disableCS();
|
|
}
|
|
|
|
|
|
|
|
void ADS1210::begin(uint8_t csPin) {
|
|
m_csPin = csPin;
|
|
|
|
// initialization of SPI
|
|
pinMode(m_csPin, OUTPUT);
|
|
digitalWrite(m_csPin, HIGH);
|
|
SPI.begin();
|
|
SPI.setBitOrder(MSBFIRST);
|
|
SPI.setClockDivider(SPI_CLOCK_DIV2);
|
|
SPI.setDataMode(SPI_MODE0);
|
|
|
|
// initialization of the ADS1210
|
|
readCMR();
|
|
|
|
Serial << "CMR3: " << _HEX(m_cmrShadow[3]) << ", CMR2: " << _HEX(m_cmrShadow[2]) << ", CMR1: " << _HEX(m_cmrShadow[1]) << ", CMR0: " << _HEX(m_cmrShadow[0]) << endl;
|
|
}
|
|
|