diff --git a/src/shared/sensors/ADS131M04/ADS131M04.cpp b/src/shared/sensors/ADS131M04/ADS131M04.cpp index 6464665866b1949a61b6ec4004c94df34f6c4b1e..ab9cebda40c667ad32ba041e2c6cdcf78fa3cb5a 100644 --- a/src/shared/sensors/ADS131M04/ADS131M04.cpp +++ b/src/shared/sensors/ADS131M04/ADS131M04.cpp @@ -38,14 +38,7 @@ ADS131M04::ADS131M04(SPIBusInterface &bus, miosix::GpioPin cs, { } -ADS131M04::ADS131M04(SPISlave spiSlave) : spiSlave(spiSlave) -{ - // Reset the configuration - channelsPGAGain[0] = PGA::PGA_1; - channelsPGAGain[1] = PGA::PGA_1; - channelsPGAGain[2] = PGA::PGA_1; - channelsPGAGain[3] = PGA::PGA_1; -} +ADS131M04::ADS131M04(SPISlave spiSlave) : spiSlave(spiSlave) {} SPIBusConfig ADS131M04::getDefaultSPIConfig() { @@ -89,7 +82,7 @@ bool ADS131M04::reset() uint16_t response = data[0] << 8 | data[1]; // Check for the correct response - if (response != 0xFF24) + if (response != RESET_CMD_RESPONSE) { lastError = SensorErrors::COMMAND_FAILED; LOG_ERR(logger, "Reset command failed, response was {:X}", response); @@ -148,10 +141,9 @@ void ADS131M04::setChannelPGA(Channel channel, PGA gain) { channelsPGAGain[static_cast<int>(channel)] = gain; - changeRegister(Registers::REG_GAIN, - static_cast<uint16_t>(gain) - << (static_cast<int>(channel) * 4), - REG_GAIN_PGAGAIN0 << (static_cast<int>(channel) * 4)); + int shift = static_cast<int>(channel) * 4; + changeRegister(Registers::REG_GAIN, static_cast<uint16_t>(gain) << shift, + REG_GAIN_PGAGAIN0 << shift); } void ADS131M04::setChannelOffset(Channel channel, uint32_t offset) diff --git a/src/shared/sensors/ADS131M04/ADS131M04.h b/src/shared/sensors/ADS131M04/ADS131M04.h index c2857a4f8bb615094a091bee941787742d1084da..4f4615ac1a44c0adc702a62537720b9727627a98 100644 --- a/src/shared/sensors/ADS131M04/ADS131M04.h +++ b/src/shared/sensors/ADS131M04/ADS131M04.h @@ -248,17 +248,18 @@ private: WREG = 0x6000 }; + SPISlave spiSlave; + + PGA channelsPGAGain[4] = {PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1}; + + PrintLogger logger = Logging::getLogger("ads131m04"); + + static constexpr uint16_t RESET_CMD_RESPONSE = 0xFF24; + ///< Digit value in mV for each pga configurations const float PGA_LSB_SIZE[8] = {143.0511e-9, 71.5256e-9, 35.7628e-9, 17.8814e-9, 8.9407e-9, 4.4703e-9, 2.2352e-9, 1.1176e-9}; - - PGA channelsPGAGain[4] = {PGA::PGA_1}; - -protected: - SPISlave spiSlave; - - PrintLogger logger = Logging::getLogger("ads131m04"); }; namespace ADS131M04RegisterBitMasks diff --git a/src/shared/sensors/ADS131M08/ADS131M08.cpp b/src/shared/sensors/ADS131M08/ADS131M08.cpp index 9db582e2c95688dea2d8ae4a943c206f58057e14..4b926068bf8c75bb032ed6efb061634900321a77 100644 --- a/src/shared/sensors/ADS131M08/ADS131M08.cpp +++ b/src/shared/sensors/ADS131M08/ADS131M08.cpp @@ -38,18 +38,7 @@ ADS131M08::ADS131M08(SPIBusInterface &bus, miosix::GpioPin cs, { } -ADS131M08::ADS131M08(SPISlave spiSlave) : spiSlave(spiSlave) -{ - // Reset the configuration - channelsPGAGain[0] = PGA::PGA_1; - channelsPGAGain[1] = PGA::PGA_1; - channelsPGAGain[2] = PGA::PGA_1; - channelsPGAGain[3] = PGA::PGA_1; - channelsPGAGain[4] = PGA::PGA_1; - channelsPGAGain[5] = PGA::PGA_1; - channelsPGAGain[6] = PGA::PGA_1; - channelsPGAGain[7] = PGA::PGA_1; -} +ADS131M08::ADS131M08(SPISlave spiSlave) : spiSlave(spiSlave) {} SPIBusConfig ADS131M08::getDefaultSPIConfig() { @@ -93,7 +82,7 @@ bool ADS131M08::reset() uint16_t response = data[0] << 8 | data[1]; // Check for the correct response - if (response != 0xFF28) + if (response != RESET_CMD_RESPONSE) { lastError = SensorErrors::COMMAND_FAILED; LOG_ERR(logger, "Reset command failed, response was {:X}", response); diff --git a/src/shared/sensors/ADS131M08/ADS131M08.h b/src/shared/sensors/ADS131M08/ADS131M08.h index 6dca0801fd26aad599b42f4fd1ead87889e429d7..374288a80525f288c71d89e647e67126b11fd1bc 100644 --- a/src/shared/sensors/ADS131M08/ADS131M08.h +++ b/src/shared/sensors/ADS131M08/ADS131M08.h @@ -34,7 +34,7 @@ namespace Boardcore /** * @brief Driver for ADS131M08 8 simultaneous channels adc. * - * The ADS131M08 is a four-channel, simultaneously-sampling, 24-bit, + * The ADS131M08 is an eight-channel, simultaneously-sampling, 24-bit, * delta-sigma (ΔΣ), analog-to-digital converter (ADC). The individual ADC * channels can be independently configured depending on the sensor input. A * low-noise, programmable gain amplifier (PGA) provides gains ranging from 1 @@ -114,10 +114,10 @@ public: CHANNEL_1 = 1, CHANNEL_2 = 2, CHANNEL_3 = 3, - CHANNEL_4 = 3, - CHANNEL_5 = 3, - CHANNEL_6 = 3, - CHANNEL_7 = 3 + CHANNEL_4 = 4, + CHANNEL_5 = 5, + CHANNEL_6 = 6, + CHANNEL_7 = 7 }; enum class Input : uint8_t @@ -273,17 +273,19 @@ private: WREG = 0x6000 }; + SPISlave spiSlave; + + PGA channelsPGAGain[8] = {PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, + PGA::PGA_1, PGA::PGA_1, PGA::PGA_1, PGA::PGA_1}; + + PrintLogger logger = Logging::getLogger("ads131m08"); + + static constexpr uint16_t RESET_CMD_RESPONSE = 0xFF28; + ///< Digit value in mV for each pga configurations const float PGA_LSB_SIZE[8] = {143.0511e-9, 71.5256e-9, 35.7628e-9, 17.8814e-9, 8.9407e-9, 4.4703e-9, 2.2352e-9, 1.1176e-9}; - - PGA channelsPGAGain[8] = {PGA::PGA_1}; - -protected: - SPISlave spiSlave; - - PrintLogger logger = Logging::getLogger("ads131m08"); }; namespace ADS131M08RegisterBitMasks