/* * ads1210.cpp * * Created on: Nov 2, 2014 * Author: wn */ // #include #include #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_cmrWriteShadow[3]); SPI.transfer(m_cmrWriteShadow[2]); SPI.transfer(m_cmrWriteShadow[1]); SPI.transfer(m_cmrWriteShadow[0]); disableCS(); } void ADS1210::readCMR () { uint8_t instr = INSR_MB1 | INSR_MB0 | ADDR_CMR3 | INSR_RW; enableCS(); SPI.transfer(instr); m_cmrReadShadow[3] = SPI.transfer(0); m_cmrReadShadow[2] = SPI.transfer(0); m_cmrReadShadow[1] = SPI.transfer(0); m_cmrReadShadow[0] = SPI.transfer(0); disableCS(); } void ADS1210::begin(uint8_t csPin) { static bool onlyOnce = false; m_csPin = csPin; // initialization of SPI pinMode(m_csPin, OUTPUT); digitalWrite(m_csPin, HIGH); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV16); SPI.setDataMode(SPI_MODE1); if (! onlyOnce) { // initialization of the ADS1210 m_cmrWriteShadow[3] |= CMR_SDL; m_cmrWriteShadow[2] = 0; m_cmrWriteShadow[1] = 0; m_cmrWriteShadow[0] = 0; writeCMR(); // onlyOnce = true; } // static bool toggleRefO = false; // if (toggleRefO) { // toggleRefO = false; // m_cmrWriteShadow[3] |= CMR_REFO; // } else { // toggleRefO = true; // m_cmrWriteShadow[3] &= ~CMR_REFO; // } // writeCMR(); readCMR(); Serial << "CMR3: " << _HEX(m_cmrReadShadow[3]) << ", CMR2: " << _HEX(m_cmrReadShadow[2]) << ", CMR1: " << _HEX(m_cmrReadShadow[1]) << ", CMR0: " << _HEX(m_cmrReadShadow[0]) << endl; }