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.
CCS-COMM_BOARD/PERIPHERY/ExtADC.cpp

173 lines
4.9 KiB
C++

/*
* ExtADC.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "PERIPHERY/ExtADC.h"
namespace PERIPHERY
{
//CONSTRUCTOR
ExtADC::ExtADC():
p_channel_00(0),
p_channel_01(0),
p_channel_02(0),
p_channel_03(0),
p_channel_04(0),
p_channel_05(0),
p_channel_06(0),
p_channel_07(0),
p_channel_08(0),
p_channel_09(0),
p_channel_10(0),
p_channel_11(0),
p_channel_12(0),
p_channel_13(0),
p_channel_14(0),
p_channel_15(0),
p_channel_16(0),
p_channel_17(0),
_gpio_setup(&DSP28335::GPIO::ext_adc_start_convertion_setup),
_start_convertion(&DSP28335::GPIO::set_ext_adc_start_convertion),
_stop_convertion(&DSP28335::GPIO::clear_ext_adc_start_convertion)
//
{}//CONSTRUCTOR
void ExtADC::setup(uint16_t *memzone)
{
p_channel_00 = memzone + OFFSET_ADC_0_CHANNEL_0;
p_channel_01 = memzone + OFFSET_ADC_0_CHANNEL_1;
p_channel_02 = memzone + OFFSET_ADC_0_CHANNEL_2;
p_channel_03 = memzone + OFFSET_ADC_0_CHANNEL_3;
p_channel_04 = memzone + OFFSET_ADC_0_CHANNEL_4;
p_channel_05 = memzone + OFFSET_ADC_0_CHANNEL_5;
p_channel_06 = memzone + OFFSET_ADC_1_CHANNEL_0;
p_channel_07 = memzone + OFFSET_ADC_1_CHANNEL_1;;
p_channel_08 = memzone + OFFSET_ADC_1_CHANNEL_2;
p_channel_09 = memzone + OFFSET_ADC_1_CHANNEL_3;
p_channel_10 = memzone + OFFSET_ADC_1_CHANNEL_4;
p_channel_11 = memzone + OFFSET_ADC_1_CHANNEL_5;
p_channel_12 = memzone + OFFSET_ADC_2_CHANNEL_0;
p_channel_13 = memzone + OFFSET_ADC_2_CHANNEL_1;
p_channel_14 = memzone + OFFSET_ADC_2_CHANNEL_2;
p_channel_15 = memzone + OFFSET_ADC_2_CHANNEL_3;
p_channel_16 = memzone + OFFSET_ADC_2_CHANNEL_4;
p_channel_17 = memzone + OFFSET_ADC_2_CHANNEL_5;
(*_gpio_setup)();
//
}//
//
void ExtADC::setup(uint16_t *memzone, const ExtADCSetup& setup)
{
p_channel_00 = memzone + OFFSET_ADC_0_CHANNEL_0;
p_channel_01 = memzone + OFFSET_ADC_0_CHANNEL_1;
p_channel_02 = memzone + OFFSET_ADC_0_CHANNEL_2;
p_channel_03 = memzone + OFFSET_ADC_0_CHANNEL_3;
p_channel_04 = memzone + OFFSET_ADC_0_CHANNEL_4;
p_channel_05 = memzone + OFFSET_ADC_0_CHANNEL_5;
p_channel_06 = memzone + OFFSET_ADC_1_CHANNEL_0;
p_channel_07 = memzone + OFFSET_ADC_1_CHANNEL_1;;
p_channel_08 = memzone + OFFSET_ADC_1_CHANNEL_2;
p_channel_09 = memzone + OFFSET_ADC_1_CHANNEL_3;
p_channel_10 = memzone + OFFSET_ADC_1_CHANNEL_4;
p_channel_11 = memzone + OFFSET_ADC_1_CHANNEL_5;
p_channel_12 = memzone + OFFSET_ADC_2_CHANNEL_0;
p_channel_13 = memzone + OFFSET_ADC_2_CHANNEL_1;
p_channel_14 = memzone + OFFSET_ADC_2_CHANNEL_2;
p_channel_15 = memzone + OFFSET_ADC_2_CHANNEL_3;
p_channel_16 = memzone + OFFSET_ADC_2_CHANNEL_4;
p_channel_17 = memzone + OFFSET_ADC_2_CHANNEL_5;
_gpio_setup = setup.p_gpio_setup;
_start_convertion = setup.p_start_convertion;
_stop_convertion = setup.p_stop_convertion;
(*_gpio_setup)();
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
void ExtADC::read_adc(ADC_RESULT& adc_result)
{
NOP;
NOP;
adc_result.channel_00 = *p_channel_00;
adc_result.channel_01 = *p_channel_01;
adc_result.channel_02 = *p_channel_02;
adc_result.channel_03 = *p_channel_03;
adc_result.channel_04 = *p_channel_04;
adc_result.channel_05 = *p_channel_05;
adc_result.channel_06 = *p_channel_06;
adc_result.channel_07 = *p_channel_07;
adc_result.channel_08 = *p_channel_08;
adc_result.channel_09 = *p_channel_09;
adc_result.channel_10 = *p_channel_10;
adc_result.channel_11 = *p_channel_11;
adc_result.channel_12 = *p_channel_12;
adc_result.channel_13 = *p_channel_13;
adc_result.channel_14 = *p_channel_14;
adc_result.channel_15 = *p_channel_15;
adc_result.channel_16 = *p_channel_16;
adc_result.channel_17 = *p_channel_17;
NOP;
NOP;
NOP;
//
}//
//
//#pragma CODE_SECTION("ramfuncs");
void ExtADC::read_adc(uint16_t adc_result[18])
{
NOP;
NOP;
adc_result[0] = *p_channel_00;
adc_result[1] = *p_channel_01;
adc_result[2] = *p_channel_02;
adc_result[3] = *p_channel_03;
adc_result[4] = *p_channel_04;
adc_result[5] = *p_channel_05;
adc_result[6] = *p_channel_06;
adc_result[7] = *p_channel_07;
adc_result[8] = *p_channel_08;
adc_result[9] = *p_channel_09;
adc_result[10] = *p_channel_10;
adc_result[11] = *p_channel_11;
adc_result[12] = *p_channel_12;
adc_result[13] = *p_channel_13;
adc_result[14] = *p_channel_14;
adc_result[15] = *p_channel_15;
adc_result[16] = *p_channel_16;
adc_result[17] = *p_channel_17;
NOP;
NOP;
NOP;
}//
//
#pragma CODE_SECTION("ramfuncs");
void ExtADC::start_convertion()
{
(*_start_convertion)();
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void ExtADC::stop_convertion()
{
(*_stop_convertion)();
//
}//
//
} /* namespace PERIPHERY */