From 1830087d6e8132c999f5ee0034becfd360811b97 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Tue, 24 Dec 2024 14:45:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=20=D0=BC=D0=B1=20=D0=B4=D0=B0=D1=82?= =?UTF-8?q?=D1=83=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=B5=D1=84=D0=BE=D0=BB=D1=82=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20+=20minor=20?= =?UTF-8?q?fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Tester_main/tester_adc_func.c | 2 +- diode_tester/Core/Tester_main/tester_config.h | 16 ++++++++------- diode_tester/Core/Tester_main/tester_main.c | 2 +- diode_tester/MDK-ARM/diode_tester.uvoptx | 19 +++++++++++++++++- docs/mb_adr.xlsx | Bin 15270 -> 15924 bytes 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/diode_tester/Core/Tester_main/tester_adc_func.c b/diode_tester/Core/Tester_main/tester_adc_func.c index b4e9a2d..8ce040b 100644 --- a/diode_tester/Core/Tester_main/tester_adc_func.c +++ b/diode_tester/Core/Tester_main/tester_adc_func.c @@ -86,7 +86,7 @@ void TESTER_ADC_UpdateSettings(TESTER_ADCTypeDef *adc, MB_DataStructureTypeDef * adc->chAdc.s.expected_pulse_sign = mbdata->HoldRegs.Adc_PulseSign; adc->chAdc.s.pulse_width = mbdata->HoldRegs.Adc_PulseWidth; - adc->chAdc.s.U_step = (float)mbdata->HoldRegs.Adc_U_Calibr/(adc->chAdc.s.ADC_calibr - adc->chAdc.s.ADC_zero); + adc->chAdc.s.U_step = ((float)mbdata->HoldRegs.Adc_U_Calibr/1000)/(adc->chAdc.s.ADC_calibr - adc->chAdc.s.ADC_zero); } HAL_StatusTypeDef ADC_DMA_StartRead(TESTER_ADCTypeDef *adc) diff --git a/diode_tester/Core/Tester_main/tester_config.h b/diode_tester/Core/Tester_main/tester_config.h index 2682c6a..ca99197 100644 --- a/diode_tester/Core/Tester_main/tester_config.h +++ b/diode_tester/Core/Tester_main/tester_config.h @@ -25,12 +25,6 @@ */ #define DEF_MS_TIME_FOR_POSITIVE 2000 -/** - * @brief Задержка для дедтайма ПО УМОЛЧАНИЮ - * @details Задержка миллисекундная или микросекундная @ref DEF_DEADTIME_MS_DELAY - */ -#define DEF_DEADTIME 500 -#define DEF_DEADTIME_MS_DELAY 0 ///< включение миллисекундной задержки для @ref DEF_DEADTIME по умолчанию /** * @brief Задержка перед началом тестирования ПО УМОЛЧАНИЮ @@ -39,6 +33,13 @@ #define DEF_TIME_BEFORE_TEST 500 #define DEF_TIME_BEFORE_TEST_MS_DELAY 1 ///< включение миллисекундной задержки для @ref TIME_BEFORE_TEST по умолчанию +/** + * @brief Задержка для дедтайма ПО УМОЛЧАНИЮ + * @details Задержка миллисекундная или микросекундная @ref DEF_DEADTIME_MS_DELAY + */ +#define DEF_DEADTIME 500 +#define DEF_DEADTIME_MS_DELAY 0 ///< включение миллисекундной задержки для @ref DEF_DEADTIME по умолчанию + /** * @brief Задержка между включением АЦП и предполагаемым скачком напряжения ПО УМОЛЧАНИЮ * @details Задержка нужна, чтобы точно поймать его в буфере АЦП. @@ -135,6 +136,8 @@ * @brief Конфигурации для АЦП @{ */ +#define TESTER_ADC_PULSE_EXPETCED_WIDTH 4 ///< Предполагаемая длительность пика в отчетах ацп +#define TESTER_ADC_PULSE_SIGN 0 ///< Полярность импульса 0 - положительная, 1 - отрицательая #define ADC_BUFF_SIZE (200) ///< Размер буфера АЦП #define ADC_DMA_BUFF_SIZE (ADC_BUFF_SIZE) ///< Размер буфера ДМА (1 канал) @@ -145,7 +148,6 @@ #define ADC_READ_TIMEOUT_MS 20 ///< Таймаут на ожидание разрядки конденсатора -#define TESTER_ADC_PULES_EXPETCED_WIDTH 4 ///< Предполагаемая длительность пика в отчетах ацп /** TESTER_ADC_CONFIG * @} diff --git a/diode_tester/Core/Tester_main/tester_main.c b/diode_tester/Core/Tester_main/tester_main.c index 4ea9688..407bba3 100644 --- a/diode_tester/Core/Tester_main/tester_main.c +++ b/diode_tester/Core/Tester_main/tester_main.c @@ -220,7 +220,7 @@ void TESTER_Set_Default_Settings(TESTER_ProjectTypeDef *tester) /* Настройка АЦП */ - tester->mbdata->HoldRegs.Adc_PulseWidth = TESTER_ADC_PULES_EXPETCED_WIDTH; + tester->mbdata->HoldRegs.Adc_PulseWidth = TESTER_ADC_PULSE_EXPETCED_WIDTH; tester->mbdata->HoldRegs.Adc_CalibrValue = ADC_VALUE_CALIBR; tester->mbdata->HoldRegs.Adc_ZeroValue = ADC_VALUE_ZERO; tester->mbdata->HoldRegs.Adc_U_Calibr = ADC_U_CALIBR; diff --git a/diode_tester/MDK-ARM/diode_tester.uvoptx b/diode_tester/MDK-ARM/diode_tester.uvoptx index a2aa8ef..200d7cf 100644 --- a/diode_tester/MDK-ARM/diode_tester.uvoptx +++ b/diode_tester/MDK-ARM/diode_tester.uvoptx @@ -148,7 +148,24 @@ -U53FF72064980555724221187 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL08000 -FP0($$Device:STM32F103C6$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 - + + + 0 + 0 + 89 + 1 +
134240776
+ 0 + 0 + 0 + 0 + 0 + 1 + ..\Core\Tester_main\tester_adc_func.c + + \\diode_tester\../Core/Tester_main/tester_adc_func.c\89 +
+
0 diff --git a/docs/mb_adr.xlsx b/docs/mb_adr.xlsx index b8ee642fe866968be13147013144f7d1d30c427e..926cf96d3221e9388da5d8da20b22c63bf59a254 100644 GIT binary patch delta 9035 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

