From 942cb12948219b519bb6b887c37efdb845fbd6d9 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Sat, 10 May 2025 22:11:39 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=A3=D0=A7=D0=90=20=D0=92=D0=A1=D0=95?= =?UTF-8?q?=D0=93=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit добавлены параметры работы упп (частота сети, максимальный и минимальный угол открытия тиристора, длительность плавного пуска) добавлены всякие режимы по флагам (отключение, остановка, подготовка, го) добавлен флаг для безопасным управлением упп (GoSafe) добавлен режим торможения параметры угла (angleInit) унифицированы для всех фаз --- matlab_stm_emulate | 2 +- mcu_project/upp/Core/upp/tiristor.c | 51 +++-- mcu_project/upp/Core/upp/tiristor.h | 23 +- mcu_project/upp/Core/upp/upp.c | 277 ++++++++++++++++++++++- mcu_project/upp/Core/upp/upp.h | 39 +++- mcu_project/upp/MDK-ARM/upp.uvguix.wot89 | 46 ++-- mcu_project/upp/MDK-ARM/upp/tiristor.d | 6 +- 7 files changed, 376 insertions(+), 68 deletions(-) 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