GONEC_ARTERY_ADC_TASK/Src/TaskAdc.c

94 lines
1.7 KiB
C

//
// Created by cfif on 04.10.2022.
//
#include <stddef.h>
#include <SystemDelayInterface.h>
#include <TaskAdc.h>
#include <CmsisRtosThreadUtils.h>
#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;
vcc = env->vcc;
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);
env->vcc = 0;
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);
}
}