slow down adc to give idle some time back

This commit is contained in:
Wolfgang Hottgenroth 2020-11-01 13:22:57 +01:00
parent 9ba1ce676b
commit 4ee027c7a4
No known key found for this signature in database
GPG Key ID: 656C88C7C1734267
10 changed files with 148 additions and 51 deletions

View File

@ -74,8 +74,10 @@ void Error_Handler(void);
#define LED_Red_GPIO_Port GPIOE
#define Frontend_In_Pin GPIO_PIN_1
#define Frontend_In_GPIO_Port GPIOA
#define Debug_Signal_Pin GPIO_PIN_10
#define Debug_Signal_GPIO_Port GPIOB
#define Debug_Signal_2_Pin GPIO_PIN_12
#define Debug_Signal_2_GPIO_Port GPIOE
#define Debug_Signal_1_Pin GPIO_PIN_10
#define Debug_Signal_1_GPIO_Port GPIOB
#define Debug_TX_Pin GPIO_PIN_10
#define Debug_TX_GPIO_Port GPIOC
#define Debug_RX_Pin GPIO_PIN_11

View File

@ -34,12 +34,12 @@ void MX_ADC1_Init(void)
/** Common config
*/
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.NbrOfConversion = 10;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
@ -53,6 +53,69 @@ void MX_ADC1_Init(void)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_2;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_3;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_4;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_6;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_7;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_8;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_9;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_10;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
}

View File

