UPP/MATLAB/app_wrapper/app_io.c
Razvalyaev 4491f11b3d Тесты фильтрования
Оно добавляют задержку и сдвиг по фазе надо чет думать
2025-11-10 07:55:07 +03:00

62 lines
2.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
**************************************************************************
* @file app_init.h
* @brief Файл с функциями записи входов/выходов программы МК @ref app_init.
**************************************************************************/
#include "mcu_wrapper_conf.h"
#include "app_wrapper.h"
#define PIN_READ(_verbname_) (_verbname_##_GPIO_Port->ODR & (_verbname_##_Pin)) ? 1 : 0
void ThyristorWrite(real_T* Buffer)
{
int pwm1_pin = PIN_READ(PWM1);
int pwm2_pin = PIN_READ(PWM2);
int pwm3_pin = PIN_READ(PWM3);
int pwm4_pin = PIN_READ(PWM4);
int pwm5_pin = PIN_READ(PWM5);
int pwm6_pin = PIN_READ(PWM6);
WriteOutputArray(pwm1_pin, 0, 0);
WriteOutputArray(pwm2_pin, 0, 1);
WriteOutputArray(pwm3_pin, 0, 2);
WriteOutputArray(pwm4_pin, 0, 3);
WriteOutputArray(pwm5_pin, 0, 4);
WriteOutputArray(pwm6_pin, 0, 5);
}
/**
* @brief Функция для записи входов в приложение МК
* @param u - массив входных значений
*/
void app_readInputs(const real_T* Buffer) {
// USER APP INPUT START
ADC_Set_Channel_Value(ADC3, 4, ReadInputArray(0,0));
ADC_Set_Channel_Value(ADC3, 5, ReadInputArray(0,1));
ADC_Set_Channel_Value(ADC3, 6, ReadInputArray(0,2));
ADC_Set_Channel_Value(ADC3, 7, ReadInputArray(0,3));
ADC_Set_Channel_Value(ADC3, 8, ReadInputArray(0,4));
ADC_Set_Channel_Value(ADC3, 10, ReadInputArray(0,5));
__HAL_TIM_SET_AUTORELOAD(&adc_tim, ReadInputArray(1, 0));
// USER APP INPUT END
}
/**
* @brief Функция для записи выходов приложения МК
* @param xD - массив буффера выходов(дискретных выходов)
* @details Используте WriteOutputArray(val, arr_ind, val_ind) для записи
*/
void app_writeOutputBuffer(real_T* Buffer) {
// USER APP OUTPUT START
ThyristorWrite(Buffer);
extern ADC_Period_t adc;
for(int i = 0; i < 6; i++)
{
WriteOutputArray(adc.Data[i], 1, i);
}
// USER APP OUTPUT END
}