c+ZqSMb{f zY{#IiV5^F3jfH%=MZ5+|KsWk`s^>aHdJwem?e9o*-=02LPlZkdJKPxlOxqF3sKgO+ zoy^3JA87+PZB+@m=rNcY_Jh{8iV-*Ur_S)?scjyal~(FcRp*)wj`PNK>u1IY{SEmc zHtLg6h%Y9#9ypdw0HcZVThwJ4GlQLc*5PBTanlA`Y((x4&qD`Qs@YkvO+Ha=wS!xn zm8kL;-NyPQjkv8b1>bPeqqdYzYmWV67^JG`^$d9&N?mxSW)34iL`FFBi=WIqYd(%R zLyG4j&Z%F*k#?(_qF$VUO_-eDe6Qi0WJloWuD-cUJ0r(Tii=YfVxZ6Yu3G@41M|Qj z*ZAboqdq#nR=Q~6Lzy3{HwmR*6{~IV=tZeyZa`}(4OO2dIj{`CJkh+b2=*W;#oBIO z$^vLvX@1uB`q@S!OfwlfBYODbyLVQI2oePQ7f}wPc!UJRhyplyh6Ly?qlZgef}{My zS=!=H%E?0zj~a-)W`9HD!Jo1}8k)4nSmTw9C#g0Q$5dMkuo+GGJ;6p90zkZ6EC1gG z5qxfT{QrBO;B)c)&!7R>aPxw_gNnG7!NJf#KT#<_1Ux7N|LIWy0670E`(IB8bkGM8 z=4aOm5@fbBEiL^SC#_RTpa3wRQY3)?9QOTR{c~c_G!HGof4)@!pKAaA zFr^1!@(P1fvVydD`N8oxK&QOqpf+A6@Z5h>9)kZ{MgP&I4 VsQ=-9&a}8detcw5Q#}8u{|{Ur9{T_Q delta 8351 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 y_;)TD#Q%OEP!JGk|6#3`4Kyl1PWZQ$gx~)+P