Browse Source

Made it a bit more elegant

software_develop
elamre 7 years ago
parent
commit
c84d8317d2
  1. 50
      software/app/ads101x.cpp
  2. 3
      software/app/ads101x.h

50
software/app/ads101x.cpp

@ -47,22 +47,18 @@ cADS101x::cADS101x(uint8_t i_readyPin, uint8_t i_address) :
void cADS101x::SetOneShot(bool i_oneShot) { void cADS101x::SetOneShot(bool i_oneShot) {
m_oneShot = i_oneShot; m_oneShot = i_oneShot;
WriteSettings(CreateSettings(0));
} }
void cADS101x::SetGain(enum eGainAmplifier i_gain) { void cADS101x::SetGain(enum eGainAmplifier i_gain) {
m_gain = i_gain; m_gain = i_gain;
WriteSettings(CreateSettings(0));
} }
void cADS101x::SetMux(enum eInputMux i_mux) { void cADS101x::SetMux(enum eInputMux i_mux) {
m_mux = i_mux; m_mux = i_mux;
WriteSettings(CreateSettings(0));
} }
void cADS101x::SetSampleSpeed(enum eSampleSpeed i_sampleSpeed) { void cADS101x::SetSampleSpeed(enum eSampleSpeed i_sampleSpeed) {
m_sampleSpeed = i_sampleSpeed; m_sampleSpeed = i_sampleSpeed;
WriteSettings(CreateSettings(0));
} }
void cADS101x::WaitSample(void) { void cADS101x::WaitSample(void) {
@ -84,34 +80,32 @@ uint16_t cADS101x::CreateSettings(uint8_t start) {
void cADS101x::WriteSettings(uint16_t i_settings) { void cADS101x::WriteSettings(uint16_t i_settings) {
Wire.beginTransmission(m_address); Wire.beginTransmission(m_address);
Wire.write(REGISTER_CONFIG); Wire.write((uint8_t) REGISTER_CONFIG);
Wire.write((uint8_t) (i_settings >> 8)); Wire.write((uint8_t) (i_settings >> 8));
Wire.write((uint8_t) (i_settings & 0xFF)); Wire.write((uint8_t) (i_settings & 0xFF));
Wire.endTransmission(); int8_t ret = Wire.endTransmission();
if (ret) {
Serial.printf("Err writing settings ret: %d\n\r", ret);
}
}
uint16_t cADS101x::ReadRegister(uint8_t i_register) {
Wire.beginTransmission(m_address);
Wire.write(i_register);
Wire.endTransmission();
Wire.requestFrom(m_address, static_cast<uint8_t>(2));
return ((Wire.read() << 8) | (Wire.read()));
} }
void cADS101x::OneShot(void) { void cADS101x::OneShot(void) {
if (m_oneShot) { //if (m_oneShot) {
uint16_t settings = CreateSettings(1); uint16_t settings = CreateSettings(1);
WriteSettings(settings); WriteSettings(settings);
} //}
} }
uint16_t cADS101x::GetSettings(void) { uint16_t cADS101x::GetSettings(void) {
uint16_t settings; return ReadRegister(REGISTER_CONFIG);;
Wire.beginTransmission(m_address);
Wire.write(REGISTER_CONFIG);
Wire.endTransmission();
Wire.beginTransmission(m_address);
Wire.requestFrom((int) m_address, 2); //16 bits
settings = Wire.read() << 8;
settings |= Wire.read();
int result = Wire.endTransmission();
if (result != 0) {
Serial.printf("Error sample i2c: %d \n\r", result);
}
return settings;
} }
ads_voltage_t cADS101x::ConvertSample(ads_sample_t & sample) { ads_voltage_t cADS101x::ConvertSample(ads_sample_t & sample) {
//Raw sample is in (parts of) millivolts, go to micro to remove fractions //Raw sample is in (parts of) millivolts, go to micro to remove fractions
@ -142,23 +136,13 @@ ads_voltage_t cADS101x::ConvertSample(ads_sample_t & sample) {
returnType *= 3000; returnType *= 3000;
break; break;
} }
return returnType/1000; return returnType / 1000;
} }
ads_sample_t cADS101x::RawSample(void) { ads_sample_t cADS101x::RawSample(void) {
OneShot(); OneShot();
ads_sample_t sample; ads_sample_t sample;
Wire.beginTransmission(m_address); sample.rawSample = ReadRegister(REGISTER_CONVERSION);
Wire.write(REGISTER_CONVERSION);
Wire.endTransmission();
Wire.beginTransmission(m_address);
Wire.requestFrom((int) m_address, 2); //16 bits
sample.rawSample = Wire.read() << 8;
sample.rawSample |= Wire.read();
int result = Wire.endTransmission();
if (result != 0) {
Serial.printf("Error sample i2c: %d \n\r", result);
}
sample.gain = m_gain; sample.gain = m_gain;
sample.mux = m_mux; sample.mux = m_mux;
m_latestSample = sample; m_latestSample = sample;

3
software/app/ads101x.h

@ -29,7 +29,7 @@ enum eSampleSpeed {
}; };
struct ads_sample_t { struct ads_sample_t {
int16_t rawSample; uint16_t rawSample;
enum eInputMux mux; enum eInputMux mux;
enum eGainAmplifier gain; enum eGainAmplifier gain;
}; };
@ -55,6 +55,7 @@ public:
} }
private: private:
uint16_t CreateSettings(uint8_t i_startSample); uint16_t CreateSettings(uint8_t i_startSample);
uint16_t ReadRegister(uint8_t i_register);
void WriteSettings(uint16_t i_settings); void WriteSettings(uint16_t i_settings);
void SetDefaults(void); void SetDefaults(void);
void OneShot(void); void OneShot(void);

Loading…
Cancel
Save