diff --git a/.vscode/settings.json b/.vscode/settings.json
index bf2512d..a0bad4f 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -85,6 +85,7 @@
"task_pen_head.h": "c",
"setjmp.h": "c",
"algorithm": "c",
- "task_w600_ptc.h": "c"
+ "task_w600_ptc.h": "c",
+ "task_adc.h": "c"
}
}
\ No newline at end of file
diff --git a/keilp/cc_as_stc02_ps5ws.uvprojx b/keilp/cc_as_stc02_ps5ws.uvprojx
index 5646501..4de37ba 100644
--- a/keilp/cc_as_stc02_ps5ws.uvprojx
+++ b/keilp/cc_as_stc02_ps5ws.uvprojx
@@ -399,14 +399,19 @@
..\source\app\app_eeprom.c
- msp_adc.c
+ task_game.c
1
- ..\source\msp\msp_adc.c
+ ..\source\app\task_game.c
- task_game.c
+ task_w600_ptc.c
1
- ..\source\app\task_game.c
+ ..\source\app\task_w600_ptc.c
+
+
+ task_adc.c
+ 1
+ ..\source\app\task_adc.c
@@ -493,6 +498,11 @@
1
..\source\msp\msp_eeprom.c
+
+ msp_adc.c
+ 1
+ ..\source\msp\msp_adc.c
+
diff --git a/source/app/app_config.c b/source/app/app_config.c
index 0bf77ee..2c09f10 100644
--- a/source/app/app_config.c
+++ b/source/app/app_config.c
@@ -18,7 +18,7 @@ void L3_param_init(void)
G.tail[0] = TAIL0;
G.tail[1] = TAIL1;
- G.bat_percent = 0;
+ G.Vin = 0;
G.volume = 0x15;
//U8 i;
diff --git a/source/app/app_config.h b/source/app/app_config.h
index 6a536bf..4149a2c 100644
--- a/source/app/app_config.h
+++ b/source/app/app_config.h
@@ -107,8 +107,8 @@ typedef struct global_param
U8 head[2];
U8 tail[2];
- // 电量百分比
- U8 bat_percent;
+ // 电压
+ U16 Vin;
// 喇叭音量
U8 volume;
//调试模式
diff --git a/source/app/main.c b/source/app/main.c
index c57f6f9..f1379c3 100644
--- a/source/app/main.c
+++ b/source/app/main.c
@@ -105,12 +105,14 @@ void main(void)
{
s_nos_tick.t1s_heartbeat = 0;//置0清空
L0_uart0_uc('.');
- // L0_uart0_sendstr("ADC = ");
- // L0_uart0_us(L1_ADC_Read(12));
+ L0_uart0_sendstr("ADC = ");
+ L0_uart0_ushex(_s_task_adc.adc_val[_s_task_adc.index]);
+ L0_uart0_0d0a();
+ L0_uart0_sendstr("Vin = ");
+ L0_uart0_ushex(G.Vin);
// L2_WT2605B_Broadcast(&audio_tcp_noplan);
}
- // 游戏任务
- L3_task_game_handler(&_s_task_game);
+
// if (ts_oid.ok == 1)
// {
@@ -129,29 +131,29 @@ void main(void)
// L0_uart0_0d0a();
// L0_uart0_sendstr("oid_p");
// }
-
+
// 系统状态任务
L3_task_appstatus_handler(&_s_task_appstatus);
- // 系统状态测试任务
- // L3_task_AppTest_handler(&_s_task_apptest);
-
// 按键状态任务
L3_task_keystatus_handler(&_s_task_keystatus);
- // adc任务
- L3_task_Adc_handler(&_s_task_adc);
-
- // OID和WIFI任务
+ // WIFI任务
if (R.app_status != POW_OFF)
{
- // OID数据采集
- L1_Oid_readoid();
// WIFI数据解析
L3_uart2_wifi_parse();
L2_task_W600_flow_handle(&_s_task_w600_para);
+
+ // 游戏任务
+ L3_task_game_handler(&_s_task_game);
+
+ // adc任务
+ L3_task_Adc_handler(&_s_task_adc);
}
+ // 系统状态测试任务
+ // L3_task_AppTest_handler(&_s_task_apptest);
#if 0
if(s_uart0_rec.ok)
diff --git a/source/app/task_adc.c b/source/app/task_adc.c
index 83be702..f57adcb 100644
--- a/source/app/task_adc.c
+++ b/source/app/task_adc.c
@@ -2,6 +2,7 @@
#include "../msp/msp_adc.h"
#include "../app/app_config.h"
#include "../msp/uart0.h"
+#include "../bsp/bsp_WT2605B.h"
@@ -13,50 +14,81 @@ 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_300ms);
+ 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_300ms);
+ L2_task_go_Tdelay(D_task_ADC_COUNT,D_Tdelay_100ms);
}
else
{
- L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_300ms);
+ L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_100ms);
}
TTSS_Task_step(D_task_ADC_COUNT)
+// U8 i;
// 计算平均值
- U16 Aver = s->SUM / ADC_NUM;
+ 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;
// 计算方差
- U8 i;
- FP32 Variance = 0;
- for(i = 0; i < ADC_NUM; i++)
- {
- Variance += (s->adc_val[i] - Aver) * (s->adc_val[i] - Aver);
- }
- Variance /= ADC_NUM;
-
- // // 方差合格,计算电量,放到G,不合格丢弃
- // if ((U16)(Variance*10) < 2)
+ // for(i = 0; i < ADC_NUM; i++)
// {
- // Vin = (Aver / 0x1000) * 3.3;
- // Percent = Vin / 4.2
+ // S16 diff = s->adc_val[i] - s->Aver;
+ // s->Variance += diff >= 0 ? diff : -diff;
// }
- Aver = 0;
- L2_task_go_Tdelay(D_task_ADC_READ,D_Tdelay_300ms);
+ // 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();
}
\ No newline at end of file
diff --git a/source/app/task_adc.h b/source/app/task_adc.h
index 1c9e289..fcbf8e7 100644
--- a/source/app/task_adc.h
+++ b/source/app/task_adc.h
@@ -17,13 +17,23 @@
#include "../ctask/task.h"
#define ADC_NUM 10
+//电压:3.65v 剩余容量:10%
+#define Alarm_Vol 45
+// 最大次数
+#define Count_Max 5
typedef struct _s_task_adc
{
TS_task task;
U16 adc_val[ADC_NUM];
U8 index;
- U16 SUM;
+ U32 SUM;
+ U32 Aver;
+ U32 Variance;
+ U16 Vin;
+ U8 LowPower_Flag;
+ // 计数
+ U8 LowPower_Count;
}S_TASK_ADC;
extern S_TASK_ADC _s_task_adc;
diff --git a/source/app/task_appstatus.c b/source/app/task_appstatus.c
index 8189a48..6fb3cb7 100644
--- a/source/app/task_appstatus.c
+++ b/source/app/task_appstatus.c
@@ -18,6 +18,8 @@
#include "../bsp/bsp_config.h"
#include "../msp/uart0.h"
#include "../bsp/bsp_led.h"
+#include "../app/task_game.h"
+#include "../app/task_Adc.h"
#include "../app/task_w600.h"
#include "../bsp/bsp_wifi.h"
@@ -83,6 +85,11 @@ void L3_task_appstatus_handler(S_TASK_APPSTATUS *s)
L2_OID_WIFI_Open();
//wifi任务初始化
L3_task_W600_flow_init(W600_ST);
+ // Adc任务初始化
+ L3_task_Adc_init();
+ // game任务初始化
+ L3_task_game_init();
+
}
else if (s->status == WIFI_CONFIG)
diff --git a/source/app/task_w600.h b/source/app/task_w600.h
index ce0d675..52efdb9 100644
--- a/source/app/task_w600.h
+++ b/source/app/task_w600.h
@@ -110,9 +110,6 @@ struct _s_task_W600_Para
U8 Recieve_QueryAck_Flag;
// 发送提交标志 1发送提交 0不发送提交
U8 Send_Submit_Flag;
-
-
-
};
extern struct _s_task_W600_Para _s_task_w600_para;
diff --git a/source/bsp/bsp_WT2605B.c b/source/bsp/bsp_WT2605B.c
index b7fbbce..4c9401f 100644
--- a/source/bsp/bsp_WT2605B.c
+++ b/source/bsp/bsp_WT2605B.c
@@ -29,6 +29,8 @@ TS_SPEECH_AUDIO audio_tcp_shulte = {0x7E,0x07,0xA3,0x54,0x30,0x31,0x39,0x9
TS_SPEECH_AUDIO audio_tcp_complete = {0x7E,0x07,0xA3,0x54,0x30,0x32,0x30,0x90,0xEF}; //T020恭喜你,今天所有训练任务已完成
TS_SPEECH_AUDIO audio_tcp_noplan = {0x7E,0x07,0xA3,0x54,0x30,0x32,0x31,0x91,0xEF}; //T021今天暂无训练任务,可以进行自由训练哦
+TS_SPEECH_AUDIO audio_low_power = {0x7E,0x07,0xA3,0x54,0x30,0x32,0x32,0x92,0xEF}; //T022
+
TS_SPEECH_VOLUME volume_control = {0x7E,0x04,0xAE,0x1E,0xD0,0xEF}; //音量控制
diff --git a/source/bsp/bsp_WT2605B.h b/source/bsp/bsp_WT2605B.h
index 20cf27f..9669276 100644
--- a/source/bsp/bsp_WT2605B.h
+++ b/source/bsp/bsp_WT2605B.h
@@ -47,7 +47,9 @@ extern TS_SPEECH_AUDIO audio_tcp_maze;
extern TS_SPEECH_AUDIO audio_tcp_different;
extern TS_SPEECH_AUDIO audio_tcp_shulte;
extern TS_SPEECH_AUDIO audio_tcp_complete;
-extern TS_SPEECH_AUDIO audio_tcp_noplan;
+extern TS_SPEECH_AUDIO audio_tcp_noplan;
+
+extern TS_SPEECH_AUDIO audio_low_power;
extern TS_SPEECH_VOLUME volume_control;