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.
173 lines
4.9 KiB
C++
173 lines
4.9 KiB
C++
4 weeks ago
|
/*
|
||
|
* 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 */
|