bug: 這版本單獨打電極2 & 電極4 都會有小波出現

依序用小工具輸入指令測試:
1. 設定電極1~4參數值, 把電極1~電極4設一樣
3000FF0206F00000004B00000889

2. 設pulse_cnt=3, 把電極1~電極4的pulse_cnt=3
3000FF0209F000000003

3. 打波形(電極1/電極2/電極3/電極4 單獨測)
3000FF020780
3000FF020740
3000FF020720
3000FF020710
This commit is contained in:
Roy_01
2024-09-03 14:38:41 +08:00
parent 906d684db0
commit 6e72b2cac2
2 changed files with 128 additions and 9 deletions
+127 -8
View File
@@ -344,6 +344,14 @@ static void set_cpg_pulse_parameter(uint8_t *ins)
pusle_gen[0].point_us[4] +
pusle_gen[0].point_us[5] +
pusle_gen[0].point_us[6]);
NRF_LOG_INFO("[%d] user idle = %d us", 1, pusle_gen[0].idle_us);
pusle_gen[0].idle_us = (pusle_gen[0].idle_us - (pusle_gen[0].point_us[0] +
pusle_gen[0].point_us[1] +
pusle_gen[0].point_us[2] +
pusle_gen[0].point_us[3] +
pusle_gen[0].point_us[4] +
pusle_gen[0].point_us[5] +
pusle_gen[0].point_us[6])) / 2;
NRF_LOG_INFO("[%d]a = %d us", 1, pusle_gen[0].point_us[0]);
NRF_LOG_INFO("[%d]b = %d us", 1, pusle_gen[0].point_us[1]);
NRF_LOG_INFO("[%d]c = %d us", 1, pusle_gen[0].point_us[2]);
@@ -379,6 +387,14 @@ static void set_cpg_pulse_parameter(uint8_t *ins)
pusle_gen[1].point_us[4] +
pusle_gen[1].point_us[5] +
pusle_gen[1].point_us[6]);
NRF_LOG_INFO("[%d] user idle = %d us", 2, pusle_gen[1].idle_us);
pusle_gen[1].idle_us = (pusle_gen[1].idle_us - (pusle_gen[1].point_us[0] +
pusle_gen[1].point_us[1] +
pusle_gen[1].point_us[2] +
pusle_gen[1].point_us[3] +
pusle_gen[1].point_us[4] +
pusle_gen[1].point_us[5] +
pusle_gen[1].point_us[6])) / 2;
NRF_LOG_INFO("[%d]a = %d us", 2, pusle_gen[1].point_us[0]);
NRF_LOG_INFO("[%d]b = %d us", 2, pusle_gen[1].point_us[1]);
NRF_LOG_INFO("[%d]c = %d us", 2, pusle_gen[1].point_us[2]);
@@ -413,6 +429,14 @@ static void set_cpg_pulse_parameter(uint8_t *ins)
pusle_gen[2].point_us[4] +
pusle_gen[2].point_us[5] +
pusle_gen[2].point_us[6]);
NRF_LOG_INFO("[%d] user idle = %d us", 3, pusle_gen[2].idle_us);
pusle_gen[2].idle_us = (pusle_gen[2].idle_us - (pusle_gen[2].point_us[0] +
pusle_gen[2].point_us[1] +
pusle_gen[2].point_us[2] +
pusle_gen[2].point_us[3] +
pusle_gen[2].point_us[4] +
pusle_gen[2].point_us[5] +
pusle_gen[2].point_us[6])) / 2;
NRF_LOG_INFO("[%d]a = %d us", 3, pusle_gen[2].point_us[0]);
NRF_LOG_INFO("[%d]b = %d us", 3, pusle_gen[2].point_us[1]);
NRF_LOG_INFO("[%d]c = %d us", 3, pusle_gen[2].point_us[2]);
@@ -447,6 +471,14 @@ static void set_cpg_pulse_parameter(uint8_t *ins)
pusle_gen[3].point_us[4] +
pusle_gen[3].point_us[5] +
pusle_gen[3].point_us[6]);
NRF_LOG_INFO("[%d] user idle = %d us", 4, pusle_gen[3].idle_us);
pusle_gen[3].idle_us = (pusle_gen[3].idle_us - (pusle_gen[3].point_us[0] +
pusle_gen[3].point_us[1] +
pusle_gen[3].point_us[2] +
pusle_gen[3].point_us[3] +
pusle_gen[3].point_us[4] +
pusle_gen[3].point_us[5] +
pusle_gen[3].point_us[6])) / 2;
NRF_LOG_INFO("[%d]a = %d us", 4, pusle_gen[3].point_us[0]);
NRF_LOG_INFO("[%d]b = %d us", 4, pusle_gen[3].point_us[1]);
NRF_LOG_INFO("[%d]c = %d us", 4, pusle_gen[3].point_us[2]);
@@ -564,32 +596,107 @@ static void stop_which_electrodes(uint8_t *ins)
uint8_t electrodes3_pulse_gen_dis = (ins[5] & 0b00100000) >> 5;
uint8_t electrodes4_pulse_gen_dis = (ins[5] & 0b00010000) >> 4;
if (electrodes1_pulse_gen_dis || electrodes2_pulse_gen_dis)
{
cpg11_pulse_stop(0);
NRF_LOG_INFO("stop electrodes1_pulse_gen");
NRF_LOG_INFO("stop electrodes2_pulse_gen");
p_pusle_genA[0].pulse_id = PULSE_ID_NULL;
p_pusle_genA[1].pulse_id = PULSE_ID_NULL;
}
if (electrodes3_pulse_gen_dis || electrodes4_pulse_gen_dis)
{
cpg11_pulse_stop(1);
NRF_LOG_INFO("stop electrodes3_pulse_gen");
NRF_LOG_INFO("stop electrodes4_pulse_gen");
p_pusle_genB[0].pulse_id = PULSE_ID_NULL;
p_pusle_genB[1].pulse_id = PULSE_ID_NULL;
}
for (int i=0; i<2; i++) {
NRF_LOG_INFO("pusle_genA[%d]pulse_id: %d", i, p_pusle_genA[i].pulse_id);
}
for (int i=0; i<2; i++) {
NRF_LOG_INFO("pusle_genB[%d]pulse_id: %d", i, p_pusle_genB[i].pulse_id);
}
NRF_LOG_INFO("\n\n")
}
static void suspend_which_electrodes(uint8_t *ins)
{
NRF_LOG_INFO("%s", __FUNCTION__);
uint8_t electrodes1_pulse_gen_dis = (ins[5] & 0b10000000) >> 7;
uint8_t electrodes2_pulse_gen_dis = (ins[5] & 0b01000000) >> 6;
uint8_t electrodes3_pulse_gen_dis = (ins[5] & 0b00100000) >> 5;
uint8_t electrodes4_pulse_gen_dis = (ins[5] & 0b00010000) >> 4;
if (electrodes1_pulse_gen_dis)
{
cpg11_pulse_suspend_by_pulse_id(p_pusle_genA[0].pulse_id);
p_pusle_genA[0].pulse_id = PULSE_ID_NULL;
NRF_LOG_INFO("stop electrodes1_pulse_gen");
NRF_LOG_INFO("suspend electrodes1_pulse_gen");
}
if (electrodes2_pulse_gen_dis)
{
cpg11_pulse_suspend_by_pulse_id(p_pusle_genA[1].pulse_id);
p_pusle_genA[1].pulse_id = PULSE_ID_NULL;
NRF_LOG_INFO("stop electrodes2_pulse_gen");
NRF_LOG_INFO("suspend electrodes2_pulse_gen");
}
if (electrodes3_pulse_gen_dis)
{
cpg11_pulse_suspend_by_pulse_id(p_pusle_genB[0].pulse_id);
p_pusle_genB[0].pulse_id = PULSE_ID_NULL;
NRF_LOG_INFO("stop electrodes3_pulse_gen");
NRF_LOG_INFO("suspend electrodes3_pulse_gen");
}
if (electrodes4_pulse_gen_dis)
{
cpg11_pulse_suspend_by_pulse_id(p_pusle_genB[1].pulse_id);
p_pusle_genB[1].pulse_id = PULSE_ID_NULL;
NRF_LOG_INFO("stop electrodes4_pulse_gen");
NRF_LOG_INFO("suspend electrodes4_pulse_gen");
}
for (int i=0; i<2; i++) {
NRF_LOG_INFO("pusle_genA[%d]pulse_id: %d", i, p_pusle_genA[i].pulse_id);
}
for (int i=0; i<2; i++) {
NRF_LOG_INFO("pusle_genB[%d]pulse_id: %d", i, p_pusle_genB[i].pulse_id);
}
NRF_LOG_INFO("\n\n")
}
static void resume_which_electrodes(uint8_t *ins)
{
NRF_LOG_INFO("%s", __FUNCTION__);
uint8_t electrodes1_pulse_gen_dis = (ins[5] & 0b10000000) >> 7;
uint8_t electrodes2_pulse_gen_dis = (ins[5] & 0b01000000) >> 6;
uint8_t electrodes3_pulse_gen_dis = (ins[5] & 0b00100000) >> 5;
uint8_t electrodes4_pulse_gen_dis = (ins[5] & 0b00010000) >> 4;
if (electrodes1_pulse_gen_dis)
{
cpg11_pulse_resume_by_pulse_id(p_pusle_genA[0].pulse_id);
NRF_LOG_INFO("resume electrodes1_pulse_gen");
}
if (electrodes2_pulse_gen_dis)
{
cpg11_pulse_resume_by_pulse_id(p_pusle_genA[1].pulse_id);
NRF_LOG_INFO("resume electrodes2_pulse_gen");
}
if (electrodes3_pulse_gen_dis)
{
cpg11_pulse_resume_by_pulse_id(p_pusle_genB[0].pulse_id);
NRF_LOG_INFO("resume electrodes3_pulse_gen");
}
if (electrodes4_pulse_gen_dis)
{
cpg11_pulse_resume_by_pulse_id(p_pusle_genB[1].pulse_id);
NRF_LOG_INFO("resume electrodes4_pulse_gen");
}
for (int i=0; i<2; i++) {
@@ -902,6 +1009,18 @@ void dev_mode_ctrl_cpg11_electrodes_task(uint8_t *ins)
set_cpg_pulse_cnt(ins);
break;
}
case 0xA0: {
suspend_which_electrodes(ins);
break;
}
case 0xA1: {
resume_which_electrodes(ins);
break;
}
}
}
+1 -1
View File
@@ -480,7 +480,7 @@ void cpg11_io_init(void)
pusle_gen_hw[i].private.p_pusle_gen[1].VBxL = 0xFFFFFFFF;
}
cpg_pulse_default_demo_ext();
//cpg_pulse_default_demo_ext();
}
#endif