configured ADC sync signals at fastest possible frequency: 1.75 MHz

This commit is contained in:
2025-04-07 19:01:57 +03:00
parent 61bb0c41db
commit 5756dfe749
2 changed files with 42 additions and 6 deletions

View File

@ -171,8 +171,25 @@ int main(void)
MX_TIM4_Init();
/* USER CODE BEGIN 2 */
Init_params();
HAL_TIM_Base_Start(&htim11);
HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); //start modulating by Mach-Zander modulator
//HAL_TIM_Base_Start(&htim11);
//HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1); //start modulating by Mach-Zander modulator
//TIM4,11 clocks = 92 MHz
//ADC clock
//TIM4 -> ARR = 60; // for 1.5 MHz
//TIM4 -> ARR = 91; // for 1 MHz
//TIM4 -> ARR = 45; // for 2 MHz
TIM4 -> ARR = 53; // for 1.735 MHz. It`s the highest frequency for correct ADC work. At higher freq artifacts (voltage peaks) appears.
TIM4 -> CCR3 = (TIM4 -> ARR +1)/2 - 1;
//Mach-Zander clock (should be half of ADC clock freq)
TIM11 -> ARR = (TIM4 -> ARR +1)*2 - 1;
TIM11 -> CCR1 = (TIM11 -> ARR +1)/2 - 1;
/*
if (HAL_GPIO_ReadPin(INP_0_GPIO_Port, INP_0_Pin) == 0){
@ -363,6 +380,25 @@ int main(void)
switch (task.task_type)
{
case TT_CHANGE_CURR_1:
//calculating timer periods for ADC clock and Mach-Zander modulator
//ADC clock
//TIM4 -> ARR = 60; // for 1.5 MHz
//TIM4 -> ARR = 91; // for 1 MHz
//TIM4 -> ARR = 45; // for 2 MHz
//online calculation for debug purposes:
//manually varying TIM4 -> ARR by debugger while running
//TIM4 -> CCR3 = (TIM4 -> ARR +1)/2 - 1;
//Mach-Zander clock (should be half of ADC clock freq)
//TIM11 -> ARR = (TIM4 -> ARR +1)*2 - 1;
//TIM11 -> CCR1 = (TIM11 -> ARR +1)/2 - 1;
Set_LTEC(TT_CHANGE_CURR_2, task.curr);
(void) MPhD_T(TT_CHANGE_TEMP_1);
LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1);
@ -1472,9 +1508,9 @@ static void MX_TIM11_Init(void)
/* USER CODE END TIM11_Init 1 */
htim11.Instance = TIM11;
htim11.Init.Prescaler = 0;
htim11.Init.Prescaler = 1;
htim11.Init.CounterMode = TIM_COUNTERMODE_UP;
htim11.Init.Period = 183;
htim11.Init.Period = 91;
htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim11) != HAL_OK)