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
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 * 330 * 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(" Battery Capacity Low !!!");
|
|
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();
|
|
}
|