#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(); }