commit d03823e39d0f6d9b6636b842a9b57eaacade3244 Author: cfif Date: Mon Dec 15 16:18:40 2025 +0300 Обновление diff --git a/AdcTasks.c b/AdcTasks.c new file mode 100644 index 0000000..38abb8b --- /dev/null +++ b/AdcTasks.c @@ -0,0 +1,82 @@ +// +// Created by cfif on 15.12.2025. +// +#include "AdcTasks.h" +#include "CmsisRtosThreadUtils.h" +#include +#include "memory.h" + +void Adc_0_Init(tAdcTask *env, + tAdcIO *adcIO) { + + env->adcIO = adcIO; + env->access = osMutexNew(NULL); + + InitThreadAtrStatic(&env->thread.attr, "Adc0", env->thread.controlBlock, env->thread.stack, + osPriorityNormal); +} + + +static _Noreturn void Adc0_Thread(tAdcTask *env) { + + uint32_t ADC_Data; + + for (;;) { + +// env->adcIO->start(env->adcIO->env); +// env->ADC_Count = env->adcIO->get(env->adcIO->env, &ADC_Data, 1000); + + if (osMutexAcquire(env->access, 1000) == osOK) { + + memcpy(env->ADC_Data, (uint8_t *)ADC_Data, env->ADC_Count << 2); + + osMutexRelease(env->access); + } + + SystemDelayMs(100); + } +} + +void Adc_0_StartThread(tAdcTask *env) { + if (!env->thread.id) { + env->thread.id = osThreadNew((osThreadFunc_t) (Adc0_Thread), (void *) (env), &env->thread.attr); + } +} + + +void Adc_1_Init(tAdcTask *env, + tAdcIO *adcIO) { + + env->adcIO = adcIO; + env->access = osMutexNew(NULL); + + InitThreadAtrStatic(&env->thread.attr, "Adc1", env->thread.controlBlock, env->thread.stack, + osPriorityNormal); +} + + +static _Noreturn void Adc1_Thread(tAdcTask *env) { + + uint32_t ADC_Data; + + for (;;) { + + env->adcIO->start(env->adcIO->env); + env->ADC_Count = env->adcIO->get(env->adcIO->env, &ADC_Data, 1000); + + if (osMutexAcquire(env->access, 1000) == osOK) { + + memcpy(env->ADC_Data, (uint8_t *)ADC_Data, env->ADC_Count << 2); + + osMutexRelease(env->access); + } + + SystemDelayMs(100); + } +} + +void Adc_1_StartThread(tAdcTask *env) { + if (!env->thread.id) { + env->thread.id = osThreadNew((osThreadFunc_t) (Adc1_Thread), (void *) (env), &env->thread.attr); + } +} \ No newline at end of file diff --git a/AdcTasks.h b/AdcTasks.h new file mode 100644 index 0000000..2c8a93b --- /dev/null +++ b/AdcTasks.h @@ -0,0 +1,38 @@ +// +// Created by cfif on 15.12.2025. +// + +#ifndef HVAC_M7_ADCTASKS_H +#define HVAC_M7_ADCTASKS_H + +#include "AdcIO.h" +#include + +typedef struct { + + tAdcIO *adcIO; + osMutexId_t access; + + uint32_t ADC_Data[32]; + uint8_t ADC_Count; + + struct { + osThreadId_t id; + uint32_t stack[512]; + StaticTask_t controlBlock; + osThreadAttr_t attr; + } thread; + +} tAdcTask; + +void Adc_0_Init(tAdcTask *env, + tAdcIO *adcIO); + +void Adc_0_StartThread(tAdcTask *env); + +void Adc_1_Init(tAdcTask *env, + tAdcIO *adcIO); + +void Adc_1_StartThread(tAdcTask *env); + +#endif //HVAC_M7_ADCTASKS_H diff --git a/modular.json b/modular.json new file mode 100755 index 0000000..99df025 --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +}