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:
+127
-8
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user