diff --git a/For_stm32.ioc b/For_stm32.ioc index 303897d..5d8daa6 100644 --- a/For_stm32.ioc +++ b/For_stm32.ioc @@ -594,8 +594,8 @@ TIM10.Prescaler=183 TIM11.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE TIM11.Channel=TIM_CHANNEL_1 TIM11.IPParameters=Prescaler,Period,AutoReloadPreload,Channel,Pulse -TIM11.Period=183 -TIM11.Prescaler=0 +TIM11.Period=91 +TIM11.Prescaler=1 TIM11.Pulse=91 TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV1 TIM2.IPParameters=Period,ClockDivision,Prescaler diff --git a/Src/main.c b/Src/main.c index b4060f7..a14cbda 100644 --- a/Src/main.c +++ b/Src/main.c @@ -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)