From 8cebf126263dab6ff5d213c76aa28ca603b3a8c0 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 24 Jan 2025 13:22:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D0=BE=D1=80?= =?UTF-8?q?=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20GONEC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/TaskAdc.h | 34 +++++++++++++++++++ Src/TaskAdc.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ modular.json | 18 +++++++++++ 3 files changed, 142 insertions(+) create mode 100644 Inc/TaskAdc.h create mode 100644 Src/TaskAdc.c create mode 100644 modular.json diff --git a/Inc/TaskAdc.h b/Inc/TaskAdc.h new file mode 100644 index 0000000..8d7ec7b --- /dev/null +++ b/Inc/TaskAdc.h @@ -0,0 +1,34 @@ +// +// Created by cfif on 04.10.2022. +// + +#ifndef TTASKACD_H +#define TTASKACD_H + +#include +#include "Adcs.h" + +typedef struct { + tAdcs *adcs; + + uint16_t vcc; + + struct { + osThreadId_t id; + uint32_t stack[2048]; + StaticTask_t controlBlock; + osThreadAttr_t attr; + } thread; + +} tTaskAdc; + +void TaskAdc_Init( + tTaskAdc *env, + tAdcs *adcs +); + +void TaskAdc_StartThread(tTaskAdc *env); + +uint32_t getVcc(tTaskAdc *env); + +#endif //TTASKACD_H diff --git a/Src/TaskAdc.c b/Src/TaskAdc.c new file mode 100644 index 0000000..7e33a6e --- /dev/null +++ b/Src/TaskAdc.c @@ -0,0 +1,90 @@ +// +// Created by cfif on 04.10.2022. +// + +#include +#include +#include +#include +#include "fs_interface.h" + + +void TaskAdc_Init( + tTaskAdc *env, + tAdcs *adcs + ) { + + env->adcs = adcs; + + //Инициализируем поток + InitThreadAtrStatic(&env->thread.attr, "TaskAcd", env->thread.controlBlock, env->thread.stack, osPriorityNormal); + env->thread.id = 0; +} + + +uint32_t getVcc(tTaskAdc *env) { + double vcc; + vcc = env->vcc / 0.219666667; + + return (uint32_t)vcc; +} + +uint8_t bufAnswer[1024]; + +static _Noreturn void TaskAdc_Thread(tTaskAdc *env) { +/* + tFs *fs; + + FIL file; + UINT bytes_read; + + int step = 0; + + while (1) { + + + FRESULT fr = f_open_i(fs, &file, "1:/LOG/04-06-23.LOG", FA_READ); + if (fr) { + asm("nop"); + } + + if (step == 1) + fr = f_lseek_i(fs, &file, 40000); + + if (step == 2) + fr = f_lseek_i(fs, &file, 80000); + + ++step; + if (step == 3) + step = 0; + + + uint32_t t1 = SystemGetMs(); + fr = f_read_i(fs, &file, bufAnswer, 1024, &bytes_read); + uint32_t t2 = SystemGetMs(); + uint32_t t3 = t2 - t1; + + if (t3 > 10) { + asm("nop"); + } + + f_close_i(fs, &file); + + SystemDelayMs(100); + } +*/ + for (;;) { + + env->vcc = env->adcs->vccIo.get(&env->adcs->vcc, 1000); + + SystemDelayMs(100); + } +} + +void TaskAdc_StartThread(tTaskAdc *env) { + if (!env->thread.id) { + env->thread.id = osThreadNew((osThreadFunc_t) (TaskAdc_Thread), (void *) (env), &env->thread.attr); + } else { + osThreadResume(env->thread.id); + } +} diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..2774ab2 --- /dev/null +++ b/modular.json @@ -0,0 +1,18 @@ +{ + "dep": [ + { + "type": "git", + "provider": "GONEC", + "repo": "SystemDelayInterface" + } + ], + + "cmake": { + "inc_dirs": [ + "Inc" + ], + "srcs": [ + "Src/**.c" + ] + } +} \ No newline at end of file