исправлено неправильно считывание модбас настроек и окончательно добавлена микросекундняа задержки при прямом тесте диода

This commit is contained in:
2025-02-25 10:14:57 +03:00
parent b5f1bb72d7
commit 13ac8950fc
3 changed files with 37 additions and 13 deletions

View File

@@ -38,15 +38,22 @@ void TESTER_TestDiode_Forward(TESTER_TestHandleTypeDef *htest)
TESTER_Connect_Phase(&htest->SwPhaseForward);
/* Прямое включение на определенное время */
uint32_t tickstart = HAL_GetTick();
HAL_StatusTypeDef res;
while(1)
if(htest->SwTimings.ticks_for_forward.msdelay)
{
/* Считывание АЦП пока таймаут истечет */
res = ADC_ReadContinuous(htest->adc, htest->continuous_buff_size, tickstart, htest->SwTimings.ticks_for_forward.ticks);
if(res != HAL_OK)
break;
uint32_t tickstart = HAL_GetTick();
HAL_StatusTypeDef res;
while(1)
{
/* Считывание АЦП пока таймаут истечет */
res = ADC_ReadContinuous(htest->adc, htest->continuous_buff_size, tickstart, htest->SwTimings.ticks_for_forward.ticks);
if(res != HAL_OK)
break;
}
}
else
{
TESTER_Delay(&htest->SwTimings.ticks_for_forward, &hmcstim);
}
/* Отключение питания от диода */

View File

@@ -162,17 +162,17 @@ void TESTER_InterfaceHandle(TESTER_ProjectTypeDef *tester)
*/
void TESTER_UpdateSettings(TESTER_TestHandleTypeDef *htest, MB_DataStructureTypeDef *mbdata)
{
htest->SwTimings.ticks_for_forward.ticks = mbdata->HoldRegs.TimeForForward;
htest->SwTimings.ticks_for_reverse.ticks = mbdata->HoldRegs.TimeForReverse;
htest->SwTimings.ticks_before_test.ticks = mbdata->HoldRegs.TimeBeforeTest;
htest->SwTimings.ticks_deadtime.ticks = mbdata->HoldRegs.TimeDeadtime;
htest->SwTimings.ticks_before_expected_peak.ticks = mbdata->HoldRegs.TimeBeforePeak;
htest->SwTimings.ticks_before_test.ticks = mbdata->HoldRegs.TimeBeforeTest;
htest->SwTimings.ticks_for_forward.ticks = mbdata->HoldRegs.TimeForForward;
htest->SwTimings.ticks_for_forward.msdelay = mbdata->Coils.msTimeForForward_enable;
htest->SwTimings.ticks_for_reverse.msdelay = mbdata->Coils.msTimeForReverse_enable;
htest->SwTimings.ticks_before_test.msdelay = mbdata->Coils.msTimeBeforeTest_enable;
htest->SwTimings.ticks_deadtime.msdelay = mbdata->Coils.msTimeDeadtime_enable;
htest->SwTimings.ticks_before_expected_peak.msdelay = mbdata->Coils.msTimeBeforePeak_enable;
htest->SwTimings.ticks_before_test.msdelay = mbdata->Coils.msTimeBeforeTest_enable;
htest->SwTimings.ticks_before_test.msdelay = mbdata->Coils.msTimeForForward_enable;
TESTER_ADC_UpdateSettings(htest->adc, mbdata);
}