diff --git a/firmware/drivers/utility/utility.cpp b/firmware/drivers/utility/utility.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c2b7c5e678c8dc206828f37077f5ec494fe91dfc --- /dev/null +++ b/firmware/drivers/utility/utility.cpp @@ -0,0 +1,23 @@ +#include <utility.hpp> +#include <ad7124_4.hpp> +#include <ad7124_registers.hpp> + +std::array<double,5> Temperatures::temperatures = {0., 0., 0., 0., 0.}; + +Adc_data readAdc(Ad7124_4* device){ + Adc_data data; + data.valid = false; + Spi_selecta::select_device(device); + if(device->data_available()){ + Spi_selecta::deselect_device(); + Spi_selecta::select_device(device); + data.channel = device->read_register(REG_Status, 1); + Spi_selecta::deselect_device(); + Spi_selecta::select_device(device); + data.data = device->get_data() & 0x00FFFFFF; + Spi_selecta::deselect_device(); + data.valid = true; + } + Spi_selecta::deselect_device(); + return data; +} diff --git a/firmware/drivers/utility/utility.hpp b/firmware/drivers/utility/utility.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c4135464f0892572eb43e33eaa85c42f0c171a2b --- /dev/null +++ b/firmware/drivers/utility/utility.hpp @@ -0,0 +1,18 @@ +#ifndef UTILITY_HPP_INCLUDED +#define UTILITY_HPP_INCLUDED +#include <ad7124_4.hpp> + +struct Adc_data{ + bool valid; + uint32_t channel; + uint32_t data; +}; + +Adc_Data readAdc(Ad7124_4* device); + +struct Temperatures{ + /*The 0th temperature shall always be the loop, the others the out-of-loops*/ + static std::array<double, 5> temperatures; +}; + +#endif