You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
4.1 KiB
C++
184 lines
4.1 KiB
C++
/*
|
|
* ADCCTRL.h
|
|
*
|
|
* Author: Aleksey Gerasimenko
|
|
* gerasimenko.aleksey.n@gmail.com
|
|
*/
|
|
|
|
#include <cmath>
|
|
//#include <math.h>
|
|
#include <stdint.h>
|
|
|
|
#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_ */
|