Куча всего.

Добавлена интерполяция по таблице датчиков
Структурирован проект в матлаб
This commit is contained in:
2025-11-14 18:03:44 +03:00
parent e4f05bdf6a
commit 2cdcebeffa
10 changed files with 172 additions and 60 deletions

View File

@@ -47,6 +47,10 @@
//#define DEKSTOP_CYCLES_FOR_MCU_APP 0xFFFF ///< number of for() cycles after which MCU thread would be suspended
//#define MCU_CORE_CLOCK 150000000 ///< MCU clock rate for simulation
// Выбор Timer
//#define USE_QPF_TIMER
#define USE_CPU_TIMER
// Parameters of S_Function
// INPUT/OUTPUTS PARAMS START
#define IN_PORT_NUMB 2
@@ -55,7 +59,7 @@
#define OUT_PORT_NUMB 3
#define THYR_PORT_1_WIDTH 6
#define OUT_PORT_2_WIDTH 6
#define PM_PORT_2_WIDTH 16
#define OUT_PORT_3_WIDTH 16
// INPUT/OUTPUTS PARAMS END
@@ -95,12 +99,12 @@
#define OFFSET_IN_ARRAY_2 (OFFSET_IN_ARRAY_1 + ADC_PORT_1_WIDTH)
/// === Полный размер буфера ===
#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + OUT_PORT_2_WIDTH + OUT_PORT_3_WIDTH)
#define TOTAL_OUT_SIZE (THYR_PORT_1_WIDTH + PM_PORT_2_WIDTH + OUT_PORT_3_WIDTH)
/// === Смещения массивов (внутри общего буфера) ===
#define OFFSET_OUT_ARRAY_1 0
#define OFFSET_OUT_ARRAY_2 (OFFSET_OUT_ARRAY_1 + THYR_PORT_1_WIDTH)
#define OFFSET_OUT_ARRAY_3 (OFFSET_OUT_ARRAY_2 + OUT_PORT_2_WIDTH)
#define OFFSET_OUT_ARRAY_3 (OFFSET_OUT_ARRAY_2 + PM_PORT_2_WIDTH)
// INPUT/OUTPUTS AUTO-PARAMS END
@@ -129,9 +133,24 @@ extern const int inOffsets[IN_PORT_NUMB];
#define CREATE_SUSPENDED 0x00000004
typedef void* HANDLE; ///< MCU handle typedef
typedef struct
{
unsigned long long Frequency; ///< Частота таймера
double TimerResolutionNs; ///< Разрешение таймера в наносекундах
unsigned long long SFuncPrevTime; ///< Время предыдущего вызова S-Function
unsigned long long SFuncStartTime; ///< Начало выполнения S-Function
unsigned long long SFuncEndTime; ///< Окончание выполнения S-Function
unsigned long long MCUStepStartTime; ///< Начало MCU_Step_Simulation
unsigned long long MCUStepEndTime; ///< Окончание MCU_Step_Simulation
// Statistics
long call_count; ///< Количество вызовов
}SIM_HighPrecisionTimer;
/**
* @brief MCU handle Structure definition.
* @note Prefixes: h - handle, s - settings, f - flag
* @note Prefixes: h - handle, s - settings, f - flag, d - debug info
*/
typedef struct {
// MCU Thread
@@ -147,6 +166,12 @@ typedef struct {
double SystemClockDouble; ///< Счетчик в формате double для точной симуляции системных тиков С промежуточными значений
double sSystemClock_step; ///< Шаг тиков для их симуляции, в формате double
double sSimSampleTime; ///< Период дискретизации симуляции
SIM_HighPrecisionTimer dTimer; ///< Высокоточный таймер
double dSFuncPeriod; ///< Период вызова S-Function в микросекундах
double dSFuncTime; ///< Время "выполнения" S-Function (от начала Update до конца Outputs) в микросекундах
double dMCUStepTime; ///< Время выполнения приложения в микросекундах
}SIM__MCUHandleTypeDef;
extern SIM__MCUHandleTypeDef hmcu; // extern для видимости переменной во всех файлах