Чуть подкоректированны и закоментированны структуры

This commit is contained in:
Razvalyaev 2024-12-18 17:00:44 +03:00
parent 8326ea8a8c
commit 7f6932631e
5 changed files with 52 additions and 46 deletions

View File

@ -41,33 +41,19 @@ typedef struct
uint16_t ADC_Max;
uint16_t ADC_Min;
unsigned pulse_peak_ind;
/* Parameter for calc voltage */
ADC_ParamsTypeDef s;
unsigned pulse_peak_ind;
ADC_ChannelState state;
ADCChannel_TrackerTypeDef adc_ch_err;
}TESTER_ADCChannelTypeDef;
typedef struct
{
int32_t t_current;
int32_t t_critical;
#ifdef FOSTER_STUDENT_USER_T_CRITICAL
#else
uint8_t precise_table_ind;
#endif
uint16_t array_size;
}TESTER_ADCFilterTypeDef;
typedef struct
{
TESTER_ADCChannelTypeDef chAdc;
@ -99,8 +85,9 @@ void ADC_DMA_Handler(TESTER_ADCTypeDef *adc);
void ADC_DMA_ProcessBufferForPeak(TESTER_ADCChannelTypeDef *adc_fc);
void ADC_DMA_Channels_Prepare(TESTER_ADCChannelTypeDef *adc_fuel_cells, uint8_t MaskForChannels, uint8_t state);
HAL_StatusTypeDef ADC_DMA_StartRead(TESTER_ADCTypeDef *adc);
/* Считать буфер DMA и найти в нем пик (скачок напряжения) */
HAL_StatusTypeDef ADC_DMA_ReadForPeak(TESTER_ADCTypeDef *adc, uint32_t Timeout);
/* Считывать АЦП, который работает в континуес режиме */
HAL_StatusTypeDef ADC_ReadContinuous(TESTER_ADCTypeDef *adc, uint32_t buff_size, uint32_t tickstart, uint32_t timeout);
#ifndef printf_adc_result

View File

@ -49,7 +49,7 @@
@{
*/
#define ADC_BUFF_SIZE (1000) ///< Размер буфера АЦП
#define ADC_BUFF_SIZE (200) ///< Размер буфера АЦП
#define ADC_DMA_BUFF_SIZE (ADC_BUFF_SIZE) ///< Размер буфера ДМА (1 канал)
#define ADC_U_CALIBR ((float)3.0) ///< Калибровочное напряжение

View File

@ -29,11 +29,11 @@ void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest)
*/
void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
{
/* Включение континиус АЦП */
HAL_ADC_Start(htest->adc->hadc);
/* Задержка, перед началом работы */
TESTER_Delay(&htest->SwTimings.ticks_before_test);
/* Задержка, перед подключением питания */
TESTER_Delay(&htest->SwTimings.ticks_before_connect);
/* Включение континиус АЦП */
HAL_ADC_Start(htest->adc->hadc);
/* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCPosSw);
@ -64,11 +64,14 @@ void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
*/
void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
{
/* Задержка, перед началом работы */
TESTER_Delay(&htest->SwTimings.ticks_before_test);
/* Включение АЦП */
ADC_DMA_StartRead(htest->adc);
/* Задержка, перед подключением питания */
TESTER_Delay(&htest->SwTimings.ticks_before_connect);
/* Задержка, перед предполагаемым скачком */
TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak);
/* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCNegSw);
@ -90,24 +93,26 @@ void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
*/
void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
{
/* Задержка, перед подключением питания */
TESTER_Delay(&htest->SwTimings.ticks_before_connect);
/* Задержка, перед началом работы */
TESTER_Delay(&htest->SwTimings.ticks_before_test);
/* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCPosSw);
/* Подключение питания на определенное время */
TESTER_Delay(&htest->SwTimings.ticks_before_reconnect);
/* Подкючение положительного питания к диоду */
msDelay(htest->SwTimings.msticks_for_positive_dc);
/* Включение АЦП */
ADC_DMA_StartRead(htest->adc);
/* Ожидается задержка, перед предполагаемым скачком */
TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak);
/* Отключение питания от диода */
TESTER_Disconnect_Power(&htest->DCPosSw);
TESTER_Connect_Power(&htest->DCNegSw);
/* Подключение питания на определенное время */
/* Подключение отрицательного питания на определенное время */
TESTER_Delay(&htest->SwTimings.ticks_before_disconnect);
/* Отключение питания от диода */

View File

@ -14,39 +14,50 @@
#include "tester_adc_func.h"
/**
* @brief Структура для пинов, которые отвечают за ключи, которые подключают питание
*/
typedef struct
{
GPIO_TypeDef *SW1_Port;
uint32_t SW1_Pin;
GPIO_TypeDef *SW1_Port; ///< Порт пина первого ключа для питания
uint32_t SW1_Pin; ///< Пин первого ключа для питания
GPIO_TypeDef *SW2_Port;
uint32_t SW2_Pin;
GPIO_TypeDef *SW2_Port; ///< Порт пина второго ключа для питания
uint32_t SW2_Pin; ///< Пин второго ключа для питания
}TESTER_PowerSwitchTypeDef;
/**
* @brief Структура для тайминга с флагом миллисекундой или тиковой (пустой for) задержкой
*/
typedef struct
{
unsigned msdelay:1;
uint32_t ticks;
}TESTER_TicksDelayTypeDef;
/**
* @brief Структура с таймингами для тестера
*/
typedef struct
{
uint32_t msticks_for_positive_dc;
TESTER_TicksDelayTypeDef ticks_before_connect;
TESTER_TicksDelayTypeDef ticks_before_disconnect;
TESTER_TicksDelayTypeDef ticks_before_reconnect;
uint32_t msticks_for_positive_dc; ///< миллисекундная задержка для положительного напряжения @ref TESTER_TestDiode_PositivePower
TESTER_TicksDelayTypeDef ticks_before_test; ///< задержка перед началом тестирования (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_disconnect; ///< задержка перед выключением питания (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_go_to_peak; ///< задержка между включением АЦП и предполагаемым скачком напряжения, чтобы точно поймать его в буфере АЦП (мс или тики for())
}TESTER_SwitchTimingsTypeDef;
/**
* @brief Структура-дескриптор для управления тестированием диодов
*/
typedef struct
{
TESTER_ADCTypeDef *adc;
TESTER_ADCTypeDef *adc; ///< указатель на структуру АЦП тестера
TESTER_SwitchTimingsTypeDef SwTimings;
TESTER_SwitchTimingsTypeDef SwTimings; ///< Тайминги для ключей
TESTER_PowerSwitchTypeDef DCPosSw;
TESTER_PowerSwitchTypeDef DCNegSw;
TESTER_PowerSwitchTypeDef DCPosSw; ///< Пины ключей для положительного источника
TESTER_PowerSwitchTypeDef DCNegSw; ///< Пины ключей для отрицательного источника
uint32_t continuous_buff_size;

View File

@ -26,14 +26,17 @@ typedef struct
unsigned disable_reset_call:1;
}function_calls;
/**
* @brief Структура проекта тестер
*/
typedef struct
{
function_calls func;
function_calls func; ///< вызов разных функций
TESTER_TestHandleTypeDef *htest;
TESTER_TestHandleTypeDef *htest; ///< дескриптор тестера
uint32_t delay;
uint32_t delay_en:1;
uint32_t delay; ///< задержка главного цикла
uint32_t delay_en:1; ///< включить задержку в главном цикле
}TESTER_ProjectTypeDef;
extern TESTER_ProjectTypeDef TESTER;