diff --git a/matlab_stm_emulate b/matlab_stm_emulate index 08719ff..c3d30fa 160000 --- a/matlab_stm_emulate +++ b/matlab_stm_emulate @@ -1 +1 @@ -Subproject commit 08719ffc055e27b3b22a9c37742add86ece43ea4 +Subproject commit c3d30fa6f13e7874019a9661fee66d4ccb1929b1 diff --git a/mcu_project/upp/Core/upp/tiristor.c b/mcu_project/upp/Core/upp/tiristor.c index ed39a60..44ab8c7 100644 --- a/mcu_project/upp/Core/upp/tiristor.c +++ b/mcu_project/upp/Core/upp/tiristor.c @@ -1,4 +1,3 @@ -#include "upp.h" #include "tiristor.h" // управление тиристором void tiristor_control(TiristorControl_t *ctrl) @@ -30,37 +29,49 @@ void tiristor_angle_update(TiristorAngleControl_t *angle) { uint32_t current_time_ms = HAL_GetTick(); - if ((current_time_ms - angle->last_update_ms) >= angle->sample_time_ms) + if ((current_time_ms - angle->last_update_ms) >= angle->Init->sample_time_ms) { angle->last_update_ms = current_time_ms; - if (angle->delay_us > angle->delay_min_us) + if(angle->Init->direction) + angle->delay_us += angle->Init->delay_step_us; + else + angle->delay_us -= angle->Init->delay_step_us; + + + if (angle->delay_us < angle->Init->delay_min_us) { - angle->delay_us -= angle->delay_step_us; - if (angle->delay_us < angle->delay_min_us) - angle->delay_us = angle->delay_min_us; + angle->delay_us = angle->Init->delay_min_us; + } + else if (angle->delay_us > angle->Init->delay_max_us) + { + angle->delay_us = angle->Init->delay_max_us; } } } + void tiristor_angle_control(TiristorControl_t *ctrl) { tiristor_angle_update(&ctrl->angle); - if ((uint16_t)((uint16_t)TIMER->CNT - ctrl->angle.start_delay_us) > ctrl->angle.delay_us) + if(ctrl->angle.delay_us != 0) { - if(ctrl->f.TiristorDone == 0) + if ((uint16_t)((uint16_t)TIMER->CNT - ctrl->angle.start_delay_tick) > ctrl->angle.delay_us) { - ctrl->f.EnableTiristor = 1; - ctrl->f.TiristorDone = 1; + if(ctrl->f.TiristorReady) + { + ctrl->f.EnableTiristor = 1; + ctrl->f.TiristorReady = 0; + } } } } void tiristor_start_angle_delay(TiristorControl_t *ctrl) { - ctrl->f.TiristorDone = 0; - ctrl->angle.start_delay_us = TIMER->CNT; + ctrl->f.TiristorReady = 1; + ctrl->angle.start_delay_tick = TIMER->CNT; } void tiristor_enable(TiristorControl_t *ctrl) @@ -77,15 +88,17 @@ void tiristor_disable(TiristorControl_t *ctrl) ctrl->f.TiristorIsEnable = 0; } +void tiristor_angle_reset(TiristorControl_t *ctrl) +{ + if(ctrl->angle.Init->direction) + ctrl->angle.delay_us = ctrl->angle.Init->delay_min_us; + else + ctrl->angle.delay_us = ctrl->angle.Init->delay_max_us; +} + void tiristor_init(TiristorControl_t *ctrl, GPIO_TypeDef *gpiox, uint32_t gpio_pin) { ctrl->gpiox = gpiox; ctrl->gpio_pin = gpio_pin; - ctrl->angle.delay_max_us = 8000; - ctrl->angle.delay_min_us = 100; - ctrl->angle.delay_us = 7000; - ctrl->angle.delay_step_us = 500; - ctrl->angle.sample_time_ms = 100; - ctrl->open_time = 1; - TIMER->CR1 |= TIM_CR1_CEN; + tiristor_angle_reset(ctrl); } \ No newline at end of file diff --git a/mcu_project/upp/Core/upp/tiristor.h b/mcu_project/upp/Core/upp/tiristor.h index 5893d46..e75f8a9 100644 --- a/mcu_project/upp/Core/upp/tiristor.h +++ b/mcu_project/upp/Core/upp/tiristor.h @@ -15,20 +15,24 @@ typedef struct { unsigned EnableTiristor:1; unsigned TiristorIsEnable:1; - unsigned TiristorDone:1; + unsigned TiristorReady:1; }TiristorControlFlags; - +typedef struct +{ +uint32_t delay_min_us; // Минимальная задержка (максимальное открытие тиристора) +uint32_t delay_max_us; // Начальная задержка (практически закрыт) +uint32_t delay_step_us; // Шаг уменьшения задержки +uint32_t sample_time_ms; // Интервал между шагами (например, 200 мс) +unsigned direction; // Направление разгон/торможение +}AngleInit_t; typedef struct { - uint32_t delay_us; // Текущая задержка (в микросекундах) - uint32_t delay_min_us; // Минимальная задержка (максимальное открытие тиристора) - uint32_t delay_max_us; // Начальная задержка (практически закрыт) - uint32_t delay_step_us; // Шаг уменьшения задержки + AngleInit_t *Init; + uint32_t last_update_ms; // Время последнего обновления - uint32_t sample_time_ms; // Интервал между шагами (например, 200 мс) - - uint16_t start_delay_us; + uint32_t delay_us; // Текущая задержка (в микросекундах) + uint16_t start_delay_tick; }TiristorAngleControl_t; typedef struct TiristorControl_t TiristorControl_t; @@ -48,6 +52,7 @@ void tiristor_control(TiristorControl_t *ctrl); void tiristor_angle_update(TiristorAngleControl_t *angle); void tiristor_angle_control(TiristorControl_t *ctrl); void tiristor_start_angle_delay(TiristorControl_t* ctrl); +void tiristor_angle_reset(TiristorControl_t *ctrl); void tiristor_enable(TiristorControl_t *ctrl); void tiristor_disable(TiristorControl_t *ctrl); void tiristor_init(TiristorControl_t *ctrl, GPIO_TypeDef *gpiox, uint32_t gpio_pin); diff --git a/mcu_project/upp/Core/upp/upp.c b/mcu_project/upp/Core/upp/upp.c index 39cf054..9bcc6a8 100644 --- a/mcu_project/upp/Core/upp/upp.c +++ b/mcu_project/upp/Core/upp/upp.c @@ -3,20 +3,184 @@ Phase_t phase_A; Phase_t phase_B; Phase_t phase_C; +UPP_Control_t Upp; // главная функция void upp_main(void) -{ - upp_phase_routine(&phase_A); - upp_phase_routine(&phase_B); - upp_phase_routine(&phase_C); +{ + if(GetAngleInit(&Upp.angleInit)) + { + tiristor_angle_reset(&phase_A.ctrl); + tiristor_angle_reset(&phase_B.ctrl); + tiristor_angle_reset(&phase_C.ctrl); + } - upp_phase_control(&phase_A); - upp_phase_control(&phase_B); - upp_phase_control(&phase_C); + // безопасный запуск + upp_safe_go(); + + // останавливаем УПП (убираем питание с выхода упп) если выставлен флаг + if(Upp.ForceStop) + { + Upp.Go = 0; + connect_upp(); + return; + } + + // отключаем упп если выставлен флаг + if(Upp.GoDisconnect) + { + disconnect_upp(); + } + // останавливаем упп если выставлен флаг + if(Upp.GoStop) + { + Upp.Go = 0; + connect_upp(); + } + + if(Upp.Prepare) + { + if(Upp.Disconnected) + { + connect_upp(); + } + upp_phase_routine(&phase_A); + upp_phase_routine(&phase_B); + upp_phase_routine(&phase_C); + } + if(Upp.Go) + { + if(Upp.Prepare) + { + if(phase_A.ctrl.f.TiristorReady && phase_B.ctrl.f.TiristorReady && phase_C.ctrl.f.TiristorReady) + { + Upp.Prepare = 0; + } + else + { + return; + } + } + if(Upp.Disconnected) + { + Upp.ForceStop = 1; + return; + } + + // если все фазы дошли до минимума в режиме разгона, то выставляем флаг на отключение упп (прямая подача питания на двигатель) + if( (phase_A.ctrl.angle.delay_us == phase_A.ctrl.angle.Init->delay_min_us) && + (phase_B.ctrl.angle.delay_us == phase_B.ctrl.angle.Init->delay_min_us) && + (phase_C.ctrl.angle.delay_us == phase_C.ctrl.angle.Init->delay_min_us) && (Upp.angleInit.direction == 0)) + { + Upp.GoDisconnect = 1; + } + else + { + Upp.GoDisconnect = 0; + } + + // если все фазы дошли до максимума в режиме торможения, то выставляем флаг на остановку упп (выключения питания на двигателе) + if( (phase_A.ctrl.angle.delay_us == phase_A.ctrl.angle.Init->delay_max_us) && + (phase_B.ctrl.angle.delay_us == phase_B.ctrl.angle.Init->delay_max_us) && + (phase_C.ctrl.angle.delay_us == phase_C.ctrl.angle.Init->delay_max_us) && (Upp.angleInit.direction == 1)) + { + Upp.GoStop = 1; + } + else + { + Upp.GoStop = 0; + } + + upp_phase_routine(&phase_A); + upp_phase_routine(&phase_B); + upp_phase_routine(&phase_C); + + upp_phase_control(&phase_A); + upp_phase_control(&phase_B); + upp_phase_control(&phase_C); + } + else + { + tiristor_angle_reset(&phase_A.ctrl); + tiristor_angle_reset(&phase_B.ctrl); + tiristor_angle_reset(&phase_C.ctrl); + } +} + +void upp_safe_go(void) +{ + static int prev_gosafe; + + + if(Upp.GoSafe > prev_gosafe) + { + Upp.angleInit.direction = 0; + Upp.ForceStop = 0; + Upp.Prepare = 1; + Upp.Go = 1; + tiristor_angle_reset(&phase_A.ctrl); + tiristor_angle_reset(&phase_B.ctrl); + tiristor_angle_reset(&phase_C.ctrl); + } + else if (Upp.GoSafe < prev_gosafe) + { + Upp.angleInit.direction = 1; + Upp.Prepare = 1; + Upp.Go = 1; + tiristor_angle_reset(&phase_A.ctrl); + tiristor_angle_reset(&phase_B.ctrl); + tiristor_angle_reset(&phase_C.ctrl); + } + + prev_gosafe = Upp.GoSafe; +} + +void disconnect_upp(void) +{ + if(phase_A.ctrl.f.TiristorReady) + { + disconnect_phase(&phase_A); + } + + if(phase_B.ctrl.f.TiristorReady) + { + disconnect_phase(&phase_B); + } + + if(phase_C.ctrl.f.TiristorReady) + { + disconnect_phase(&phase_C); + } + + if(phase_A.disconnect.Disconnected && phase_B.disconnect.Disconnected && phase_C.disconnect.Disconnected) + { + Upp.Disconnected = 1; + Upp.GoDisconnect = 0; + Upp.Go = 0; + } +} + +void connect_upp(void) +{ + tiristor_disable(&phase_A.ctrl); + tiristor_disable(&phase_B.ctrl); + tiristor_disable(&phase_C.ctrl); + + connect_phase(&phase_A); + connect_phase(&phase_B); + connect_phase(&phase_C); + + Upp.Disconnected = 0; } void upp_phase_control(Phase_t *phase) { + tiristor_angle_control(&phase->ctrl); + tiristor_control(&phase->ctrl); +} + +void upp_phase_routine(Phase_t *phase) +{ + zero_cross_update(&phase->zc_detector); if(is_zero_cross(&phase->zc_detector)) { tiristor_start_angle_delay(&phase->ctrl); @@ -26,19 +190,109 @@ void upp_phase_control(Phase_t *phase) } } -void upp_phase_routine(Phase_t *phase) + +int GetAngleInit(AngleInit_t *angle) { - tiristor_angle_control(&phase->ctrl); - tiristor_control(&phase->ctrl); - zero_cross_update(&phase->zc_detector); + static float sine_freq_old = 0; + static float Duration_old = 0; + static float max_duty_old = 0, min_duty_old = 0; // Задаются в процентах + int update = 0; + + + if( (Upp.sine_freq != sine_freq_old) && + (Upp.max_duty != max_duty_old) && + (Upp.min_duty != min_duty_old) ) + { + update = 1; + min_duty_old = Upp.min_duty; + max_duty_old = Upp.max_duty; + sine_freq_old = Upp.sine_freq; + + } + + if(Upp.Duration != Duration_old) + { + update = 1; + Duration_old = Upp.Duration; + } + + if(update) + { + // max/min duty + uint32_t half_period_us = (500000.0f / Upp.sine_freq) - 1000; // полупериод в мкс - время открытия тиристоры + + angle->delay_max_us = (uint32_t)(Upp.max_duty * half_period_us); + angle->delay_min_us = (uint32_t)(Upp.min_duty * half_period_us); + + if((angle->delay_max_us > 0xFFFF) || (angle->delay_min_us > 0xFFFF)) + { + // увеличение прескалера в 10 раз (с 1мкс до 10мкс, с 7Гц до 0.7Гц) + angle->delay_max_us /= 10; + angle->delay_min_us /= 10; + TIMER->PSC = 719; + + if((angle->delay_max_us > 0xFFFF) || (angle->delay_min_us > 0xFFFF)) + { + // увеличение прескалера в 10 раз (с 10мкс до 0,1мс, с 0.7Гц до 0.07 Гц) + angle->delay_max_us /= 10; + angle->delay_min_us /= 10; + TIMER->PSC = 7299; + + if ((angle->delay_max_us > 0xFFFF) || (angle->delay_min_us > 0xFFFF)) + { + // если все еще переполнение то выключаем всё + Upp.ForceStop = 1; + } + } + } + else + { + TIMER->PSC = 71; + } + + // duration + float duration_ms = Duration_old * 1000.0f; + uint32_t steps = duration_ms / angle->sample_time_ms; + if (steps == 0) steps = 1; + + if (angle->delay_max_us > angle->delay_min_us) + angle->delay_step_us = (angle->delay_max_us - angle->delay_min_us) / steps; + else + angle->delay_step_us = 0; + + } + + return update; } void upp_init(void) { + Upp.max_duty = 0.8; + Upp.min_duty = 0.1; + Upp.angleInit.sample_time_ms = 100; + + phase_A.disconnect.gpiox = GPIOA; + phase_A.disconnect.gpio_pin = GPIO_PIN_5; + + phase_B.disconnect.gpiox = GPIOA; + phase_B.disconnect.gpio_pin = GPIO_PIN_6; + + phase_C.disconnect.gpiox = GPIOA; + phase_C.disconnect.gpio_pin = GPIO_PIN_7; + + phase_A.ctrl.angle.Init = &Upp.angleInit; + phase_B.ctrl.angle.Init = &Upp.angleInit; + phase_C.ctrl.angle.Init = &Upp.angleInit; + tiristor_init(&phase_A.ctrl, GPIOB, GPIO_PIN_12); tiristor_init(&phase_B.ctrl, GPIOB, GPIO_PIN_13); tiristor_init(&phase_C.ctrl, GPIOB, GPIO_PIN_14); + TIMER->CR1 |= TIM_CR1_CEN; + + tiristor_angle_reset(&phase_A.ctrl); + tiristor_angle_reset(&phase_B.ctrl); + tiristor_angle_reset(&phase_C.ctrl); #ifndef HARDWARE_ZERO_CROSS_DETECT adc_Attach(&phase_A.zc_detector.AdcFilter, &hadc); zero_cross_Init(&phase_A.zc_detector, ADC_INITIAL_ZERO_LEVEL); @@ -46,5 +300,6 @@ void upp_init(void) adc_Attach(&phase_A.zc_detector.AdcFilter, &hadc); zero_cross_Init(&phase_A.zc_detector, ADC_INITIAL_ZERO_LEVEL); #endif + //Upp.GoSafe = 1; } diff --git a/mcu_project/upp/Core/upp/upp.h b/mcu_project/upp/Core/upp/upp.h index 2351f8b..cafce11 100644 --- a/mcu_project/upp/Core/upp/upp.h +++ b/mcu_project/upp/Core/upp/upp.h @@ -11,20 +11,57 @@ #define hadc hadc1 #define ADC_INITIAL_ZERO_LEVEL 2048 - + +#define disconnect_phase(_ph_) { (_ph_)->disconnect.gpiox->ODR |= (_ph_)->disconnect.gpio_pin; (_ph_)->disconnect.Disconnected = 1;} +#define connect_phase(_ph_) { (_ph_)->disconnect.gpiox->ODR &= ~(_ph_)->disconnect.gpio_pin; (_ph_)->disconnect.Disconnected = 0;} + typedef struct { + struct + { + unsigned Disconnected:1; + GPIO_TypeDef *gpiox; + uint32_t gpio_pin; + }disconnect; + ZeroCrossDetector_t zc_detector; TiristorControl_t ctrl; } Phase_t; // структура для фазы + +typedef struct +{ + unsigned GoSafe:1; + unsigned Go:1; + unsigned GoStop:1; + unsigned Prepare:1; + unsigned Disconnected:1; + unsigned GoDisconnect:1; + unsigned ForceStop:1; + unsigned PreGoDone:1; + + + float Duration; + float sine_freq; + float max_duty; + float min_duty; + + AngleInit_t angleInit; +}UPP_Control_t; + + extern Phase_t phase_A; extern Phase_t phase_B; extern Phase_t phase_C; +extern UPP_Control_t Upp; void upp_main(void); +void upp_safe_go(void); +void disconnect_upp(void); +void connect_upp(void); void upp_phase_routine(Phase_t *phase); void upp_phase_control(Phase_t *phase); +int GetAngleInit(AngleInit_t *angle); void upp_init(void); diff --git a/mcu_project/upp/MDK-ARM/upp.uvguix.wot89 b/mcu_project/upp/MDK-ARM/upp.uvguix.wot89 index 52ccc17..2ce7c3b 100644 --- a/mcu_project/upp/MDK-ARM/upp.uvguix.wot89 +++ b/mcu_project/upp/MDK-ARM/upp.uvguix.wot89 @@ -101,17 +101,17 @@ -1 - 430 - 1740 - 2550 - 1219 + 431 + 1912 + 2722 + 1220 0 1414 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000010000000070000000100000029453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7570702E6300000000057570702E6300000000C5D4F200FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7570702E6800000000057570702E6800000000FFDC7800FFFFFFFF2A453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000BECEA100FFFFFFFF2A453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000F0A0A100FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C496E635C6164632E6800000000056164632E6800000000BCA8E100FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C6164635F66696C7465722E63000000000C6164635F66696C7465722E63000000009CC1B600FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C6164635F66696C7465722E68000000000C6164635F66696C7465722E6800000000F7B88600FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7A65726F5F63726F73732E63000000000C7A65726F5F63726F73732E6300000000D9ADC200FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7A65726F5F63726F73732E68000000000C7A65726F5F63726F73732E6800000000A5C2D700FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C74696D2E63000000000574696D2E6300000000B3A6BE00FFFFFFFF2E453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7469726973746F722E68000000000A7469726973746F722E6800000000EAD6A300FFFFFFFF2E453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7469726973746F722E63000000000A7469726973746F722E6300000000F6FA7D00FFFFFFFF37453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000B5E99D00FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C6164632E6300000000056164632E63000000005FC3CF00FFFFFFFF4F453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6164632E63000000001373746D3332663178785F68616C5F6164632E6300000000C1838300FFFFFFFF52453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7263635F65782E63000000001673746D3332663178785F68616C5F7263635F65782E6300000000CACAD500FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000B80B0000FC050000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000010000000000000000100000029453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7570702E6300000000057570702E6300000000C5D4F200FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7570702E6800000000057570702E6800000000FFDC7800FFFFFFFF2A453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000BECEA100FFFFFFFF2A453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000F0A0A100FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C496E635C6164632E6800000000056164632E6800000000BCA8E100FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C6164635F66696C7465722E63000000000C6164635F66696C7465722E63000000009CC1B600FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C6164635F66696C7465722E68000000000C6164635F66696C7465722E6800000000F7B88600FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7A65726F5F63726F73732E63000000000C7A65726F5F63726F73732E6300000000D9ADC200FFFFFFFF30453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7A65726F5F63726F73732E68000000000C7A65726F5F63726F73732E6800000000A5C2D700FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C74696D2E63000000000574696D2E6300000000B3A6BE00FFFFFFFF2E453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7469726973746F722E68000000000A7469726973746F722E6800000000EAD6A300FFFFFFFF2E453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C7570705C7469726973746F722E63000000000A7469726973746F722E6300000000F6FA7D00FFFFFFFF37453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000B5E99D00FFFFFFFF29453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C436F72655C5372635C6164632E6300000000056164632E63000000005FC3CF00FFFFFFFF4F453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6164632E63000000001373746D3332663178785F68616C5F6164632E6300000000C1838300FFFFFFFF52453A5C2E4449504C4F4D5C6D63755F70726F6A6563745C7570705C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F7263635F65782E63000000001673746D3332663178785F68616C5F7263635F65782E6300000000CACAD500FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000B80B0000FC050000 @@ -1805,8 +1805,8 @@ 59392 File - 2620 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001A48414C5F52434345785F476574506572697068434C4B46726571960000000000000002001548415244574152455F43524F53535F4445544543541A48414C5F52434345785F476574506572697068434C4B467265710000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2918 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001A48414C5F52434345785F476574506572697068434C4B4672657196000000000000001400095570702E616E676C650A416E676C65496E69742E0D5570702E466F72636553746F700B636F6E6E6563745F7570700D5469726973746F7252656164790C5469726973746F72446F6E650E6C6173745F7570646174655F6D73147469726973746F725F616E676C655F72657365740E73616D706C655F74696D655F6D730D64656C61795F737465705F75730C64656C61795F6D696E5F75730C64656C61795F6D61785F75730E73746172745F64656C61795F7573084475726174696F6E086475726174696F6E185469726973746F724857416E676C65436F6E74726F6C5F74165469726973746F72416E676C65436F6E74726F6C5F74057570702E680A656E61626C655F7570700B5570702E44697361626C650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1862,21 +1862,21 @@ 0 100 - 7 + 0 ..\Core\upp\upp.c - 20 - 1 - 18 + 18 + 19 + 44 1 0 ..\Core\upp\upp.h - 16 + 26 1 - 31 + 39 1 0 @@ -1892,9 +1892,9 @@ ../Core/Src/main.c - 24 - 40 - 81 + 5 + 82 + 96 1 0 @@ -1928,9 +1928,9 @@ ..\Core\upp\zero_cross.c - 33 + 22 1 - 51 + 43 1 0 @@ -1955,18 +1955,18 @@ ..\Core\upp\tiristor.h - 23 + 8 1 - 18 + 26 1 0 ..\Core\upp\tiristor.c - 0 - 1 - 39 + 2 + 19 + 95 1 0 diff --git a/mcu_project/upp/MDK-ARM/upp/tiristor.d b/mcu_project/upp/MDK-ARM/upp/tiristor.d index 9b23175..843298a 100644 --- a/mcu_project/upp/MDK-ARM/upp/tiristor.d +++ b/mcu_project/upp/MDK-ARM/upp/tiristor.d @@ -1,4 +1,4 @@ -upp/tiristor.o: ..\Core\upp\tiristor.c ..\Core\upp\upp.h \ +upp/tiristor.o: ..\Core\upp\tiristor.c ..\Core\upp\tiristor.h \ ..\Core\Inc\main.h ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h \ ..\Core\Inc\stm32f1xx_hal_conf.h \ ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h \ @@ -30,6 +30,4 @@ upp/tiristor.o: ..\Core\upp\tiristor.c ..\Core\upp\upp.h \ ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \ ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \ ..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \ - ..\Core\Inc\adc.h ..\Core\Inc\tim.h ..\Core\Inc\usart.h \ - ..\Core\Inc\gpio.h ..\Core\upp\zero_cross.h ..\Core\upp\adc_filter.h \ - ..\Core\upp\tiristor.h + ..\Core\Inc\tim.h