From d3b2af0dc5fbdf22ee28f896a032009500c10c04 Mon Sep 17 00:00:00 2001 From: wn Date: Sat, 15 Nov 2014 17:58:50 +0100 Subject: [PATCH] some fixes concerning comm with adc --- ModbusThermometer.cpp | 1 + ads1210.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ModbusThermometer.cpp b/ModbusThermometer.cpp index 7c31c64..c19d5d5 100644 --- a/ModbusThermometer.cpp +++ b/ModbusThermometer.cpp @@ -43,6 +43,7 @@ struct { void setup() { + delay(100); led.begin(LED_PIN); ads1210_1.begin(ADC_1_CS_PIN, ADC_1_RDY_PIN); ads1210_2.begin(ADC_2_CS_PIN, ADC_2_RDY_PIN); diff --git a/ads1210.cpp b/ads1210.cpp index ffbd643..50eed0c 100644 --- a/ads1210.cpp +++ b/ads1210.cpp @@ -34,7 +34,7 @@ void ADS1210::waitForDRdy() const { void ADS1210::writeRegister(const uint8_t regAddr, const uint8_t value) const { - //waitForDRdy(); + waitForDRdy(); enableCS(); SPI.transfer(regAddr); SPI.transfer(value); @@ -45,7 +45,7 @@ void ADS1210::writeRegister(const uint8_t regAddr, const uint8_t value) const { uint8_t ADS1210::readRegister(const uint8_t regAddr) const { uint8_t res; - //waitForDRdy(); + waitForDRdy(); enableCS(); SPI.transfer(regAddr | INSR_RW); res = SPI.transfer(0); @@ -61,6 +61,8 @@ void ADS1210::exec() { uint32_t out; } res; + writeRegister(ADDR_CMR3, CMR_SDL | CMR_UB | CMR_REFO); + enableCS(); SPI.transfer(ADDR_DOR2 | INSR_MB1 | INSR_RW); res.in[2] = SPI.transfer(0); @@ -107,13 +109,14 @@ void ADS1210::begin(uint8_t csPin, uint8_t drdyPin) { digitalWrite(m_csPin, HIGH); SPI.begin(); SPI.setBitOrder(MSBFIRST); - SPI.setClockDivider(SPI_CLOCK_DIV8); + SPI.setClockDivider(SPI_CLOCK_DIV128); SPI.setDataMode(SPI_MODE1); // Serial << "done." << endl; // initialization of ADS1210 // Serial << "Start ADS1210 initialization ... "; pinMode(m_drdyPin, INPUT); + delay(10); writeRegister(ADDR_CMR3, CMR_SDL | CMR_UB | CMR_REFO); writeRegister(ADDR_CMR1, 0x1b); // data rate writeRegister(ADDR_CMR0, 0x58);