You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.6 KiB

////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.h
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
#ifndef _APP_TASK_ADC_H
#define _APP_TASK_ADC_H
#include "../app/app_config.h"
#include "../ctask/task.h"
#include "../clib/clib.h"
#define ADC_CHANNEL_STATUS_UNREADY 0 //UnReady状态,不能读取
#define ADC_CHANNEL_STATUS_READY 1 //ready状态,可以读取
//AD_CHANNEL_SAMPLE 采样
#define MAX_OUT_NUM 6
typedef struct _s_task_adc_channel_sample
{
TS_task task;
vU8 status;
vU8 ch;
vU32 adcval;
vU32 pool;
vU8 n;
vU32 out[MAX_OUT_NUM];
}S_TASK_ADC_CHANNEL_SAMPLE;
//AD_BLUR_MID 中值滤波
typedef struct _s_task_adc_blur_mid
{
TS_task task;
vU8 ch;
vU8 max;
vU32 in[MAX_OUT_NUM];
vU32 midval;
vU8 n;
vU32 out[MAX_OUT_NUM];
}S_TASK_ADC_BLUR_MID;
//AD_BLUR_AVG 均值滤波
typedef struct _s_task_adc_blur_avg
{
TS_task task;
vU8 ch;
vU8 max;
vU32 in[MAX_OUT_NUM];
vU32 avgval;
vU8 n;
vU32 out[MAX_OUT_NUM];
}S_TASK_ADC_BLUR_AVG;
//AD_BLUR_SHIFT 移位滤波
typedef struct _s_task_adc_blur_shift
{
TS_task task;
vU8 ch;
vU8 n;
vU8 h;
vU8 shiftreg[3];
//vU8 max;
vU32 in;
vU32 sum[3];
vU32 shiftval[3];
vU32 out[3][MAX_OUT_NUM];
}S_TASK_ADC_BLUR_SHIFT;
//AD_BLUR_DECIDE 输出判定
typedef struct _s_task_adc_blur_out
{
TS_task task;
vU8 ch;
vU32 in[2];
U32 threshold[2];
vU8 h;
vU8 oldnum;
vU8 newnum;
vU32 newout;
vU8 n;
}S_TASK_ADC_BLUR_OUT;
//AD_BLUR_SHOW 显示
typedef struct _s_task_adc_blur_show
{
TS_task task;
vU32 rough_weight;
}S_TASK_ADC_BLUR_SHOW;
extern S_TASK_ADC_CHANNEL_SAMPLE ts_adc_channel_samples[D_ADC_CHANNEL_NUM];
//extern S_TASK_ADC_BLUR_MID ts_adc_blur_mid[D_ADC_CHANNEL_NUM];
extern S_TASK_ADC_BLUR_AVG ts_adc_blur_avg[D_ADC_CHANNEL_NUM];
extern S_TASK_ADC_BLUR_SHIFT ts_adc_blur_shift[D_ADC_CHANNEL_NUM];
extern S_TASK_ADC_BLUR_OUT ts_adc_blur_out[D_ADC_CHANNEL_NUM];
extern S_TASK_ADC_BLUR_SHOW ts_adc_blur_show;
extern void L3_task_adc_init(U8 ch);
extern void L3_task_show_init(void);
extern void L3_task_adc_handler(U8 ch);
extern void L3_task_adc_init_handler(void);
extern void L3_task_adc_channel_switch_handler(void);
extern void L3_task_adc_filter_show(S_TASK_ADC_BLUR_SHOW *s);
#endif // #ifndef _APP_TASK_ADC_H