TIM3 и TIM8 поменяты местами
плюс по мелочи: - полряность каналов - симуляция тока для отладки без тока на АЦП - регулируемый запас на максимальнйы угол
This commit is contained in:
parent
0e950148c5
commit
2b22c5b0eb
@ -88,6 +88,7 @@ set code_PERIPH=.\MCU_STM32_Matlab\stm32_matlab_conf.c^
|
|||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c^
|
||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c^
|
||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c^
|
||||||
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c^
|
||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c^
|
||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c^
|
||||||
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c^
|
.\MCU_STM32_Matlab\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c^
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
#include "app_wrapper.h"
|
#include "app_wrapper.h"
|
||||||
|
|
||||||
float dbg[16];
|
float dbg[16];
|
||||||
extern float iref_dbg;
|
extern float dbg_iref;
|
||||||
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
|
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
|
||||||
|
|
||||||
void Write_UPP_Outputs(real_T* Buffer, int ind_port)
|
void Write_UPP_Outputs(real_T* Buffer, int ind_port)
|
||||||
@ -115,7 +115,7 @@ void app_readInputs(const real_T* Buffer) {
|
|||||||
ADC_Set_Channel_Value(ADC3, 8, ReadInputArray(0,4));
|
ADC_Set_Channel_Value(ADC3, 8, ReadInputArray(0,4));
|
||||||
ADC_Set_Channel_Value(ADC3, 10, ReadInputArray(0,5));
|
ADC_Set_Channel_Value(ADC3, 10, ReadInputArray(0,5));
|
||||||
|
|
||||||
iref_dbg = ReadInputArray(1, 0);
|
dbg_iref = ReadInputArray(1, 0);
|
||||||
upp.call->go = ReadInputArray(1, 1);
|
upp.call->go = ReadInputArray(1, 1);
|
||||||
|
|
||||||
MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(1, 2)*65535;
|
MB_INTERNAL.param.angle.Angle_Max = ReadInputArray(1, 2)*65535;
|
||||||
|
|||||||
@ -30,12 +30,13 @@
|
|||||||
#define TEMP_1 0
|
#define TEMP_1 0
|
||||||
#define TEMP_2 1
|
#define TEMP_2 1
|
||||||
|
|
||||||
|
#define UPP_SIMULATE_I ///< Симулировт токи а не брать с АЦП
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @addtogroup UPP_DEFAULT_PARAMS Default params for external flash
|
* @addtogroup UPP_DEFAULT_PARAMS Default params for external flash
|
||||||
* @ingroup UPP_CONFIG
|
* @ingroup UPP_CONFIG
|
||||||
* @brief Дефолтные параметры для внешней памяти. Они применятся по команде или по ошибке
|
* @brief Дефолтные параметры для внешней памяти. Они применятся по команде или по ошибке
|
||||||
|
* @details Префиксы
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -56,12 +57,12 @@
|
|||||||
#define NOM_I_A_DEFAULT 5
|
#define NOM_I_A_DEFAULT 5
|
||||||
|
|
||||||
/* Параметры ПУИ */
|
/* Параметры ПУИ */
|
||||||
#define PUI_Iref_PERCENT_DEFAULT 150
|
#define PUI_Iref_PERCENT_DEFAULT 1.5
|
||||||
#define PUI_Tnt_MS_DEFAULT 300
|
#define PUI_Tnt_MS_DEFAULT 300
|
||||||
#define PUI_Umin_PERCENT_DEFAULT 80
|
#define PUI_Umin_PERCENT_DEFAULT 0.8
|
||||||
#define PUI_Umax_PERCENT_DEFAULT 120
|
#define PUI_Umax_PERCENT_DEFAULT 1.2
|
||||||
#define PUI_Imax_PERCENT_DEFAULT 99
|
#define PUI_Imax_PERCENT_DEFAULT 0.99
|
||||||
#define PUI_Imin_PERCENT_DEFAULT 7
|
#define PUI_Imin_PERCENT_DEFAULT 0.07
|
||||||
#define PUI_TiMax_US_DEFAULT 5000
|
#define PUI_TiMax_US_DEFAULT 5000
|
||||||
#define PUI_Tdelay_SECONDS_DEFAULT 30
|
#define PUI_Tdelay_SECONDS_DEFAULT 30
|
||||||
#define PUI_Interlace_EN_DEFAULT 5000
|
#define PUI_Interlace_EN_DEFAULT 5000
|
||||||
@ -73,12 +74,13 @@
|
|||||||
|
|
||||||
|
|
||||||
/* Параметры регулятора угла */
|
/* Параметры регулятора угла */
|
||||||
|
#define ANGLE_PULSE_LENGTH_RESERVE_PERCENT_DEFAULT 1.0
|
||||||
#define ANGLE_MAX_PERCENT_DEFAULT 0.8
|
#define ANGLE_MAX_PERCENT_DEFAULT 0.8
|
||||||
#define ANGLE_MIN_PERCENT_DEFAULT 0.1
|
#define ANGLE_MIN_PERCENT_DEFAULT 0.1
|
||||||
#define ANGLE_PID_KP_COEF_DEFAULT 1.0
|
#define ANGLE_PID_KP_COEF_DEFAULT 1.0
|
||||||
#define ANGLE_PID_KI_COEF_DEFAULT 0.1
|
#define ANGLE_PID_KI_COEF_DEFAULT 0.1
|
||||||
#define ANGLE_PID_KD_COEF_DEFAULT 0
|
#define ANGLE_PID_KD_COEF_DEFAULT 0
|
||||||
#define ANGLE_REF_ALPHA_COEF_DEFAULT 0.01
|
#define ANGLE_REF_ALPHA_COEF_DEFAULT 0.0001
|
||||||
|
|
||||||
/* Параметри мониторинга сети */
|
/* Параметри мониторинга сети */
|
||||||
#define PM_EXP_ALPHA_COEF_DEFAULT 0.01
|
#define PM_EXP_ALPHA_COEF_DEFAULT 0.01
|
||||||
@ -115,6 +117,7 @@
|
|||||||
#define PM_TEMP_SLOW_PERIOD_CNT 200 ///< Период обновления датчиков температуры в тиках @ref PM_SLOW_PERIOD_CNT
|
#define PM_TEMP_SLOW_PERIOD_CNT 200 ///< Период обновления датчиков температуры в тиках @ref PM_SLOW_PERIOD_CNT
|
||||||
#define PM_F_SLOW_PERIOD_CNT 2000 ///< Период обновления частоты в тиках @ref PM_SLOW_PERIOD_CNT
|
#define PM_F_SLOW_PERIOD_CNT 2000 ///< Период обновления частоты в тиках @ref PM_SLOW_PERIOD_CNT
|
||||||
|
|
||||||
|
#define UPP_SLOW_TICKS_FOR_INIT 20000 ///< Сколько тиков ждать медленных измерений ждать перед переходом в готовность
|
||||||
|
|
||||||
/* Частоты таймеров в МГц*/
|
/* Частоты таймеров в МГц*/
|
||||||
#define US_TIM5_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (1-4 каналы)
|
#define US_TIM5_FREQ_MHZ 90 ///< Частота тиков таймера ШИМ (1-4 каналы)
|
||||||
|
|||||||
@ -104,7 +104,7 @@ HAL_StatusTypeDef ADC_Start(ADC_Periodic_t *adc, float PeriodUs)
|
|||||||
HAL_TIM_Base_Stop(adc->htim);
|
HAL_TIM_Base_Stop(adc->htim);
|
||||||
|
|
||||||
// Запускаем таймер который будет запускать опрос АЦП с заданным периодом
|
// Запускаем таймер который будет запускать опрос АЦП с заданным периодом
|
||||||
__HAL_TIM_SET_AUTORELOAD(adc->htim, TIM_MicrosToTick(PeriodUs, ADC_TIM8_FREQ_MZH-1));
|
__HAL_TIM_SET_AUTORELOAD_FORCE(adc->htim, TIM_MicrosToTick(PeriodUs, ADC_TIM4_FREQ_MZH-1));
|
||||||
|
|
||||||
res = HAL_TIM_Base_Start(adc->htim);
|
res = HAL_TIM_Base_Start(adc->htim);
|
||||||
if(res != HAL_OK)
|
if(res != HAL_OK)
|
||||||
|
|||||||
@ -99,7 +99,7 @@ HAL_StatusTypeDef PowerMonitor_Init(PowerMonitor_t *hpm)
|
|||||||
if(FilterAverage_Init(&hpm->avg[AVG_FBA+i], PM_F_SLOW_PERIOD_CNT, FILTER_MODE_DEFAULT))
|
if(FilterAverage_Init(&hpm->avg[AVG_FBA+i], PM_F_SLOW_PERIOD_CNT, FILTER_MODE_DEFAULT))
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
|
|
||||||
Filter_Start(&hpm->avg[AVG_FBA+i]);
|
Filter_Start(&hpm->avg[ADC_TEMP_CHANNELS_START+i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
|||||||
@ -294,6 +294,29 @@ HAL_StatusTypeDef PWM_SetHalfWave(PWM_Handle_t *hpwm, UPP_Phase_t Phase, UPP_Hal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Установка полярности шим.
|
||||||
|
* @param hpwm Указатель на хендл ШИМ тиристоров
|
||||||
|
* @param polarity Какая полярность: состяоние бита CCxP
|
||||||
|
* @return HAL Status.
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef PWM_SetPolarity(PWM_Handle_t *hpwm, int polarity)
|
||||||
|
{
|
||||||
|
if(assert_upp(hpwm))
|
||||||
|
return HAL_ERROR;
|
||||||
|
|
||||||
|
if(polarity)
|
||||||
|
{
|
||||||
|
hpwm1.Instance->CCER |= TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P;
|
||||||
|
hpwm2.Instance->CCER |= TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hpwm1.Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P);
|
||||||
|
hpwm2.Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P | TIM_CCER_CC3P | TIM_CCER_CC4P);
|
||||||
|
}
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Установка режима для канала ШИМ.
|
* @brief Установка режима для канала ШИМ.
|
||||||
* @param hpwm Указатель на хендл ШИМ тиристоров
|
* @param hpwm Указатель на хендл ШИМ тиристоров
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#define PWM_ENABLE TIM_OCMODE_PWM2
|
#define PWM_ENABLE TIM_OCMODE_PWM2
|
||||||
#define PWM_DISABLE TIM_OCMODE_FORCED_INACTIVE
|
#define PWM_DISABLE TIM_OCMODE_FORCED_ACTIVE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +99,8 @@ HAL_StatusTypeDef PWM_Stop(PWM_Handle_t *hpwm, UPP_Phase_t Phase, uint8_t force_
|
|||||||
HAL_StatusTypeDef PWM_SetConfig(PWM_Handle_t *hpwm, uint8_t PhaseMask, uint16_t Frequency, uint8_t PulseNumber);
|
HAL_StatusTypeDef PWM_SetConfig(PWM_Handle_t *hpwm, uint8_t PhaseMask, uint16_t Frequency, uint8_t PulseNumber);
|
||||||
/* Установка полуволны для слежения. */
|
/* Установка полуволны для слежения. */
|
||||||
HAL_StatusTypeDef PWM_SetHalfWave(PWM_Handle_t *hpwm, UPP_Phase_t Phase, UPP_HalfWave_t halfwave);
|
HAL_StatusTypeDef PWM_SetHalfWave(PWM_Handle_t *hpwm, UPP_Phase_t Phase, UPP_HalfWave_t halfwave);
|
||||||
|
/* Установка полярности шим. */
|
||||||
|
HAL_StatusTypeDef PWM_SetPolarity(PWM_Handle_t *hpwm, int polarity);
|
||||||
// ====== СЕРВИС ==========
|
// ====== СЕРВИС ==========
|
||||||
/* Хендл ШИМ тиристоров. */
|
/* Хендл ШИМ тиристоров. */
|
||||||
HAL_StatusTypeDef PWM_Handle(PWM_Handle_t *hpwm);
|
HAL_StatusTypeDef PWM_Handle(PWM_Handle_t *hpwm);
|
||||||
|
|||||||
@ -10,7 +10,8 @@
|
|||||||
#include "iwdg.h"
|
#include "iwdg.h"
|
||||||
|
|
||||||
UPP_t upp;
|
UPP_t upp;
|
||||||
float iref_dbg = 0;
|
float dbg_iref = 1;
|
||||||
|
int dbg_polarity = 1;
|
||||||
// ОСНОВНОЙ ЦИКЛ main.c
|
// ОСНОВНОЙ ЦИКЛ main.c
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,9 +75,12 @@ int UPP_PreWhile(void)
|
|||||||
*/
|
*/
|
||||||
int UPP_While(void)
|
int UPP_While(void)
|
||||||
{
|
{
|
||||||
|
PWM_SetPolarity(&upp.hpwm, dbg_polarity);
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
if(upp.pm.f.runSlow)
|
if(upp.pm.f.runSlow)
|
||||||
{
|
{
|
||||||
|
static uint32_t slow_cnt = 0;
|
||||||
|
|
||||||
HAL_IWDG_Refresh(&hiwdg);
|
HAL_IWDG_Refresh(&hiwdg);
|
||||||
BenchTime_Start(BT_SLOWCALC, angletim.Instance->CNT, HAL_MAX_DELAY);
|
BenchTime_Start(BT_SLOWCALC, angletim.Instance->CNT, HAL_MAX_DELAY);
|
||||||
|
|
||||||
@ -110,6 +114,14 @@ int UPP_While(void)
|
|||||||
// Автомат состояний УПП
|
// Автомат состояний УПП
|
||||||
switch(upp.workmode)
|
switch(upp.workmode)
|
||||||
{
|
{
|
||||||
|
/* Состояние инициализации */
|
||||||
|
case UPP_Not_Init:
|
||||||
|
if(slow_cnt > UPP_SLOW_TICKS_FOR_INIT)
|
||||||
|
{
|
||||||
|
upp.workmode = UPP_Ready;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* Состояние готовности */
|
/* Состояние готовности */
|
||||||
case UPP_Ready:
|
case UPP_Ready:
|
||||||
PWM_Stop(&upp.hpwm, 0, 1); // Останавливаем ВЕСЬ ШИМ
|
PWM_Stop(&upp.hpwm, 0, 1); // Останавливаем ВЕСЬ ШИМ
|
||||||
@ -137,9 +149,12 @@ int UPP_While(void)
|
|||||||
if (!upp.call->go)
|
if (!upp.call->go)
|
||||||
upp.workmode = UPP_Ready;
|
upp.workmode = UPP_Ready;
|
||||||
|
|
||||||
// Регулирование тиристоров
|
// Регулирование тиристоров
|
||||||
Angle_PID(&upp.hangle, iref_dbg, upp.pm.measured.final.Iamp);
|
#ifndef UPP_SIMULATE_I // берем с АЦП
|
||||||
|
Angle_PID(&upp.hangle, dbg_iref, upp.pm.measured.final.Iamp);
|
||||||
|
#else // симулируем
|
||||||
|
Angle_PID(&upp.hangle, dbg_iref, upp.hangle.Iref/2);
|
||||||
|
#endif
|
||||||
// если слишком долгий запуск
|
// если слишком долгий запуск
|
||||||
if((local_time() - upp.StartTick) > (upp.PUI.params->Tdelay*1000))
|
if((local_time() - upp.StartTick) > (upp.PUI.params->Tdelay*1000))
|
||||||
{
|
{
|
||||||
@ -166,7 +181,7 @@ int UPP_While(void)
|
|||||||
UPP_DO.Error(ENABLE);
|
UPP_DO.Error(ENABLE);
|
||||||
// Находимся до тех пор пока ошибки не будет устранена
|
// Находимся до тех пор пока ошибки не будет устранена
|
||||||
if(errors.common == Err_None)
|
if(errors.common == Err_None)
|
||||||
upp.workmode = UPP_Ready;
|
upp.workmode = UPP_Not_Init;
|
||||||
|
|
||||||
retval = 1;
|
retval = 1;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -20,6 +20,7 @@ static void __AngleSetLimit(void);
|
|||||||
*/
|
*/
|
||||||
void UPP_Params_InternalControl(void)
|
void UPP_Params_InternalControl(void)
|
||||||
{
|
{
|
||||||
|
__AngleSetLimit();
|
||||||
if(upp.call->go) // при запущеном УПП ничего не меняем
|
if(upp.call->go) // при запущеном УПП ничего не меняем
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -162,15 +163,11 @@ void UPP_Params_InternalControl(void)
|
|||||||
if(PWM_SetConfig(&upp.hpwm, pwm_phase_mask, pwm_freq, pwm_pulse_num) == HAL_OK)
|
if(PWM_SetConfig(&upp.hpwm, pwm_phase_mask, pwm_freq, pwm_pulse_num) == HAL_OK)
|
||||||
{
|
{
|
||||||
pwm_update = 0;
|
pwm_update = 0;
|
||||||
__AngleSetLimit();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ERR_PRIVATE_CNT.pwm_reinit_err++;
|
ERR_PRIVATE_CNT.pwm_reinit_err++;
|
||||||
}
|
}
|
||||||
if ((upp.hangle.Config.PeriodLimit == 0) || (upp.hangle.Config.PeriodLimit >= 0.999))
|
|
||||||
{
|
|
||||||
__AngleSetLimit();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -184,12 +181,12 @@ void UPP_SetDefault(int pui_default, int internal_default)
|
|||||||
{
|
{
|
||||||
if(pui_default)
|
if(pui_default)
|
||||||
{
|
{
|
||||||
PARAM_PUI.Iref = PUI_Iref_PERCENT_DEFAULT;
|
PARAM_PUI.Iref = PUI_Iref_PERCENT_DEFAULT*100;
|
||||||
PARAM_PUI.Tnt = PUI_Tnt_MS_DEFAULT;
|
PARAM_PUI.Tnt = PUI_Tnt_MS_DEFAULT;
|
||||||
PARAM_PUI.Umin = PUI_Umin_PERCENT_DEFAULT;
|
PARAM_PUI.Umin = PUI_Umin_PERCENT_DEFAULT*100;
|
||||||
PARAM_PUI.Umax = PUI_Umax_PERCENT_DEFAULT;
|
PARAM_PUI.Umax = PUI_Umax_PERCENT_DEFAULT*100;
|
||||||
PARAM_PUI.Imax = PUI_Imax_PERCENT_DEFAULT;
|
PARAM_PUI.Imax = PUI_Imax_PERCENT_DEFAULT*100;
|
||||||
PARAM_PUI.Imin = PUI_Imin_PERCENT_DEFAULT;
|
PARAM_PUI.Imin = PUI_Imin_PERCENT_DEFAULT*100;
|
||||||
PARAM_PUI.TiMax = PUI_TiMax_US_DEFAULT;
|
PARAM_PUI.TiMax = PUI_TiMax_US_DEFAULT;
|
||||||
PARAM_PUI.Tdelay = PUI_Tdelay_SECONDS_DEFAULT;
|
PARAM_PUI.Tdelay = PUI_Tdelay_SECONDS_DEFAULT;
|
||||||
PARAM_PUI.Interlace = PUI_Interlace_EN_DEFAULT;
|
PARAM_PUI.Interlace = PUI_Interlace_EN_DEFAULT;
|
||||||
@ -234,6 +231,7 @@ void UPP_SetDefault(int pui_default, int internal_default)
|
|||||||
PARAM_INTERNAL.angle.PID_ExpAlpha = ANGLE_REF_ALPHA_COEF_DEFAULT*65535;
|
PARAM_INTERNAL.angle.PID_ExpAlpha = ANGLE_REF_ALPHA_COEF_DEFAULT*65535;
|
||||||
PARAM_INTERNAL.angle.Angle_Max = ANGLE_MAX_PERCENT_DEFAULT*65535;
|
PARAM_INTERNAL.angle.Angle_Max = ANGLE_MAX_PERCENT_DEFAULT*65535;
|
||||||
PARAM_INTERNAL.angle.Angle_Min = ANGLE_MIN_PERCENT_DEFAULT*65535;
|
PARAM_INTERNAL.angle.Angle_Min = ANGLE_MIN_PERCENT_DEFAULT*65535;
|
||||||
|
PARAM_INTERNAL.angle.PulseLengthReserve = ANGLE_PULSE_LENGTH_RESERVE_PERCENT_DEFAULT*100;
|
||||||
//__AngleSetLimit();
|
//__AngleSetLimit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -243,9 +241,10 @@ void UPP_SetDefault(int pui_default, int internal_default)
|
|||||||
// Перерасчет максимально допустимого угла
|
// Перерасчет максимально допустимого угла
|
||||||
static void __AngleSetLimit(void)
|
static void __AngleSetLimit(void)
|
||||||
{ // Сколько пачка ипульсов занимает процентов от всего периода
|
{ // Сколько пачка ипульсов занимает процентов от всего периода
|
||||||
float pulses_percent_of_period = (((float)PARAM_INTERNAL.pwm.PulseNumber / PARAM_INTERNAL.pwm.Frequency) * 1000) / ANGLE_PERIOD_MS(NOM_F_HZ_DEFAULT);
|
float pulses_percent_of_period = (((float)PARAM_INTERNAL.pwm.PulseNumber / PARAM_INTERNAL.pwm.Frequency) * 1000) / ANGLE_PERIOD_MS(upp.pm.measured.final.Fmean);
|
||||||
// Вычитаем этот процент из 1 - получаем максимально безопасный угол
|
// Вычитаем этот процент из 1 - получаем максимально безопасный угол
|
||||||
float angle_limit = 1 - pulses_percent_of_period*1.5; // добавляем запас в половину пачки импульсов
|
float angle_limit = 1 - pulses_percent_of_period;
|
||||||
|
angle_limit -= pulses_percent_of_period*to_float(PARAM_INTERNAL.angle.PulseLengthReserve, 100); // добавляем запас в PulseLengthReserve процентов от пачки импульсов
|
||||||
Angle_SetLimit(&upp.hangle, angle_limit);
|
Angle_SetLimit(&upp.hangle, angle_limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -80,6 +80,8 @@ typedef struct
|
|||||||
/* Параметры Угла */
|
/* Параметры Угла */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
uint16_t PulseLengthReserve;/*!< @brief Сколько запаса закладывать на длительность пачки импульсов [Проценты] @ref __AngleSetLimit
|
||||||
|
@details Пример: 100% - будет запас в одну пачку импульсов */
|
||||||
uint16_t Angle_Max; ///< Максимальный угол открытия тиристора [0..1 x 65535]
|
uint16_t Angle_Max; ///< Максимальный угол открытия тиристора [0..1 x 65535]
|
||||||
uint16_t Angle_Min; ///< Минимальный угол открытия тиристора [0..1 x 65535]
|
uint16_t Angle_Min; ///< Минимальный угол открытия тиристора [0..1 x 65535]
|
||||||
uint16_t PID_Kp; ///< Пропорциональный коэфициент ПИ регулятора угла [x 10000]
|
uint16_t PID_Kp; ///< Пропорциональный коэфициент ПИ регулятора угла [x 10000]
|
||||||
|
|||||||
@ -363,52 +363,52 @@
|
|||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>upp,0x0A</ItemText>
|
<ItemText>upp.call,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>1</count>
|
<count>1</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>uwTick,0x0A</ItemText>
|
<ItemText>upp</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>2</count>
|
<count>2</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>errors.prvt.f.err,0x0A</ItemText>
|
<ItemText>uwTick</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>3</count>
|
<count>3</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>errors.prvt.cnt,0x0A</ItemText>
|
<ItemText>errors.prvt.f.err</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>4</count>
|
<count>4</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>hbt,0x0A</ItemText>
|
<ItemText>errors.prvt.cnt</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>5</count>
|
<count>5</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>htim5.Instance->CNT,0x0A</ItemText>
|
<ItemText>hbt</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>6</count>
|
<count>6</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>htim5.Instance->PSC,0x0A</ItemText>
|
<ItemText>sysclockfreq,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>7</count>
|
<count>7</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>SystemCoreClock,0x0A</ItemText>
|
<ItemText>\\Debug_F417\../Core/UPP/upp_main.c\upp.pm.avg[5].dataProcessing</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>8</count>
|
<count>8</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>sysclockfreq,0x0A</ItemText>
|
<ItemText>dbg_polarity,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>9</count>
|
<count>9</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>\\Debug_F417\../Core/UPP/upp_main.c\upp.pm.avg[5].dataProcessing</ItemText>
|
<ItemText>dbg_iref</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<WatchWindow2>
|
<WatchWindow2>
|
||||||
|
|||||||
105
UPP/UPP.ioc
105
UPP/UPP.ioc
@ -7,7 +7,7 @@ ADC3.Channel-19\#ChannelRegularConversion=ADC_CHANNEL_8
|
|||||||
ADC3.Channel-20\#ChannelRegularConversion=ADC_CHANNEL_10
|
ADC3.Channel-20\#ChannelRegularConversion=ADC_CHANNEL_10
|
||||||
ADC3.DMAContinuousRequests=ENABLE
|
ADC3.DMAContinuousRequests=ENABLE
|
||||||
ADC3.EOCSelection=ADC_EOC_SEQ_CONV
|
ADC3.EOCSelection=ADC_EOC_SEQ_CONV
|
||||||
ADC3.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T8_TRGO
|
ADC3.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T3_TRGO
|
||||||
ADC3.IPParameters=Rank-15\#ChannelRegularConversion,Channel-15\#ChannelRegularConversion,SamplingTime-15\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,ScanConvMode,Rank-16\#ChannelRegularConversion,Channel-16\#ChannelRegularConversion,SamplingTime-16\#ChannelRegularConversion,Rank-17\#ChannelRegularConversion,Channel-17\#ChannelRegularConversion,SamplingTime-17\#ChannelRegularConversion,Rank-18\#ChannelRegularConversion,Channel-18\#ChannelRegularConversion,SamplingTime-18\#ChannelRegularConversion,Rank-19\#ChannelRegularConversion,Channel-19\#ChannelRegularConversion,SamplingTime-19\#ChannelRegularConversion,Rank-20\#ChannelRegularConversion,Channel-20\#ChannelRegularConversion,SamplingTime-20\#ChannelRegularConversion,ExternalTrigConv,EOCSelection,DMAContinuousRequests
|
ADC3.IPParameters=Rank-15\#ChannelRegularConversion,Channel-15\#ChannelRegularConversion,SamplingTime-15\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,ScanConvMode,Rank-16\#ChannelRegularConversion,Channel-16\#ChannelRegularConversion,SamplingTime-16\#ChannelRegularConversion,Rank-17\#ChannelRegularConversion,Channel-17\#ChannelRegularConversion,SamplingTime-17\#ChannelRegularConversion,Rank-18\#ChannelRegularConversion,Channel-18\#ChannelRegularConversion,SamplingTime-18\#ChannelRegularConversion,Rank-19\#ChannelRegularConversion,Channel-19\#ChannelRegularConversion,SamplingTime-19\#ChannelRegularConversion,Rank-20\#ChannelRegularConversion,Channel-20\#ChannelRegularConversion,SamplingTime-20\#ChannelRegularConversion,ExternalTrigConv,EOCSelection,DMAContinuousRequests
|
||||||
ADC3.NbrOfConversion=6
|
ADC3.NbrOfConversion=6
|
||||||
ADC3.NbrOfConversionFlag=1
|
ADC3.NbrOfConversionFlag=1
|
||||||
@ -94,25 +94,25 @@ Mcu.Pin23=PB11
|
|||||||
Mcu.Pin24=PB13
|
Mcu.Pin24=PB13
|
||||||
Mcu.Pin25=PG6
|
Mcu.Pin25=PG6
|
||||||
Mcu.Pin26=PC6
|
Mcu.Pin26=PC6
|
||||||
Mcu.Pin27=PC7
|
Mcu.Pin27=PC8
|
||||||
Mcu.Pin28=PC8
|
Mcu.Pin28=PC9
|
||||||
Mcu.Pin29=PC9
|
Mcu.Pin29=PA8
|
||||||
Mcu.Pin3=PE5
|
Mcu.Pin3=PE5
|
||||||
Mcu.Pin30=PA8
|
Mcu.Pin30=PA9
|
||||||
Mcu.Pin31=PA9
|
Mcu.Pin31=PA10
|
||||||
Mcu.Pin32=PA10
|
Mcu.Pin32=PA11
|
||||||
Mcu.Pin33=PA11
|
Mcu.Pin33=PA12
|
||||||
Mcu.Pin34=PA12
|
Mcu.Pin34=PA13
|
||||||
Mcu.Pin35=PA13
|
Mcu.Pin35=PA14
|
||||||
Mcu.Pin36=PA14
|
Mcu.Pin36=PA15
|
||||||
Mcu.Pin37=PA15
|
Mcu.Pin37=PC10
|
||||||
Mcu.Pin38=PC10
|
Mcu.Pin38=PC11
|
||||||
Mcu.Pin39=PC11
|
Mcu.Pin39=PC12
|
||||||
Mcu.Pin4=PE6
|
Mcu.Pin4=PE6
|
||||||
Mcu.Pin40=PC12
|
Mcu.Pin40=PD2
|
||||||
Mcu.Pin41=PD2
|
Mcu.Pin41=PD3
|
||||||
Mcu.Pin42=PD3
|
Mcu.Pin42=PD6
|
||||||
Mcu.Pin43=PD6
|
Mcu.Pin43=PG9
|
||||||
Mcu.Pin44=PG12
|
Mcu.Pin44=PG12
|
||||||
Mcu.Pin45=PG15
|
Mcu.Pin45=PG15
|
||||||
Mcu.Pin46=PB3
|
Mcu.Pin46=PB3
|
||||||
@ -133,18 +133,17 @@ Mcu.Pin59=VP_TIM2_VS_no_output1
|
|||||||
Mcu.Pin6=PC14/OSC32_IN
|
Mcu.Pin6=PC14/OSC32_IN
|
||||||
Mcu.Pin60=VP_TIM2_VS_no_output2
|
Mcu.Pin60=VP_TIM2_VS_no_output2
|
||||||
Mcu.Pin61=VP_TIM2_VS_no_output3
|
Mcu.Pin61=VP_TIM2_VS_no_output3
|
||||||
Mcu.Pin62=VP_TIM3_VS_ControllerModeTrigger
|
Mcu.Pin62=VP_TIM3_VS_ClockSourceINT
|
||||||
Mcu.Pin63=VP_TIM3_VS_ClockSourceINT
|
Mcu.Pin63=VP_TIM5_VS_ClockSourceINT
|
||||||
Mcu.Pin64=VP_TIM3_VS_ClockSourceITR
|
Mcu.Pin64=VP_TIM8_VS_ControllerModeTrigger
|
||||||
Mcu.Pin65=VP_TIM3_VS_OPM
|
Mcu.Pin65=VP_TIM8_VS_ClockSourceINT
|
||||||
Mcu.Pin66=VP_TIM5_VS_ClockSourceINT
|
Mcu.Pin66=VP_TIM8_VS_ClockSourceITR
|
||||||
Mcu.Pin67=VP_TIM8_VS_ClockSourceINT
|
Mcu.Pin67=VP_TIM11_VS_ClockSourceINT
|
||||||
Mcu.Pin68=VP_TIM11_VS_ClockSourceINT
|
Mcu.Pin68=VP_TIM12_VS_ClockSourceINT
|
||||||
Mcu.Pin69=VP_TIM12_VS_ClockSourceINT
|
|
||||||
Mcu.Pin7=PC15/OSC32_OUT
|
Mcu.Pin7=PC15/OSC32_OUT
|
||||||
Mcu.Pin8=PF6
|
Mcu.Pin8=PF6
|
||||||
Mcu.Pin9=PF7
|
Mcu.Pin9=PF7
|
||||||
Mcu.PinsNb=70
|
Mcu.PinsNb=69
|
||||||
Mcu.ThirdPartyNb=0
|
Mcu.ThirdPartyNb=0
|
||||||
Mcu.UserConstants=mb_huart,huart3;mbdbg_htim,htim11;PWM_CHANNEL_1,TIM_CHANNEL_1;PWM_CHANNEL_2,TIM_CHANNEL_2;PWM_CHANNEL_3,TIM_CHANNEL_3;PWM_CHANNEL_4,TIM_CHANNEL_4;mem_hspi,hspi3;PWM_CHANNEL_5,TIM_CHANNEL_3;PWM_CHANNEL_6,TIM_CHANNEL_4;mb_htim,htim12;adc_tim,htim8;usTick,ustim.Instance->CNT;hpwm2,htim3;mb_dbg_huart,huart6;ustim,htim5;hpwm1,htim1;ANGLE_CHANNEL_1,TIM_CHANNEL_1;ANGLE_CHANNEL_2,TIM_CHANNEL_2;ANGLE_CHANNEL_3,TIM_CHANNEL_3;angletim,htim2
|
Mcu.UserConstants=mb_huart,huart3;mbdbg_htim,htim11;PWM_CHANNEL_1,TIM_CHANNEL_1;PWM_CHANNEL_2,TIM_CHANNEL_2;PWM_CHANNEL_3,TIM_CHANNEL_3;PWM_CHANNEL_4,TIM_CHANNEL_4;mem_hspi,hspi3;PWM_CHANNEL_5,TIM_CHANNEL_3;PWM_CHANNEL_6,TIM_CHANNEL_4;mb_htim,htim12;adc_tim,htim8;usTick,ustim.Instance->CNT;hpwm2,htim3;mb_dbg_huart,huart6;ustim,htim5;hpwm1,htim1;ANGLE_CHANNEL_1,TIM_CHANNEL_1;ANGLE_CHANNEL_2,TIM_CHANNEL_2;ANGLE_CHANNEL_3,TIM_CHANNEL_3;angletim,htim2
|
||||||
Mcu.UserName=STM32F427ZGTx
|
Mcu.UserName=STM32F427ZGTx
|
||||||
@ -262,10 +261,7 @@ PC12.GPIOParameters=GPIO_Label
|
|||||||
PC12.GPIO_Label=UM_SPI_MOSI
|
PC12.GPIO_Label=UM_SPI_MOSI
|
||||||
PC12.Mode=Full_Duplex_Master
|
PC12.Mode=Full_Duplex_Master
|
||||||
PC12.Signal=SPI3_MOSI
|
PC12.Signal=SPI3_MOSI
|
||||||
PC13.GPIOParameters=PinState,GPIO_Label
|
|
||||||
PC13.GPIO_Label=DO3
|
|
||||||
PC13.Locked=true
|
PC13.Locked=true
|
||||||
PC13.PinState=GPIO_PIN_SET
|
|
||||||
PC13.Signal=GPIO_Output
|
PC13.Signal=GPIO_Output
|
||||||
PC14/OSC32_IN.Mode=LSE-External-Oscillator
|
PC14/OSC32_IN.Mode=LSE-External-Oscillator
|
||||||
PC14/OSC32_IN.Signal=RCC_OSC32_IN
|
PC14/OSC32_IN.Signal=RCC_OSC32_IN
|
||||||
@ -275,18 +271,12 @@ PC6.GPIOParameters=GPIO_Label
|
|||||||
PC6.GPIO_Label=SCIT1
|
PC6.GPIO_Label=SCIT1
|
||||||
PC6.Mode=Asynchronous
|
PC6.Mode=Asynchronous
|
||||||
PC6.Signal=USART6_TX
|
PC6.Signal=USART6_TX
|
||||||
PC7.GPIOParameters=GPIO_Label
|
|
||||||
PC7.GPIO_Label=SCIR2
|
|
||||||
PC7.Mode=Asynchronous
|
|
||||||
PC7.Signal=USART6_RX
|
|
||||||
PC8.GPIOParameters=GPIO_Label
|
PC8.GPIOParameters=GPIO_Label
|
||||||
PC8.GPIO_Label=PWM5
|
PC8.GPIO_Label=PWM5
|
||||||
PC8.Locked=true
|
PC8.Signal=S_TIM8_CH3
|
||||||
PC8.Signal=S_TIM3_CH3
|
|
||||||
PC9.GPIOParameters=GPIO_Label
|
PC9.GPIOParameters=GPIO_Label
|
||||||
PC9.GPIO_Label=PWM6
|
PC9.GPIO_Label=PWM6
|
||||||
PC9.Locked=true
|
PC9.Signal=S_TIM8_CH4
|
||||||
PC9.Signal=S_TIM3_CH4
|
|
||||||
PD2.GPIOParameters=GPIO_Label
|
PD2.GPIOParameters=GPIO_Label
|
||||||
PD2.GPIO_Label=DIN3
|
PD2.GPIO_Label=DIN3
|
||||||
PD2.Locked=true
|
PD2.Locked=true
|
||||||
@ -357,8 +347,6 @@ PF9.GPIOParameters=GPIO_Label
|
|||||||
PF9.GPIO_Label=AI_Ia
|
PF9.GPIO_Label=AI_Ia
|
||||||
PF9.Mode=IN7
|
PF9.Mode=IN7
|
||||||
PF9.Signal=ADC3_IN7
|
PF9.Signal=ADC3_IN7
|
||||||
PG12.GPIOParameters=GPIO_Label
|
|
||||||
PG12.GPIO_Label=ERR_24V
|
|
||||||
PG12.Locked=true
|
PG12.Locked=true
|
||||||
PG12.Signal=GPIO_Input
|
PG12.Signal=GPIO_Input
|
||||||
PG15.GPIOParameters=GPIO_Label
|
PG15.GPIOParameters=GPIO_Label
|
||||||
@ -370,6 +358,10 @@ PG6.GPIO_Label=UM_SPI_CS
|
|||||||
PG6.GPIO_PuPd=GPIO_PULLDOWN
|
PG6.GPIO_PuPd=GPIO_PULLDOWN
|
||||||
PG6.Locked=true
|
PG6.Locked=true
|
||||||
PG6.Signal=GPIO_Output
|
PG6.Signal=GPIO_Output
|
||||||
|
PG9.GPIOParameters=GPIO_Label
|
||||||
|
PG9.GPIO_Label=SCIR2
|
||||||
|
PG9.Mode=Asynchronous
|
||||||
|
PG9.Signal=USART6_RX
|
||||||
PH0/OSC_IN.Mode=HSE-External-Oscillator
|
PH0/OSC_IN.Mode=HSE-External-Oscillator
|
||||||
PH0/OSC_IN.Signal=RCC_OSC_IN
|
PH0/OSC_IN.Signal=RCC_OSC_IN
|
||||||
PH1/OSC_OUT.Mode=HSE-External-Oscillator
|
PH1/OSC_OUT.Mode=HSE-External-Oscillator
|
||||||
@ -460,10 +452,10 @@ SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
|
|||||||
SH.S_TIM1_CH3.ConfNb=1
|
SH.S_TIM1_CH3.ConfNb=1
|
||||||
SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4
|
SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4
|
||||||
SH.S_TIM1_CH4.ConfNb=1
|
SH.S_TIM1_CH4.ConfNb=1
|
||||||
SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3
|
SH.S_TIM8_CH3.0=TIM8_CH3,PWM Generation3 CH3
|
||||||
SH.S_TIM3_CH3.ConfNb=1
|
SH.S_TIM8_CH3.ConfNb=1
|
||||||
SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4
|
SH.S_TIM8_CH4.0=TIM8_CH4,PWM Generation4 CH4
|
||||||
SH.S_TIM3_CH4.ConfNb=1
|
SH.S_TIM8_CH4.ConfNb=1
|
||||||
SPI3.CalculateBaudRate=22.5 MBits/s
|
SPI3.CalculateBaudRate=22.5 MBits/s
|
||||||
SPI3.Direction=SPI_DIRECTION_2LINES
|
SPI3.Direction=SPI_DIRECTION_2LINES
|
||||||
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
|
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
|
||||||
@ -487,17 +479,18 @@ TIM2.IPParameters=Channel-Output Compare2 No Output,Channel-Output Compare1 No O
|
|||||||
TIM2.OCMode_1=TIM_OCMODE_TIMING
|
TIM2.OCMode_1=TIM_OCMODE_TIMING
|
||||||
TIM2.OCMode_2=TIM_OCMODE_TIMING
|
TIM2.OCMode_2=TIM_OCMODE_TIMING
|
||||||
TIM2.OCMode_3=TIM_OCMODE_TIMING
|
TIM2.OCMode_3=TIM_OCMODE_TIMING
|
||||||
TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
TIM3.IPParameters=TIM_MasterSlaveMode,TIM_MasterOutputTrigger
|
||||||
TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
TIM3.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
|
||||||
TIM3.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,TIM_MasterSlaveMode,TIM_MasterOutputTrigger
|
|
||||||
TIM3.TIM_MasterOutputTrigger=TIM_TRGO_RESET
|
|
||||||
TIM3.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_ENABLE
|
TIM3.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_ENABLE
|
||||||
TIM5.IPParameters=Prescaler
|
TIM5.IPParameters=Prescaler
|
||||||
TIM5.Prescaler=90-1
|
TIM5.Prescaler=90-1
|
||||||
TIM8.IPParameters=Prescaler,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger
|
TIM8.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||||
TIM8.Period=1800-1
|
TIM8.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
||||||
|
TIM8.IPParameters=Prescaler,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,OC4Preload_PWM
|
||||||
|
TIM8.OC4Preload_PWM=ENABLE
|
||||||
|
TIM8.Period=65535
|
||||||
TIM8.Prescaler=0
|
TIM8.Prescaler=0
|
||||||
TIM8.TIM_MasterOutputTrigger=TIM_TRGO_UPDATE
|
TIM8.TIM_MasterOutputTrigger=TIM_TRGO_RESET
|
||||||
TIM8.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
|
TIM8.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
|
||||||
USART3.IPParameters=VirtualMode
|
USART3.IPParameters=VirtualMode
|
||||||
USART3.VirtualMode=VM_ASYNC
|
USART3.VirtualMode=VM_ASYNC
|
||||||
@ -527,14 +520,12 @@ VP_TIM2_VS_no_output3.Mode=Output Compare3 No Output
|
|||||||
VP_TIM2_VS_no_output3.Signal=TIM2_VS_no_output3
|
VP_TIM2_VS_no_output3.Signal=TIM2_VS_no_output3
|
||||||
VP_TIM3_VS_ClockSourceINT.Mode=Internal
|
VP_TIM3_VS_ClockSourceINT.Mode=Internal
|
||||||
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
|
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
|
||||||
VP_TIM3_VS_ClockSourceITR.Mode=TriggerSource_ITR0
|
|
||||||
VP_TIM3_VS_ClockSourceITR.Signal=TIM3_VS_ClockSourceITR
|
|
||||||
VP_TIM3_VS_ControllerModeTrigger.Mode=Trigger Mode
|
|
||||||
VP_TIM3_VS_ControllerModeTrigger.Signal=TIM3_VS_ControllerModeTrigger
|
|
||||||
VP_TIM3_VS_OPM.Mode=OPM_bit
|
|
||||||
VP_TIM3_VS_OPM.Signal=TIM3_VS_OPM
|
|
||||||
VP_TIM5_VS_ClockSourceINT.Mode=Internal
|
VP_TIM5_VS_ClockSourceINT.Mode=Internal
|
||||||
VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT
|
VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT
|
||||||
VP_TIM8_VS_ClockSourceINT.Mode=Internal
|
VP_TIM8_VS_ClockSourceINT.Mode=Internal
|
||||||
VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
|
VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
|
||||||
|
VP_TIM8_VS_ClockSourceITR.Mode=TriggerSource_ITR0
|
||||||
|
VP_TIM8_VS_ClockSourceITR.Signal=TIM8_VS_ClockSourceITR
|
||||||
|
VP_TIM8_VS_ControllerModeTrigger.Mode=Trigger Mode
|
||||||
|
VP_TIM8_VS_ControllerModeTrigger.Signal=TIM8_VS_ControllerModeTrigger
|
||||||
board=custom
|
board=custom
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user