NV14 implementation partially merged with actual Flysky version.
This commit is contained in:
@@ -23,7 +23,11 @@
|
||||
#if defined(SIMU)
|
||||
// not needed
|
||||
#elif defined(PCBNV14)
|
||||
const int8_t ana_direction[NUM_ANALOGS] = { 0 };
|
||||
const int8_t ana_direction[NUM_ANALOGS] = { 0 /*STICK1*/, 0 /*STICK2*/, 0 /*STICK3*/, 0 /*STICK4*/,
|
||||
0 /*POT1*/, 0 /*POT2*/, 0 /*SWA*/, 0 /*SWB*/,
|
||||
0 /*SWC*/, -1 /*SWD*/, 0 /*SWE*/, -1 /*SWF*/,
|
||||
0 /*SWH*/, 0 /*SWG*/,
|
||||
0 /*TX_VOLTAGE*/ };
|
||||
const uint8_t anas_mapping[NUM_ANALOGS] = { 0 /*STICK1*/, 1 /*STICK2*/, 2 /*STICK3*/, 3 /*STICK4*/,
|
||||
4 /*POT1*/, 5 /*POT2*/, 6 /*SWA*/, 13 /*SWB*/,
|
||||
7 /*SWC*/, 14 /*SWD*/, 8 /*SWE*/, 9 /*SWF*/,
|
||||
@@ -64,13 +68,18 @@
|
||||
#define FIRST_ANALOG_ADC 0
|
||||
#define NUM_MAIN_ANALOGS_ADC 10
|
||||
#define NUM_MAIN_ANALOGS_ADC_EXT (NUM_MAIN_ANALOGS - 10)
|
||||
#elif defined(PCBNV14) && defined(HALL_STICKS)
|
||||
#define FIRST_ANALOG_ADC 4
|
||||
#define NUM_MAIN_ANALOGS_ADC 9
|
||||
#else
|
||||
#define FIRST_ANALOG_ADC 0
|
||||
#define FIRST_SUB_ANALOG_ADC 0
|
||||
#define NUM_MAIN_ANALOGS_ADC (SUB_ANALOG_POS)
|
||||
#define NUM_SUB_ANALOGS_ADC (NUM_ANALOGS - SUB_ANALOG_POS)
|
||||
#endif
|
||||
|
||||
#ifndef NUM_SUB_ANALOGS_ADC
|
||||
#define NUM_SUB_ANALOGS_ADC 0
|
||||
#endif
|
||||
uint16_t adcValues[NUM_ANALOGS] __DMA;
|
||||
|
||||
void adcInit()
|
||||
@@ -104,7 +113,7 @@ void adcInit()
|
||||
ADC_MAIN->CR1 = ADC_CR1_SCAN;
|
||||
ADC_MAIN->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS;
|
||||
ADC_MAIN->SQR1 = (NUM_MAIN_ANALOGS_ADC-1) << 20; // bits 23:20 = number of conversions
|
||||
#if defined(PCBNV14)
|
||||
#if NUM_SUB_ANALOGS_ADC > 0
|
||||
ADC_SUB->CR1 = ADC_CR1_SCAN;
|
||||
ADC_SUB->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS;
|
||||
ADC_SUB->SQR1 = (NUM_SUB_ANALOGS_ADC-1) << 20; // bits 23:20 = number of conversions
|
||||
@@ -138,11 +147,16 @@ void adcInit()
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_SWE<<0) + (ADC_CHANNEL_SWF<<5) + (ADC_CHANNEL_LIBATT<<10) + (ADC_CHANNEL_DRYBATT<<15); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<0) + (ADC_CHANNEL_POT2<<5) + (ADC_CHANNEL_SWA<<10) + (ADC_CHANNEL_SWB<<15) + (ADC_CHANNEL_SWC<<20) + (ADC_CHANNEL_SWD<<25); // conversions 1 to 6
|
||||
#elif defined(PCBNV14)
|
||||
#if !defined(HALL_STICKS)
|
||||
ADC_MAIN->SQR1 |= (ADC_CHANNEL_BATT <<0 );
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_SWA << 0) + (ADC_CHANNEL_SWC << 5) + (ADC_CHANNEL_SWE << 10) + (ADC_CHANNEL_SWF << 15) + (ADC_CHANNEL_SWG << 20) + (ADC_CHANNEL_SWH << 25); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<20) + (ADC_CHANNEL_POT2<<25); // conversions 1 to 6
|
||||
ADC_SUB->SQR3 = (ADC_CHANNEL_SWB<<0) + (ADC_CHANNEL_SWD<<5); // conversions 1 to 2
|
||||
|
||||
#else
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_SWG << 0) + (ADC_CHANNEL_SWH << 5) + (ADC_CHANNEL_BATT << 10); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<0) + (ADC_CHANNEL_POT2<<5) + (ADC_CHANNEL_SWA<<10) + (ADC_CHANNEL_SWC<<15) + (ADC_CHANNEL_SWE<<20) + (ADC_CHANNEL_SWF<<25); // conversions 1 to 6
|
||||
ADC_SUB->SQR3 = (ADC_CHANNEL_SWB<<0) + (ADC_CHANNEL_SWD<<5); // conversions 1 to 2
|
||||
#endif
|
||||
#else
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_POT3<<0) + (ADC_CHANNEL_SLIDER1<<5) + (ADC_CHANNEL_SLIDER2<<10) + (ADC_CHANNEL_BATT<<15); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<20) + (ADC_CHANNEL_POT2<<25); // conversions 1 to 6
|
||||
@@ -159,7 +173,7 @@ void adcInit()
|
||||
ADC_MAIN_DMA_Stream->NDTR = NUM_MAIN_ANALOGS_ADC;
|
||||
ADC_MAIN_DMA_Stream->FCR = DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0;
|
||||
|
||||
#if defined(PCBNV14)
|
||||
#if NUM_SUB_ANALOGS > 0
|
||||
ADC_SUB->SMPR1 = ADC_SAMPTIME + (ADC_SAMPTIME<<3) + (ADC_SAMPTIME<<6) + (ADC_SAMPTIME<<9) + (ADC_SAMPTIME<<12) + (ADC_SAMPTIME<<15) + (ADC_SAMPTIME<<18) + (ADC_SAMPTIME<<21) + (ADC_SAMPTIME<<24);
|
||||
ADC_SUB->SMPR2 = ADC_SAMPTIME + (ADC_SAMPTIME<<3) + (ADC_SAMPTIME<<6) + (ADC_SAMPTIME<<9) + (ADC_SAMPTIME<<12) + (ADC_SAMPTIME<<15) + (ADC_SAMPTIME<<18) + (ADC_SAMPTIME<<21) + (ADC_SAMPTIME<<24) + (ADC_SAMPTIME<<27);
|
||||
|
||||
@@ -192,6 +206,8 @@ void adcInit()
|
||||
sticksPwmInit();
|
||||
}
|
||||
#endif
|
||||
//Avoid reading wrong values when the adcRead not be called.
|
||||
adcRead();
|
||||
}
|
||||
|
||||
void adcSingleRead()
|
||||
@@ -201,7 +217,7 @@ void adcSingleRead()
|
||||
ADC_MAIN_SET_DMA_FLAGS();
|
||||
ADC_MAIN_DMA_Stream->CR |= DMA_SxCR_EN; // Enable DMA
|
||||
ADC_MAIN->CR2 |= (uint32_t) ADC_CR2_SWSTART;
|
||||
#if defined(PCBNV14)
|
||||
#if NUM_SUB_ANALOGS_ADC > 0
|
||||
ADC_SUB_DMA_Stream->CR &= ~DMA_SxCR_EN; // Disable DMA
|
||||
ADC_SUB->SR &= ~(uint32_t)(ADC_SR_EOC | ADC_SR_STRT | ADC_SR_OVR);
|
||||
ADC_SUB_SET_DMA_FLAGS();
|
||||
|
||||
Reference in New Issue
Block a user