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.

94 lines
2.0 KiB

#include "../app/task_adc.h"
#include "../msp/msp_adc.h"
#include "../app/app_config.h"
#include "../msp/uart0.h"
#include "../bsp/bsp_WT2605B.h"
S_TASK_ADC _s_task_adc;
void L3_task_Adc_init(void)
{
L1_task_init(&_s_task_adc.task);
_s_task_adc.index = 0;
_s_task_adc.SUM = 0;
_s_task_adc.LowPower_Flag = 0;
_s_task_adc.LowPower_Count = 0;
L3_task_s_go(_s_task_adc,D_task_init);
}
#define D_task_ADC_READ 0x50
#define D_task_ADC_COUNT 0x51
#define D_task_LOWPOWER_DETECT 0x52
void L3_task_Adc_handler(S_TASK_ADC *s)
{
TTSS_Task_init()
L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_100ms);
TTSS_Task_step(D_task_ADC_READ)
s->adc_val[_s_task_adc.index] = L1_ADC_Read(12);
s->SUM += s->adc_val[_s_task_adc.index++];
if (_s_task_adc.index >= 10)
{
_s_task_adc.index = 0;
L2_task_go_Tdelay(D_task_ADC_COUNT,D_Tdelay_100ms);
}
else
{
L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_100ms);
}
TTSS_Task_step(D_task_ADC_COUNT)
// U8 i;
// 计算平均值
s->Aver = s->SUM / ADC_NUM;
// L0_uart0_sendstr("s->SUM = ");
// L0_uart0_ulhex(s->SUM);
// L0_uart0_0d0a();
// L0_uart0_sendstr("s->Aver = ");
// L0_uart0_ushex(s->Aver);
s->SUM = 0;
// s->Variance = 0;
// 计算方差
// for(i = 0; i < ADC_NUM; i++)
// {
// S16 diff = s->adc_val[i] - s->Aver;
// s->Variance += diff >= 0 ? diff : -diff;
// }
// s->Variance /= ADC_NUM;
// if (s->Variance <= 200)
// {
// s->Vin = (s->Aver / 0x1000) * 33;
// }
// 分压 0.5
s->Vin = (s->Aver * 33 * 2) / 0x1000;
G.Vin = s->Vin;
L2_task_go_Tdelay(D_task_LOWPOWER_DETECT,D_Tdelay_100ms);
TTSS_Task_step(D_task_LOWPOWER_DETECT)
if (s->LowPower_Flag == 0)
{
if (s->Vin < Alarm_Vol)
{
s->LowPower_Count ++;
if (s->LowPower_Count > Count_Max)
{
L0_uart0_sendstr("s->Aver = ");
s->LowPower_Flag = 1;
// 语音提醒
L2_WT2605B_Broadcast(&audio_low_power);
s->LowPower_Count = 0;
}
}
else
{
s->LowPower_Count = 0;
}
}
L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_100ms);
TTSS_Task_end();
}