@ -50,16 +50,19 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOE, Loop_Enable_Pin|Loop_Disable_Pin|LED_Green_Pin|LED_Red_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOE, Loop_Enable_Pin|Loop_Disable_Pin|LED_Green_Pin|LED_Red_Pin
|Debug_Signal_2_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(Debug_Signal_GPIO_Port, Debug_Signal_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(Debug_Signal_1_GPIO_Port, Debug_Signal_1_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(Frontend_Out_GPIO_Port, Frontend_Out_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : PEPin PEPin PEPin PEPin */
GPIO_InitStruct.Pin = Loop_Enable_Pin|Loop_Disable_Pin|LED_Green_Pin|LED_Red_Pin;
/*Configure GPIO pins : PEPin PEPin PEPin PEPin
PEPin */
GPIO_InitStruct.Pin = Loop_Enable_Pin|Loop_Disable_Pin|LED_Green_Pin|LED_Red_Pin
|Debug_Signal_2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
@ -72,11 +75,11 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(Loop_Status_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = Debug_Signal_Pin;
GPIO_InitStruct.Pin = Debug_Signal_1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(Debug_Signal_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_Init(Debug_Signal_1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = Frontend_Out_Pin;

View File

@ -148,14 +148,14 @@ void SystemClock_Config(void)
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();

View File

@ -139,14 +139,14 @@ void SystemClock_Config(void)
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();

View File

@ -1,6 +1,6 @@
# Processed by ../tools/insertMyCode.sh
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Sat Oct 31 23:48:06 CET 2020]
# File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Sun Nov 01 12:58:19 CET 2020]
##########################################################################################################################
# ------------------------------------------------

View File

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Sat Oct 31 23:48:06 CET 2020]
# File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Sun Nov 01 12:58:19 CET 2020]
##########################################################################################################################
# ------------------------------------------------

View File

@ -9,22 +9,12 @@
static const double SHUNT_RESISTOR = 20.0;
static const double U_REF = 3.3;
static const double I_THRESHOLD = 0.005;
static const uint16_t N_MAX = 4095;
static volatile uint16_t frontendAdcThreshold = 0;
static volatile bool frontendEnabled = false;
void frontendInit() {
// double u_threshold = I_THRESHOLD * SHUNT_RESISTOR;
// frontendAdcThreshold = (uint16_t) (u_threshold / U_REF * ((double) N_MAX));
// logMsg("frontendInit, threshold calculated: %d", frontendAdcThreshold);
HAL_ADCEx_Calibration_Start(&frontendAdc);
logMsg("frontendInit, calibration done");
HAL_ADC_Start_IT(&frontendAdc);
@ -44,7 +34,10 @@ void frontendDisable() {
}
void frontendAdcCallback(ADC_HandleTypeDef* hadc) {
uint16_t rawValue = HAL_ADC_GetValue(hadc);
HAL_GPIO_TogglePin(Debug_Signal_GPIO_Port, Debug_Signal_Pin);
HAL_GPIO_TogglePin(Debug_Signal_1_GPIO_Port, Debug_Signal_1_Pin);
uint32_t rawValue = HAL_ADC_GetValue(hadc);
if (rawValue > frontendAdcThreshold) {
HAL_GPIO_TogglePin(Frontend_Out_GPIO_Port, Frontend_Out_Pin);
}
}

View File

@ -43,6 +43,9 @@ void my_setup_2() {
}
void my_loop() {
HAL_GPIO_TogglePin(Debug_Signal_2_GPIO_Port, Debug_Signal_2_Pin);
schExec();
logExec();
}

View File

@ -1,11 +1,38 @@
#MicroXplorer Configuration settings - do not modify
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-5\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-6\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-7\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-8\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.Channel-9\#ChannelRegularConversion=ADC_CHANNEL_1
ADC1.ContinuousConvMode=ENABLE
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,NbrOfConversion
ADC1.NbrOfConversion=1
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,NbrOfConversion,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,Rank-5\#ChannelRegularConversion,Channel-5\#ChannelRegularConversion,SamplingTime-5\#ChannelRegularConversion,Rank-6\#ChannelRegularConversion,Channel-6\#ChannelRegularConversion,SamplingTime-6\#ChannelRegularConversion,Rank-7\#ChannelRegularConversion,Channel-7\#ChannelRegularConversion,SamplingTime-7\#ChannelRegularConversion,Rank-8\#ChannelRegularConversion,Channel-8\#ChannelRegularConversion,SamplingTime-8\#ChannelRegularConversion,Rank-9\#ChannelRegularConversion,Channel-9\#ChannelRegularConversion,SamplingTime-9\#ChannelRegularConversion
ADC1.NbrOfConversion=10
ADC1.NbrOfConversionFlag=1
ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.Rank-1\#ChannelRegularConversion=2
ADC1.Rank-2\#ChannelRegularConversion=3
ADC1.Rank-3\#ChannelRegularConversion=4
ADC1.Rank-4\#ChannelRegularConversion=5
ADC1.Rank-5\#ChannelRegularConversion=6
ADC1.Rank-6\#ChannelRegularConversion=7
ADC1.Rank-7\#ChannelRegularConversion=8
ADC1.Rank-8\#ChannelRegularConversion=9
ADC1.Rank-9\#ChannelRegularConversion=10
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-5\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-6\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-7\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-8\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-9\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.master=1
File.Version=6
GPIO.groupedBy=Group By Peripherals
@ -24,28 +51,29 @@ Mcu.Name=STM32F103V(C-D-E)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
Mcu.Pin1=PE3
Mcu.Pin10=PB14
Mcu.Pin11=PB15
Mcu.Pin12=PA13
Mcu.Pin13=PA14
Mcu.Pin14=PC10
Mcu.Pin15=PC11
Mcu.Pin16=PC12
Mcu.Pin17=PD1
Mcu.Pin18=PD2
Mcu.Pin19=PB3
Mcu.Pin10=PB13
Mcu.Pin11=PB14
Mcu.Pin12=PB15
Mcu.Pin13=PA13
Mcu.Pin14=PA14
Mcu.Pin15=PC10
Mcu.Pin16=PC11
Mcu.Pin17=PC12
Mcu.Pin18=PD1
Mcu.Pin19=PD2
Mcu.Pin2=PE4
Mcu.Pin20=PB4
Mcu.Pin21=PB5
Mcu.Pin22=VP_SYS_VS_Systick
Mcu.Pin20=PB3
Mcu.Pin21=PB4
Mcu.Pin22=PB5
Mcu.Pin23=VP_SYS_VS_Systick
Mcu.Pin3=PE5
Mcu.Pin4=PE6
Mcu.Pin5=OSC_IN
Mcu.Pin6=OSC_OUT
Mcu.Pin7=PA1
Mcu.Pin8=PB10
Mcu.Pin9=PB13
Mcu.PinsNb=23
Mcu.Pin8=PE12
Mcu.Pin9=PB10
Mcu.PinsNb=24
Mcu.ThirdPartyNb=0
Mcu.UserConstants=debugUart,huart4;mbusUart,huart5;frontendAdc,hadc1
Mcu.UserName=STM32F103VCTx
@ -78,7 +106,7 @@ PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
PB10.GPIOParameters=GPIO_Label
PB10.GPIO_Label=Debug_Signal
PB10.GPIO_Label=Debug_Signal_1
PB10.Locked=true
PB10.Signal=GPIO_Output
PB13.Mode=Full_Duplex_Master
@ -113,6 +141,10 @@ PD2.GPIOParameters=GPIO_Label
PD2.GPIO_Label=MBus_RX
PD2.Mode=Asynchronous
PD2.Signal=UART5_RX
PE12.GPIOParameters=GPIO_Label
PE12.GPIO_Label=Debug_Signal_2
PE12.Locked=true
PE12.Signal=GPIO_Output
PE2.GPIOParameters=GPIO_Label
PE2.GPIO_Label=Loop_Enable
PE2.Locked=true
@ -164,13 +196,14 @@ ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_SPI3_Init-SPI3-false-HAL-true,6-MX_UART4_Init-UART4-false-HAL-true,7-MX_UART5_Init-UART5-false-HAL-true
RCC.ADCFreqValue=12000000
RCC.ADCPresc=RCC_ADCPCLK2_DIV6
RCC.ADCFreqValue=4500000
RCC.ADCPresc=RCC_ADCPCLK2_DIV8
RCC.AHBFreq_Value=72000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
RCC.APB1Freq_Value=36000000
RCC.APB1TimFreq_Value=72000000
RCC.APB2Freq_Value=72000000
RCC.APB2CLKDivider=RCC_HCLK_DIV2
RCC.APB2Freq_Value=36000000
RCC.APB2TimFreq_Value=72000000
RCC.FCLKCortexFreq_Value=72000000
RCC.FSMCFreq_Value=72000000
@ -178,7 +211,7 @@ RCC.FamilyName=M
RCC.HCLKFreq_Value=72000000
RCC.I2S2Freq_Value=72000000
RCC.I2S3Freq_Value=72000000
RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FSMCFreq_Value,FamilyName,HCLKFreq_Value,I2S2Freq_Value,I2S3Freq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SDIOFreq_Value,SDIOHCLKDiv2FreqValue,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value
RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FSMCFreq_Value,FamilyName,HCLKFreq_Value,I2S2Freq_Value,I2S3Freq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SDIOFreq_Value,SDIOHCLKDiv2FreqValue,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value
RCC.MCOFreq_Value=72000000
RCC.PLLCLKFreq_Value=72000000
RCC.PLLMCOFreq_Value=36000000