/* * ADCCTRL.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include //#include #include #include "F28335/DSP28x_Project.h" #ifndef SYSCTRL_ADCCTRL_H_ #define SYSCTRL_ADCCTRL_H_ namespace SYSCTRL { struct ADCCTRLSetup { float time_sample; ADCCTRLSetup(): time_sample(-1.0) {} };//end ADCCTRLSetup struct ADCCTRLConfiguration { int16 offset_00; int16 offset_01; int16 offset_02; int16 offset_03; int16 offset_04; int16 offset_05; int16 offset_06; int16 offset_07; int16 offset_08; int16 offset_09; int16 offset_10; int16 offset_11; int16 offset_12; int16 offset_13; int16 offset_14; int16 offset_15; float scale_current_net_a; float scale_current_net_b; float scale_current_net_c; float scale_current_load_a; float scale_current_load_b; float scale_current_load_c; float scale_voltage_net_a; float scale_voltage_net_b; float scale_voltage_net_c; float scale_voltage_load_a; float scale_voltage_load_b; float scale_voltage_load_c; float scale_voltage_dc; ADCCTRLConfiguration(): offset_00(0), offset_01(0), offset_02(0), offset_03(0), offset_04(0), offset_05(0), offset_06(0), offset_07(0), offset_08(0), offset_09(0), offset_10(0), offset_11(0), offset_12(0), offset_13(0), offset_14(0), offset_15(0), scale_current_net_a(-1.0), scale_current_net_b(-1.0), scale_current_net_c(-1.0), scale_current_load_a(-1.0), scale_current_load_b(-1.0), scale_current_load_c(-1.0), scale_voltage_net_a(-1.0), scale_voltage_net_b(-1.0), scale_voltage_net_c(-1.0), scale_voltage_load_a(-1.0), scale_voltage_load_b(-1.0), scale_voltage_load_c(-1.0), scale_voltage_dc(-1.0) {} };//ADCCTRLConfiguration class ADCCTRL { private: float m_time_sample; private: int16 m_result_00; int16 m_result_01; int16 m_result_02; int16 m_result_03; int16 m_result_04; int16 m_result_05; int16 m_result_06; int16 m_result_07; int16 m_result_08; int16 m_result_09; int16 m_result_10; int16 m_result_11; int16 m_result_12; int16 m_result_13; int16 m_result_14; int16 m_result_15; private: int16 m_channel_00; int16 m_channel_01; int16 m_channel_02; int16 m_channel_03; int16 m_channel_04; int16 m_channel_05; int16 m_channel_06; int16 m_channel_07; int16 m_channel_08; int16 m_channel_09; int16 m_channel_10; int16 m_channel_11; int16 m_channel_12; int16 m_channel_13; int16 m_channel_14; int16 m_channel_15; private: int16 m_offset_00; int16 m_offset_01; int16 m_offset_02; int16 m_offset_03; int16 m_offset_04; int16 m_offset_05; int16 m_offset_06; int16 m_offset_07; int16 m_offset_08; int16 m_offset_09; int16 m_offset_10; int16 m_offset_11; int16 m_offset_12; int16 m_offset_13; int16 m_offset_14; int16 m_offset_15; private: float m_scale_channel_00; float m_scale_channel_01; float m_scale_channel_02; float m_scale_channel_03; float m_scale_channel_04; float m_scale_channel_05; float m_scale_channel_06; float m_scale_channel_07; float m_scale_channel_08; float m_scale_channel_09; float m_scale_channel_10; float m_scale_channel_11; float m_scale_channel_12; public: ADCCTRL(); void setup(const ADCCTRLSetup& setup); void configure(const ADCCTRLConfiguration& config); public: void read_adc_result(); private: void (ADCCTRL::*_read_adc_result)(); void _read_adc_result_undef(); void _read_adc_result_operational(); public: void get_current_net(float&, float&, float&); void get_current_load(float&, float&, float&); void get_voltage_net(float&, float&, float&); void get_voltage_load(float&, float&, float&); void get_voltage_dc(float&); }; } /* namespace SYSCTRL */ #endif /* SYSCTRL_ADCCTRL_H_ */