fix: replace 'pusle' with 'pulse'
This commit is contained in:
@@ -14,9 +14,9 @@
|
||||
|
||||
#define VERSION_DATE_YEAR 24
|
||||
#define VERSION_DATE_MONTH 9
|
||||
#define VERSION_DATE_DAY 11
|
||||
#define VERSION_DATE_HOUR 17
|
||||
#define VERSION_DATE_MINUTE 45
|
||||
#define VERSION_DATE_DAY 12
|
||||
#define VERSION_DATE_HOUR 9
|
||||
#define VERSION_DATE_MINUTE 23
|
||||
static void cis_version(uint8_t *ins, uint16_t size)
|
||||
{
|
||||
NRF_LOG_INFO("%s", __FUNCTION__);
|
||||
|
||||
+184
-184
@@ -56,9 +56,9 @@ const uint32_t pin_to_gpio_table[] = {
|
||||
|
||||
#define PULSE_GEN_A_NUMB 2
|
||||
#define PULSE_GEN_B_NUMB 2
|
||||
static pusle_gen_t p_pusle_genA[PULSE_GEN_A_NUMB];
|
||||
static pusle_gen_t p_pusle_genB[PULSE_GEN_B_NUMB];
|
||||
static pusle_gen_t pusle_gen[PULSE_GEN_A_NUMB + PULSE_GEN_B_NUMB];
|
||||
static pulse_gen_t p_pulse_genA[PULSE_GEN_A_NUMB];
|
||||
static pulse_gen_t p_pulse_genB[PULSE_GEN_B_NUMB];
|
||||
static pulse_gen_t pulse_gen[PULSE_GEN_A_NUMB + PULSE_GEN_B_NUMB];
|
||||
|
||||
static uint32_t bmd380pins_convert_to_gpio(uint32_t pin)
|
||||
{
|
||||
@@ -310,22 +310,22 @@ static void cpg11_electrodes(uint32_t electrodes_mode)
|
||||
}
|
||||
}
|
||||
|
||||
void reset_pusle(pusle_gen_t *p_pusle_gen)
|
||||
void reset_pulse(pulse_gen_t *p_pulse_gen)
|
||||
{
|
||||
p_pusle_gen->VAxH = 0xFFFFFFFF;
|
||||
p_pusle_gen->VAxL = 0xFFFFFFFF;
|
||||
p_pusle_gen->VBxH = 0xFFFFFFFF;
|
||||
p_pusle_gen->VBxL = 0xFFFFFFFF;
|
||||
p_pusle_gen->idle_us = 0;
|
||||
p_pusle_gen->point_us[0] = 0;
|
||||
p_pusle_gen->point_us[1] = 0;
|
||||
p_pusle_gen->point_us[2] = 0;
|
||||
p_pusle_gen->point_us[3] = 0;
|
||||
p_pusle_gen->point_us[4] = 0;
|
||||
p_pusle_gen->point_us[5] = 0;
|
||||
p_pusle_gen->point_us[6] = 0;
|
||||
p_pusle_gen->pulse_cnt = 1;
|
||||
p_pusle_gen->pulse_id = PULSE_ID_NULL;
|
||||
p_pulse_gen->VAxH = 0xFFFFFFFF;
|
||||
p_pulse_gen->VAxL = 0xFFFFFFFF;
|
||||
p_pulse_gen->VBxH = 0xFFFFFFFF;
|
||||
p_pulse_gen->VBxL = 0xFFFFFFFF;
|
||||
p_pulse_gen->idle_us = 0;
|
||||
p_pulse_gen->point_us[0] = 0;
|
||||
p_pulse_gen->point_us[1] = 0;
|
||||
p_pulse_gen->point_us[2] = 0;
|
||||
p_pulse_gen->point_us[3] = 0;
|
||||
p_pulse_gen->point_us[4] = 0;
|
||||
p_pulse_gen->point_us[5] = 0;
|
||||
p_pulse_gen->point_us[6] = 0;
|
||||
p_pulse_gen->pulse_cnt = 1;
|
||||
p_pulse_gen->pulse_id = PULSE_ID_NULL;
|
||||
}
|
||||
|
||||
void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
@@ -338,14 +338,14 @@ void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
uint32_t pulse_width_us = ins[6] << 24 | ins[7] << 16 | ins[8] << 8 | ins[9];
|
||||
uint32_t freq_hz = ins[10] << 24 | ins[11] << 16 | ins[12] << 8 | ins[13];
|
||||
|
||||
reset_pusle(&p_pusle_genA[0]);
|
||||
reset_pusle(&p_pusle_genA[1]);
|
||||
reset_pusle(&p_pusle_genB[0]);
|
||||
reset_pusle(&p_pusle_genB[1]);
|
||||
reset_pulse(&p_pulse_genA[0]);
|
||||
reset_pulse(&p_pulse_genA[1]);
|
||||
reset_pulse(&p_pulse_genB[0]);
|
||||
reset_pulse(&p_pulse_genB[1]);
|
||||
|
||||
if (electrodes1_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[0] = (pusle_gen_t) {
|
||||
pulse_gen[0] = (pulse_gen_t) {
|
||||
.VBxH = VB1H_PIN,
|
||||
.VBxL = VB1L_PIN,
|
||||
.VAxH = VA1H_PIN,
|
||||
@@ -366,36 +366,36 @@ void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
NRF_LOG_INFO("[%d]user freq_hz = %u Hz", 1, freq_hz);
|
||||
if (freq_hz == 0)
|
||||
{
|
||||
pusle_gen[0].idle_us = 0;
|
||||
pulse_gen[0].idle_us = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pusle_gen[0].idle_us = 1000000 / freq_hz - (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]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 1, pusle_gen[0].idle_us);
|
||||
pulse_gen[0].idle_us = 1000000 / freq_hz - (pulse_gen[0].point_us[0] + pulse_gen[0].point_us[1] + pulse_gen[0].point_us[2] +
|
||||
pulse_gen[0].point_us[3] + pulse_gen[0].point_us[4] + pulse_gen[0].point_us[5] +
|
||||
pulse_gen[0].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 1, pulse_gen[0].idle_us);
|
||||
|
||||
if (electrodes1_pulse_gen_sel && electrodes2_pulse_gen_sel) {
|
||||
pusle_gen[0].idle_us = (1000000 / freq_hz - (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]) *
|
||||
pulse_gen[0].idle_us = (1000000 / freq_hz - (pulse_gen[0].point_us[0] + pulse_gen[0].point_us[1] + pulse_gen[0].point_us[2] +
|
||||
pulse_gen[0].point_us[3] + pulse_gen[0].point_us[4] + pulse_gen[0].point_us[5] +
|
||||
pulse_gen[0].point_us[6]) *
|
||||
2) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("[%d]a = %u us", 1, pusle_gen[0].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 1, pusle_gen[0].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 1, pusle_gen[0].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 1, pusle_gen[0].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 1, pusle_gen[0].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 1, pusle_gen[0].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 1, pusle_gen[0].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 1, pusle_gen[0].idle_us);
|
||||
NRF_LOG_INFO("[%d]a = %u us", 1, pulse_gen[0].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 1, pulse_gen[0].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 1, pulse_gen[0].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 1, pulse_gen[0].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 1, pulse_gen[0].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 1, pulse_gen[0].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 1, pulse_gen[0].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 1, pulse_gen[0].idle_us);
|
||||
}
|
||||
|
||||
if (electrodes2_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[1] = (pusle_gen_t) {
|
||||
pulse_gen[1] = (pulse_gen_t) {
|
||||
.VBxH = VB2H_PIN,
|
||||
.VBxL = VB2L_PIN,
|
||||
.VAxH = VA2H_PIN,
|
||||
@@ -416,36 +416,36 @@ void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
NRF_LOG_INFO("[%d]user freq_hz = %u Hz", 2, freq_hz);
|
||||
if (freq_hz == 0)
|
||||
{
|
||||
pusle_gen[0].idle_us = 0;
|
||||
pulse_gen[0].idle_us = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pusle_gen[1].idle_us = (1000000 / freq_hz) - (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]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 2, pusle_gen[1].idle_us);
|
||||
pulse_gen[1].idle_us = (1000000 / freq_hz) - (pulse_gen[1].point_us[0] + pulse_gen[1].point_us[1] + pulse_gen[1].point_us[2] +
|
||||
pulse_gen[1].point_us[3] + pulse_gen[1].point_us[4] + pulse_gen[1].point_us[5] +
|
||||
pulse_gen[1].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 2, pulse_gen[1].idle_us);
|
||||
|
||||
if (electrodes1_pulse_gen_sel && electrodes2_pulse_gen_sel) {
|
||||
pusle_gen[1].idle_us = (1000000 / freq_hz - (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]) *
|
||||
pulse_gen[1].idle_us = (1000000 / freq_hz - (pulse_gen[1].point_us[0] + pulse_gen[1].point_us[1] + pulse_gen[1].point_us[2] +
|
||||
pulse_gen[1].point_us[3] + pulse_gen[1].point_us[4] + pulse_gen[1].point_us[5] +
|
||||
pulse_gen[1].point_us[6]) *
|
||||
2) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("[%d]a = %u us", 2, pusle_gen[1].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 2, pusle_gen[1].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 2, pusle_gen[1].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 2, pusle_gen[1].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 2, pusle_gen[1].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 2, pusle_gen[1].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 2, pusle_gen[1].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 2, pusle_gen[1].idle_us);
|
||||
NRF_LOG_INFO("[%d]a = %u us", 2, pulse_gen[1].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 2, pulse_gen[1].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 2, pulse_gen[1].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 2, pulse_gen[1].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 2, pulse_gen[1].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 2, pulse_gen[1].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 2, pulse_gen[1].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 2, pulse_gen[1].idle_us);
|
||||
}
|
||||
|
||||
if (electrodes3_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[2] = (pusle_gen_t) {
|
||||
pulse_gen[2] = (pulse_gen_t) {
|
||||
.VBxH = VB3H_PIN,
|
||||
.VBxL = VB3L_PIN,
|
||||
.VAxH = VA3H_PIN,
|
||||
@@ -466,35 +466,35 @@ void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
NRF_LOG_INFO("[%d]user freq_hz = %u Hz", 3, freq_hz);
|
||||
if (freq_hz == 0)
|
||||
{
|
||||
pusle_gen[0].idle_us = 0;
|
||||
pulse_gen[0].idle_us = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pusle_gen[2].idle_us = 1000000 / freq_hz - (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]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 3, pusle_gen[2].idle_us);
|
||||
pulse_gen[2].idle_us = 1000000 / freq_hz - (pulse_gen[2].point_us[0] + pulse_gen[2].point_us[1] + pulse_gen[2].point_us[2] +
|
||||
pulse_gen[2].point_us[3] + pulse_gen[2].point_us[4] + pulse_gen[2].point_us[5] +
|
||||
pulse_gen[2].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 3, pulse_gen[2].idle_us);
|
||||
if (electrodes3_pulse_gen_sel && electrodes4_pulse_gen_sel) {
|
||||
pusle_gen[2].idle_us = (1000000 / freq_hz - (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]) *
|
||||
pulse_gen[2].idle_us = (1000000 / freq_hz - (pulse_gen[2].point_us[0] + pulse_gen[2].point_us[1] + pulse_gen[2].point_us[2] +
|
||||
pulse_gen[2].point_us[3] + pulse_gen[2].point_us[4] + pulse_gen[2].point_us[5] +
|
||||
pulse_gen[2].point_us[6]) *
|
||||
2) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("[%d]a = %u us", 3, pusle_gen[2].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 3, pusle_gen[2].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 3, pusle_gen[2].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 3, pusle_gen[2].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 3, pusle_gen[2].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 3, pusle_gen[2].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 3, pusle_gen[2].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 3, pusle_gen[2].idle_us);
|
||||
NRF_LOG_INFO("[%d]a = %u us", 3, pulse_gen[2].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 3, pulse_gen[2].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 3, pulse_gen[2].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 3, pulse_gen[2].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 3, pulse_gen[2].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 3, pulse_gen[2].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 3, pulse_gen[2].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 3, pulse_gen[2].idle_us);
|
||||
}
|
||||
|
||||
if (electrodes4_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[3] = (pusle_gen_t) {
|
||||
pulse_gen[3] = (pulse_gen_t) {
|
||||
.VBxH = VB4H_PIN,
|
||||
.VBxL = VB4L_PIN,
|
||||
.VAxH = VA4H_PIN,
|
||||
@@ -515,30 +515,30 @@ void set_cpg_pulse_parameter(uint8_t *ins)
|
||||
NRF_LOG_INFO("[%d]user freq_hz = %u Hz", 4, freq_hz);
|
||||
if (freq_hz == 0)
|
||||
{
|
||||
pusle_gen[0].idle_us = 0;
|
||||
pulse_gen[0].idle_us = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
pusle_gen[3].idle_us = (1000000 / freq_hz) - (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]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 4, pusle_gen[3].idle_us);
|
||||
pulse_gen[3].idle_us = (1000000 / freq_hz) - (pulse_gen[3].point_us[0] + pulse_gen[3].point_us[1] + pulse_gen[3].point_us[2] +
|
||||
pulse_gen[3].point_us[3] + pulse_gen[3].point_us[4] + pulse_gen[3].point_us[5] +
|
||||
pulse_gen[3].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]user idle = %u us", 4, pulse_gen[3].idle_us);
|
||||
if (electrodes3_pulse_gen_sel && electrodes4_pulse_gen_sel) {
|
||||
pusle_gen[3].idle_us = (1000000 / freq_hz - (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]) *
|
||||
pulse_gen[3].idle_us = (1000000 / freq_hz - (pulse_gen[3].point_us[0] + pulse_gen[3].point_us[1] + pulse_gen[3].point_us[2] +
|
||||
pulse_gen[3].point_us[3] + pulse_gen[3].point_us[4] + pulse_gen[3].point_us[5] +
|
||||
pulse_gen[3].point_us[6]) *
|
||||
2) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("[%d]a = %u us", 4, pusle_gen[3].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 4, pusle_gen[3].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 4, pusle_gen[3].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 4, pusle_gen[3].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 4, pusle_gen[3].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 4, pusle_gen[3].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 4, pusle_gen[3].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 4, pusle_gen[3].idle_us);
|
||||
NRF_LOG_INFO("[%d]a = %u us", 4, pulse_gen[3].point_us[0]);
|
||||
NRF_LOG_INFO("[%d]b = %u us", 4, pulse_gen[3].point_us[1]);
|
||||
NRF_LOG_INFO("[%d]c = %u us", 4, pulse_gen[3].point_us[2]);
|
||||
NRF_LOG_INFO("[%d]d = %u us", 4, pulse_gen[3].point_us[3]);
|
||||
NRF_LOG_INFO("[%d]e = %u us", 4, pulse_gen[3].point_us[4]);
|
||||
NRF_LOG_INFO("[%d]f = %u us", 4, pulse_gen[3].point_us[5]);
|
||||
NRF_LOG_INFO("[%d]g = %u us", 4, pulse_gen[3].point_us[6]);
|
||||
NRF_LOG_INFO("[%d]idle = %u us", 4, pulse_gen[3].idle_us);
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("set ok......");
|
||||
@@ -556,125 +556,125 @@ static void start_which_electrodes(uint8_t *ins)
|
||||
inum = 0;
|
||||
if (electrodes1_pulse_gen_en)
|
||||
{
|
||||
p_pusle_genA[inum] = pusle_gen[0];
|
||||
p_pusle_genA[inum].pulse_id = PULSE_ID_A;
|
||||
nrf_gpio_pin_clear(p_pusle_genA[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genA[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[inum].VAxH);
|
||||
p_pulse_genA[inum] = pulse_gen[0];
|
||||
p_pulse_genA[inum].pulse_id = PULSE_ID_A;
|
||||
nrf_gpio_pin_clear(p_pulse_genA[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genA[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[inum].VAxH);
|
||||
NRF_LOG_INFO("start electrodes1_pulse_gen");
|
||||
}
|
||||
else
|
||||
{
|
||||
p_pusle_genA[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VAxH = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VAxH = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
inum = 1;
|
||||
if (electrodes2_pulse_gen_en)
|
||||
{
|
||||
p_pusle_genA[inum] = pusle_gen[1];
|
||||
p_pusle_genA[inum].pulse_id = PULSE_ID_B;
|
||||
nrf_gpio_pin_clear(p_pusle_genA[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genA[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[inum].VAxH);
|
||||
p_pulse_genA[inum] = pulse_gen[1];
|
||||
p_pulse_genA[inum].pulse_id = PULSE_ID_B;
|
||||
nrf_gpio_pin_clear(p_pulse_genA[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genA[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[inum].VAxH);
|
||||
NRF_LOG_INFO("start electrodes2_pulse_gen");
|
||||
}
|
||||
else
|
||||
{
|
||||
p_pusle_genA[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pusle_genA[inum].VAxH = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pulse_genA[inum].VAxH = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
if (electrodes1_pulse_gen_en || electrodes2_pulse_gen_en)
|
||||
{
|
||||
cpg11_pulse_init(0, &p_pusle_genA[0], 2);
|
||||
cpg11_pulse_start(0, &p_pusle_genA[0]);
|
||||
cpg11_pulse_init(0, &p_pulse_genA[0], 2);
|
||||
cpg11_pulse_start(0, &p_pulse_genA[0]);
|
||||
}
|
||||
|
||||
inum = 0;
|
||||
if (electrodes3_pulse_gen_en)
|
||||
{
|
||||
p_pusle_genB[inum] = pusle_gen[2];
|
||||
p_pusle_genB[inum].pulse_id = PULSE_ID_C;
|
||||
nrf_gpio_pin_clear(p_pusle_genB[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genB[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[inum].VAxH);
|
||||
p_pulse_genB[inum] = pulse_gen[2];
|
||||
p_pulse_genB[inum].pulse_id = PULSE_ID_C;
|
||||
nrf_gpio_pin_clear(p_pulse_genB[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genB[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[inum].VAxH);
|
||||
NRF_LOG_INFO("start electrodes3_pulse_gen");
|
||||
}
|
||||
else
|
||||
{
|
||||
p_pusle_genB[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VAxH = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VAxH = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
inum = 1;
|
||||
if (electrodes4_pulse_gen_en)
|
||||
{
|
||||
p_pusle_genB[inum] = pusle_gen[3];
|
||||
p_pusle_genB[inum].pulse_id = PULSE_ID_D;
|
||||
nrf_gpio_pin_clear(p_pusle_genB[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genB[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[inum].VAxH);
|
||||
p_pulse_genB[inum] = pulse_gen[3];
|
||||
p_pulse_genB[inum].pulse_id = PULSE_ID_D;
|
||||
nrf_gpio_pin_clear(p_pulse_genB[inum].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[inum].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genB[inum].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[inum].VAxH);
|
||||
NRF_LOG_INFO("start electrodes4_pulse_gen");
|
||||
}
|
||||
else
|
||||
{
|
||||
p_pusle_genB[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pusle_genB[inum].VAxH = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VBxL = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VBxH = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VAxL = 0xFFFFFFFF;
|
||||
p_pulse_genB[inum].VAxH = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
if (electrodes3_pulse_gen_en || electrodes4_pulse_gen_en)
|
||||
{
|
||||
cpg11_pulse_init(1, &p_pusle_genB[0], 2);
|
||||
cpg11_pulse_start(1, &p_pusle_genB[0]);
|
||||
cpg11_pulse_init(1, &p_pulse_genB[0], 2);
|
||||
cpg11_pulse_start(1, &p_pulse_genB[0]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]VAxH = %d", i, p_pusle_genA[i].VAxH);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]VAxL = %d", i, p_pusle_genA[i].VAxL);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]VBxH = %d", i, p_pusle_genA[i].VBxH);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]VBxL = %d", i, p_pusle_genA[i].VBxL);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]a = %u us", i, p_pusle_genA[i].point_us[0]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]b = %u us", i, p_pusle_genA[i].point_us[1]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]c = %u us", i, p_pusle_genA[i].point_us[2]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]d = %u us", i, p_pusle_genA[i].point_us[3]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]e = %u us", i, p_pusle_genA[i].point_us[4]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]f = %u us", i, p_pusle_genA[i].point_us[5]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]g = %u us", i, p_pusle_genA[i].point_us[6]);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]idle = %u us", i, p_pusle_genA[i].idle_us);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]pulse_cnt = 0x%08X cnt", i, p_pusle_genA[i].pulse_cnt);
|
||||
NRF_LOG_INFO("p_pusle_genA[%d]pulse_id = %u", i, p_pusle_genA[i].pulse_id);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]VAxH = %d", i, p_pulse_genA[i].VAxH);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]VAxL = %d", i, p_pulse_genA[i].VAxL);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]VBxH = %d", i, p_pulse_genA[i].VBxH);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]VBxL = %d", i, p_pulse_genA[i].VBxL);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]a = %u us", i, p_pulse_genA[i].point_us[0]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]b = %u us", i, p_pulse_genA[i].point_us[1]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]c = %u us", i, p_pulse_genA[i].point_us[2]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]d = %u us", i, p_pulse_genA[i].point_us[3]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]e = %u us", i, p_pulse_genA[i].point_us[4]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]f = %u us", i, p_pulse_genA[i].point_us[5]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]g = %u us", i, p_pulse_genA[i].point_us[6]);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]idle = %u us", i, p_pulse_genA[i].idle_us);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]pulse_cnt = 0x%08X cnt", i, p_pulse_genA[i].pulse_cnt);
|
||||
NRF_LOG_INFO("p_pulse_genA[%d]pulse_id = %u", i, p_pulse_genA[i].pulse_id);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]VAxH = %d", i, p_pusle_genB[i].VAxH);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]VAxL = %d", i, p_pusle_genB[i].VAxL);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]VBxH = %d", i, p_pusle_genB[i].VBxH);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]VBxL = %d", i, p_pusle_genB[i].VBxL);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]a = %u us", i, p_pusle_genB[i].point_us[0]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]b = %u us", i, p_pusle_genB[i].point_us[1]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]c = %u us", i, p_pusle_genB[i].point_us[2]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]d = %u us", i, p_pusle_genB[i].point_us[3]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]e = %u us", i, p_pusle_genB[i].point_us[4]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]f = %u us", i, p_pusle_genB[i].point_us[5]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]g = %u us", i, p_pusle_genB[i].point_us[6]);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]idle = %u us", i, p_pusle_genB[i].idle_us);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]pulse_cnt = 0x%08X cnt", i, p_pusle_genB[i].pulse_cnt);
|
||||
NRF_LOG_INFO("p_pusle_genB[%d]pulse_id = %u", i, p_pusle_genB[i].pulse_id);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]VAxH = %d", i, p_pulse_genB[i].VAxH);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]VAxL = %d", i, p_pulse_genB[i].VAxL);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]VBxH = %d", i, p_pulse_genB[i].VBxH);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]VBxL = %d", i, p_pulse_genB[i].VBxL);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]a = %u us", i, p_pulse_genB[i].point_us[0]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]b = %u us", i, p_pulse_genB[i].point_us[1]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]c = %u us", i, p_pulse_genB[i].point_us[2]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]d = %u us", i, p_pulse_genB[i].point_us[3]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]e = %u us", i, p_pulse_genB[i].point_us[4]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]f = %u us", i, p_pulse_genB[i].point_us[5]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]g = %u us", i, p_pulse_genB[i].point_us[6]);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]idle = %u us", i, p_pulse_genB[i].idle_us);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]pulse_cnt = 0x%08X cnt", i, p_pulse_genB[i].pulse_cnt);
|
||||
NRF_LOG_INFO("p_pulse_genB[%d]pulse_id = %u", i, p_pulse_genB[i].pulse_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -691,8 +691,8 @@ static void stop_which_electrodes(uint8_t *ins)
|
||||
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;
|
||||
p_pulse_genA[0].pulse_id = PULSE_ID_NULL;
|
||||
p_pulse_genA[1].pulse_id = PULSE_ID_NULL;
|
||||
}
|
||||
|
||||
if (electrodes3_pulse_gen_dis || electrodes4_pulse_gen_dis)
|
||||
@@ -700,17 +700,17 @@ static void stop_which_electrodes(uint8_t *ins)
|
||||
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;
|
||||
p_pulse_genB[0].pulse_id = PULSE_ID_NULL;
|
||||
p_pulse_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);
|
||||
NRF_LOG_INFO("pulse_genA[%d]pulse_id: %d", i, p_pulse_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("pulse_genB[%d]pulse_id: %d", i, p_pulse_genB[i].pulse_id);
|
||||
}
|
||||
|
||||
NRF_LOG_INFO("\n\n")
|
||||
@@ -726,25 +726,25 @@ static void suspend_which_electrodes(uint8_t *ins)
|
||||
|
||||
if (electrodes1_pulse_gen_dis)
|
||||
{
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pusle_genA[0].pulse_id);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pulse_genA[0].pulse_id);
|
||||
NRF_LOG_INFO("suspend electrodes1_pulse_gen");
|
||||
}
|
||||
|
||||
if (electrodes2_pulse_gen_dis)
|
||||
{
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pusle_genA[1].pulse_id);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pulse_genA[1].pulse_id);
|
||||
NRF_LOG_INFO("suspend electrodes2_pulse_gen");
|
||||
}
|
||||
|
||||
if (electrodes3_pulse_gen_dis)
|
||||
{
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pusle_genB[0].pulse_id);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pulse_genB[0].pulse_id);
|
||||
NRF_LOG_INFO("suspend electrodes3_pulse_gen");
|
||||
}
|
||||
|
||||
if (electrodes4_pulse_gen_dis)
|
||||
{
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pusle_genB[1].pulse_id);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pulse_genB[1].pulse_id);
|
||||
NRF_LOG_INFO("suspend electrodes4_pulse_gen");
|
||||
}
|
||||
}
|
||||
@@ -759,25 +759,25 @@ static void resume_which_electrodes(uint8_t *ins)
|
||||
|
||||
if (electrodes1_pulse_gen_dis)
|
||||
{
|
||||
cpg11_pulse_resume_by_pulse_id(p_pusle_genA[0].pulse_id);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pulse_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);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pulse_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);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pulse_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);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pulse_genB[1].pulse_id);
|
||||
NRF_LOG_INFO("resume electrodes4_pulse_gen");
|
||||
}
|
||||
}
|
||||
@@ -793,26 +793,26 @@ static void set_cpg_pulse_cnt(uint8_t *ins)
|
||||
|
||||
if (electrodes1_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[0].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[1] pulse_cnt = %u cnt", pusle_gen[0].pulse_cnt);
|
||||
pulse_gen[0].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[1] pulse_cnt = %u cnt", pulse_gen[0].pulse_cnt);
|
||||
}
|
||||
|
||||
if (electrodes2_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[1].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[2] pulse_cnt = %u cnt", pusle_gen[1].pulse_cnt);
|
||||
pulse_gen[1].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[2] pulse_cnt = %u cnt", pulse_gen[1].pulse_cnt);
|
||||
}
|
||||
|
||||
if (electrodes3_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[2].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[3] pulse_cnt = %u cnt", pusle_gen[2].pulse_cnt);
|
||||
pulse_gen[2].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[3] pulse_cnt = %u cnt", pulse_gen[2].pulse_cnt);
|
||||
}
|
||||
|
||||
if (electrodes4_pulse_gen_sel)
|
||||
{
|
||||
pusle_gen[3].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[4] pulse_cnt = %u cnt", pusle_gen[3].pulse_cnt);
|
||||
pulse_gen[3].pulse_cnt = pulse_cnt;
|
||||
NRF_LOG_INFO("[4] pulse_cnt = %u cnt", pulse_gen[3].pulse_cnt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+164
-164
@@ -20,50 +20,50 @@ typedef struct
|
||||
NRF_TIMER_Type *TMR_A;
|
||||
NRF_TIMER_Type *TMR_B;
|
||||
uint32_t IRQn;
|
||||
pusle_gen_t *p_pusle_gen;
|
||||
pulse_gen_t *p_pulse_gen;
|
||||
struct
|
||||
{
|
||||
pusle_gen_t *p_pusle_gen;
|
||||
pulse_gen_t *p_pulse_gen;
|
||||
uint32_t len;
|
||||
uint32_t select;
|
||||
} private;
|
||||
} pusle_gen_hw_t;
|
||||
} pulse_gen_hw_t;
|
||||
|
||||
pusle_gen_hw_t pusle_gen_hw[] = {
|
||||
pulse_gen_hw_t pulse_gen_hw[] = {
|
||||
{.gpiote_idx = { 0, 1, 2, 3 },
|
||||
.TMR_A = NRF_TIMER1,
|
||||
.TMR_B = NRF_TIMER3,
|
||||
.IRQn = TIMER3_IRQn,
|
||||
.p_pusle_gen = NULL,
|
||||
.p_pulse_gen = NULL,
|
||||
.private = { NULL, 0, 0 }},
|
||||
{.gpiote_idx = { 4, 5, 6, 7 },
|
||||
.TMR_A = NRF_TIMER2,
|
||||
.TMR_B = NRF_TIMER4,
|
||||
.IRQn = TIMER4_IRQn,
|
||||
.p_pusle_gen = NULL,
|
||||
.p_pulse_gen = NULL,
|
||||
.private = { NULL, 0, 0 }},
|
||||
};
|
||||
|
||||
__STATIC_INLINE void cpg11_tmr_cb(uint32_t hw_idx)
|
||||
{
|
||||
if (pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[4])
|
||||
if (pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[4])
|
||||
{
|
||||
pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[4] = 0;
|
||||
pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[4] = 0;
|
||||
|
||||
uint32_t sel = pusle_gen_hw[hw_idx].private.select;
|
||||
uint32_t sel = pulse_gen_hw[hw_idx].private.select;
|
||||
|
||||
if (pusle_gen_hw[hw_idx].private.p_pusle_gen[sel].pulse_cnt > 0)
|
||||
if (pulse_gen_hw[hw_idx].private.p_pulse_gen[sel].pulse_cnt > 0)
|
||||
{
|
||||
pusle_gen_hw[hw_idx].private.p_pusle_gen[sel].pulse_cnt--;
|
||||
pulse_gen_hw[hw_idx].private.p_pulse_gen[sel].pulse_cnt--;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < pusle_gen_hw[hw_idx].private.len; i++)
|
||||
for (uint32_t i = 0; i < pulse_gen_hw[hw_idx].private.len; i++)
|
||||
{
|
||||
sel = (sel + 1) % pusle_gen_hw[hw_idx].private.len;
|
||||
if (pusle_gen_hw[hw_idx].private.p_pusle_gen[sel].pulse_cnt > 0)
|
||||
sel = (sel + 1) % pulse_gen_hw[hw_idx].private.len;
|
||||
if (pulse_gen_hw[hw_idx].private.p_pulse_gen[sel].pulse_cnt > 0)
|
||||
{
|
||||
pusle_gen_hw[hw_idx].private.select = sel;
|
||||
cpg11_pulse_start(hw_idx, &pusle_gen_hw[hw_idx].private.p_pusle_gen[sel]);
|
||||
pulse_gen_hw[hw_idx].private.select = sel;
|
||||
cpg11_pulse_start(hw_idx, &pulse_gen_hw[hw_idx].private.p_pulse_gen[sel]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -82,17 +82,17 @@ void TIMER4_IRQHandler(void)
|
||||
|
||||
void cpg11_pulse_suspend_by_pulse_id(uint32_t pulse_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < COUNTOF(pusle_gen_hw); i++)
|
||||
for (uint32_t i = 0; i < COUNTOF(pulse_gen_hw); i++)
|
||||
{
|
||||
for (uint32_t j = 0; j < pusle_gen_hw[i].private.len; j++)
|
||||
for (uint32_t j = 0; j < pulse_gen_hw[i].private.len; j++)
|
||||
{
|
||||
if (pusle_gen_hw[i].private.p_pusle_gen[j].pulse_id == pulse_id)
|
||||
if (pulse_gen_hw[i].private.p_pulse_gen[j].pulse_id == pulse_id)
|
||||
{
|
||||
taskENTER_CRITICAL();
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VAxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VBxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VAxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VBxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VAxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VBxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VAxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VBxL = 0xFFFFFFFF;
|
||||
taskEXIT_CRITICAL();
|
||||
}
|
||||
}
|
||||
@@ -101,17 +101,17 @@ void cpg11_pulse_suspend_by_pulse_id(uint32_t pulse_id)
|
||||
|
||||
void cpg11_pulse_resume_by_pulse_id(uint32_t pulse_id)
|
||||
{
|
||||
for (uint32_t i = 0; i < COUNTOF(pusle_gen_hw); i++)
|
||||
for (uint32_t i = 0; i < COUNTOF(pulse_gen_hw); i++)
|
||||
{
|
||||
for (uint32_t j = 0; j < pusle_gen_hw[i].private.len; j++)
|
||||
for (uint32_t j = 0; j < pulse_gen_hw[i].private.len; j++)
|
||||
{
|
||||
if (pusle_gen_hw[i].private.p_pusle_gen[j].pulse_id == pulse_id)
|
||||
if (pulse_gen_hw[i].private.p_pulse_gen[j].pulse_id == pulse_id)
|
||||
{
|
||||
taskENTER_CRITICAL();
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VAxH = pusle_gen_hw[i].p_pusle_gen[j].VAxH;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VBxH = pusle_gen_hw[i].p_pusle_gen[j].VBxH;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VAxL = pusle_gen_hw[i].p_pusle_gen[j].VAxL;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[j].VBxL = pusle_gen_hw[i].p_pusle_gen[j].VBxL;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VAxH = pulse_gen_hw[i].p_pulse_gen[j].VAxH;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VBxH = pulse_gen_hw[i].p_pulse_gen[j].VBxH;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VAxL = pulse_gen_hw[i].p_pulse_gen[j].VAxL;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[j].VBxL = pulse_gen_hw[i].p_pulse_gen[j].VBxL;
|
||||
taskEXIT_CRITICAL();
|
||||
}
|
||||
}
|
||||
@@ -120,141 +120,141 @@ void cpg11_pulse_resume_by_pulse_id(uint32_t pulse_id)
|
||||
|
||||
void cpg11_pulse_stop(uint32_t hw_idx)
|
||||
{
|
||||
pusle_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pusle_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
|
||||
sd_nvic_DisableIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_DisableIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
}
|
||||
|
||||
void cpg11_pulse_start(uint32_t hw_idx, pusle_gen_t *p_pusle_gen)
|
||||
void cpg11_pulse_start(uint32_t hw_idx, pulse_gen_t *p_pulse_gen)
|
||||
{
|
||||
pusle_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pusle_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
|
||||
sd_nvic_DisableIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_DisableIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
|
||||
nrf_gpiote_task_configure(pusle_gen_hw[hw_idx].gpiote_idx[0], p_pusle_gen->VBxH, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pusle_gen_hw[hw_idx].gpiote_idx[1], p_pusle_gen->VBxL, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
nrf_gpiote_task_configure(pusle_gen_hw[hw_idx].gpiote_idx[2], p_pusle_gen->VAxH, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pusle_gen_hw[hw_idx].gpiote_idx[3], p_pusle_gen->VAxL, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw[hw_idx].gpiote_idx[0], p_pulse_gen->VBxH, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw[hw_idx].gpiote_idx[1], p_pulse_gen->VBxL, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw[hw_idx].gpiote_idx[2], p_pulse_gen->VAxH, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw[hw_idx].gpiote_idx[3], p_pulse_gen->VAxL, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
|
||||
nrf_gpiote_task_enable(pusle_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_enable(pusle_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_enable(pusle_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_enable(pusle_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
|
||||
uint32_t offs = 8 * hw_idx;
|
||||
|
||||
NRF_PPI->CH[offs + 0].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[offs + 0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[0]];
|
||||
NRF_PPI->CH[offs + 0].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[offs + 0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[0]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 0));
|
||||
|
||||
NRF_PPI->CH[offs + 1].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[offs + 1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[1]];
|
||||
NRF_PPI->CH[offs + 1].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[offs + 1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[1]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 1));
|
||||
|
||||
NRF_PPI->CH[offs + 2].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[2];
|
||||
NRF_PPI->CH[offs + 2].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[1]];
|
||||
NRF_PPI->CH[offs + 2].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[2];
|
||||
NRF_PPI->CH[offs + 2].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[1]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 2));
|
||||
|
||||
NRF_PPI->CH[offs + 3].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[3];
|
||||
NRF_PPI->CH[offs + 3].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[0]];
|
||||
NRF_PPI->FORK[offs + 3].TEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_B->TASKS_START;
|
||||
NRF_PPI->CH[offs + 3].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_A->EVENTS_COMPARE[3];
|
||||
NRF_PPI->CH[offs + 3].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[0]];
|
||||
NRF_PPI->FORK[offs + 3].TEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_B->TASKS_START;
|
||||
NRF_PPI->CHENSET = (1 << (offs + 3));
|
||||
|
||||
NRF_PPI->CH[offs + 4].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[offs + 4].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[2]];
|
||||
NRF_PPI->CH[offs + 4].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[offs + 4].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[2]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 4));
|
||||
|
||||
NRF_PPI->CH[offs + 5].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[offs + 5].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[3]];
|
||||
NRF_PPI->CH[offs + 5].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[offs + 5].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[3]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 5));
|
||||
|
||||
NRF_PPI->CH[offs + 6].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[2];
|
||||
NRF_PPI->CH[offs + 6].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[3]];
|
||||
NRF_PPI->CH[offs + 6].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[2];
|
||||
NRF_PPI->CH[offs + 6].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[3]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 6));
|
||||
|
||||
NRF_PPI->CH[offs + 7].EEP = (uint32_t)&pusle_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[3];
|
||||
NRF_PPI->CH[offs + 7].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw[hw_idx].gpiote_idx[2]];
|
||||
NRF_PPI->CH[offs + 7].EEP = (uint32_t)&pulse_gen_hw[hw_idx].TMR_B->EVENTS_COMPARE[3];
|
||||
NRF_PPI->CH[offs + 7].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw[hw_idx].gpiote_idx[2]];
|
||||
NRF_PPI->CHENSET = (1 << (offs + 7));
|
||||
|
||||
pusle_gen_hw[hw_idx].TMR_B->TASKS_CLEAR = 1;
|
||||
pusle_gen_hw[hw_idx].TMR_A->TASKS_CLEAR = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_B->TASKS_CLEAR = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->TASKS_CLEAR = 1;
|
||||
|
||||
pusle_gen_hw[hw_idx].TMR_B->CC[0] = 1 + p_pusle_gen->point_us[3] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_B->CC[1] = pusle_gen_hw[hw_idx].TMR_B->CC[0] + p_pusle_gen->point_us[4] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_B->CC[2] = pusle_gen_hw[hw_idx].TMR_B->CC[1] + p_pusle_gen->point_us[5] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_B->CC[3] = pusle_gen_hw[hw_idx].TMR_B->CC[2] + p_pusle_gen->point_us[6] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_B->CC[4] = pusle_gen_hw[hw_idx].TMR_B->CC[3] + p_pusle_gen->idle_us * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_B->SHORTS = NRF_TIMER_SHORT_COMPARE4_STOP_MASK | NRF_TIMER_SHORT_COMPARE4_CLEAR_MASK;
|
||||
pusle_gen_hw[hw_idx].TMR_B->INTENSET = NRF_TIMER_INT_COMPARE4_MASK;
|
||||
pulse_gen_hw[hw_idx].TMR_B->CC[0] = 1 + p_pulse_gen->point_us[3] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_B->CC[1] = pulse_gen_hw[hw_idx].TMR_B->CC[0] + p_pulse_gen->point_us[4] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_B->CC[2] = pulse_gen_hw[hw_idx].TMR_B->CC[1] + p_pulse_gen->point_us[5] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_B->CC[3] = pulse_gen_hw[hw_idx].TMR_B->CC[2] + p_pulse_gen->point_us[6] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_B->CC[4] = pulse_gen_hw[hw_idx].TMR_B->CC[3] + p_pulse_gen->idle_us * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_B->SHORTS = NRF_TIMER_SHORT_COMPARE4_STOP_MASK | NRF_TIMER_SHORT_COMPARE4_CLEAR_MASK;
|
||||
pulse_gen_hw[hw_idx].TMR_B->INTENSET = NRF_TIMER_INT_COMPARE4_MASK;
|
||||
|
||||
pusle_gen_hw[hw_idx].TMR_A->CC[0] = 1;
|
||||
pusle_gen_hw[hw_idx].TMR_A->CC[1] = pusle_gen_hw[hw_idx].TMR_A->CC[0] + p_pusle_gen->point_us[0] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_A->CC[2] = pusle_gen_hw[hw_idx].TMR_A->CC[1] + p_pusle_gen->point_us[1] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_A->CC[3] = pusle_gen_hw[hw_idx].TMR_A->CC[2] + p_pusle_gen->point_us[2] * 16;
|
||||
pusle_gen_hw[hw_idx].TMR_A->SHORTS = NRF_TIMER_SHORT_COMPARE3_STOP_MASK | NRF_TIMER_SHORT_COMPARE3_CLEAR_MASK;
|
||||
pulse_gen_hw[hw_idx].TMR_A->CC[0] = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->CC[1] = pulse_gen_hw[hw_idx].TMR_A->CC[0] + p_pulse_gen->point_us[0] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_A->CC[2] = pulse_gen_hw[hw_idx].TMR_A->CC[1] + p_pulse_gen->point_us[1] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_A->CC[3] = pulse_gen_hw[hw_idx].TMR_A->CC[2] + p_pulse_gen->point_us[2] * 16;
|
||||
pulse_gen_hw[hw_idx].TMR_A->SHORTS = NRF_TIMER_SHORT_COMPARE3_STOP_MASK | NRF_TIMER_SHORT_COMPARE3_CLEAR_MASK;
|
||||
|
||||
sd_nvic_EnableIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_EnableIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
|
||||
pusle_gen_hw[hw_idx].TMR_A->TASKS_START = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->TASKS_START = 1;
|
||||
}
|
||||
|
||||
void cpg11_pulse_init(uint32_t hw_idx, pusle_gen_t *p_pusle_gen, uint32_t len)
|
||||
void cpg11_pulse_init(uint32_t hw_idx, pulse_gen_t *p_pulse_gen, uint32_t len)
|
||||
{
|
||||
taskENTER_CRITICAL();
|
||||
|
||||
if (pusle_gen_hw[hw_idx].private.p_pusle_gen != NULL)
|
||||
if (pulse_gen_hw[hw_idx].private.p_pulse_gen != NULL)
|
||||
{
|
||||
pusle_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pusle_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_B->TASKS_STOP = 1;
|
||||
pulse_gen_hw[hw_idx].TMR_A->TASKS_STOP = 1;
|
||||
|
||||
sd_nvic_DisableIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pusle_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_DisableIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
sd_nvic_ClearPendingIRQ(pulse_gen_hw[hw_idx].IRQn);
|
||||
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pusle_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[0]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[1]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[2]);
|
||||
nrf_gpiote_task_disable(pulse_gen_hw[hw_idx].gpiote_idx[3]);
|
||||
|
||||
vPortFree(pusle_gen_hw[hw_idx].private.p_pusle_gen);
|
||||
vPortFree(pulse_gen_hw[hw_idx].private.p_pulse_gen);
|
||||
}
|
||||
|
||||
pusle_gen_hw[hw_idx].p_pusle_gen = p_pusle_gen;
|
||||
pusle_gen_hw[hw_idx].private.len = len;
|
||||
pusle_gen_hw[hw_idx].private.select = 0;
|
||||
pulse_gen_hw[hw_idx].p_pulse_gen = p_pulse_gen;
|
||||
pulse_gen_hw[hw_idx].private.len = len;
|
||||
pulse_gen_hw[hw_idx].private.select = 0;
|
||||
|
||||
pusle_gen_hw[hw_idx].private.p_pusle_gen = pvPortMalloc(sizeof(pusle_gen_t) * len);
|
||||
memcpy(pusle_gen_hw[hw_idx].private.p_pusle_gen, pusle_gen_hw[hw_idx].p_pusle_gen, sizeof(*p_pusle_gen) * len);
|
||||
pulse_gen_hw[hw_idx].private.p_pulse_gen = pvPortMalloc(sizeof(pulse_gen_t) * len);
|
||||
memcpy(pulse_gen_hw[hw_idx].private.p_pulse_gen, pulse_gen_hw[hw_idx].p_pulse_gen, sizeof(*p_pulse_gen) * len);
|
||||
|
||||
taskEXIT_CRITICAL();
|
||||
};
|
||||
|
||||
void cpg_pulse_default_demo_ext(void)
|
||||
{
|
||||
uint32_t pusle_gen_numb = 2;
|
||||
uint32_t pulse_gen_numb = 2;
|
||||
|
||||
pusle_gen_t *p_pusle_genA = pvPortMalloc(sizeof(pusle_gen_t) * pusle_gen_numb);
|
||||
pusle_gen_t *p_pusle_genB = pvPortMalloc(sizeof(pusle_gen_t) * pusle_gen_numb);
|
||||
pulse_gen_t *p_pulse_genA = pvPortMalloc(sizeof(pulse_gen_t) * pulse_gen_numb);
|
||||
pulse_gen_t *p_pulse_genB = pvPortMalloc(sizeof(pulse_gen_t) * pulse_gen_numb);
|
||||
|
||||
memset(p_pusle_genA, 0x00, sizeof(pusle_gen_t) * pusle_gen_numb);
|
||||
memset(p_pusle_genB, 0x00, sizeof(pusle_gen_t) * pusle_gen_numb);
|
||||
memset(p_pulse_genA, 0x00, sizeof(pulse_gen_t) * pulse_gen_numb);
|
||||
memset(p_pulse_genB, 0x00, sizeof(pulse_gen_t) * pulse_gen_numb);
|
||||
|
||||
if (pusle_gen_numb > 0)
|
||||
if (pulse_gen_numb > 0)
|
||||
{
|
||||
p_pusle_genA[0] = (pusle_gen_t) {
|
||||
p_pulse_genA[0] = (pulse_gen_t) {
|
||||
.VBxH = VB1H_PIN,
|
||||
.VBxL = VB1L_PIN,
|
||||
.VAxH = VA1H_PIN,
|
||||
@@ -272,9 +272,9 @@ void cpg_pulse_default_demo_ext(void)
|
||||
};
|
||||
}
|
||||
|
||||
if (pusle_gen_numb > 1)
|
||||
if (pulse_gen_numb > 1)
|
||||
{
|
||||
p_pusle_genA[1] = (pusle_gen_t) {
|
||||
p_pulse_genA[1] = (pulse_gen_t) {
|
||||
.VBxH = VB2H_PIN,
|
||||
.VBxL = VB2L_PIN,
|
||||
.VAxH = VA2H_PIN,
|
||||
@@ -292,9 +292,9 @@ void cpg_pulse_default_demo_ext(void)
|
||||
};
|
||||
}
|
||||
|
||||
if (pusle_gen_numb > 0)
|
||||
if (pulse_gen_numb > 0)
|
||||
{
|
||||
p_pusle_genB[0] = (pusle_gen_t) {
|
||||
p_pulse_genB[0] = (pulse_gen_t) {
|
||||
.VBxH = VB3H_PIN,
|
||||
.VBxL = VB3L_PIN,
|
||||
.VAxH = VA3H_PIN,
|
||||
@@ -312,9 +312,9 @@ void cpg_pulse_default_demo_ext(void)
|
||||
};
|
||||
}
|
||||
|
||||
if (pusle_gen_numb > 1)
|
||||
if (pulse_gen_numb > 1)
|
||||
{
|
||||
p_pusle_genB[1] = (pusle_gen_t) {
|
||||
p_pulse_genB[1] = (pulse_gen_t) {
|
||||
.VBxH = VB4H_PIN,
|
||||
.VBxL = VB4L_PIN,
|
||||
.VAxH = VA4H_PIN,
|
||||
@@ -332,47 +332,47 @@ void cpg_pulse_default_demo_ext(void)
|
||||
};
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < pusle_gen_numb; i++)
|
||||
for (uint32_t i = 0; i < pulse_gen_numb; i++)
|
||||
{
|
||||
nrf_gpio_pin_clear(p_pusle_genA[i].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[i].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genA[i].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genA[i].VAxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genA[i].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[i].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genA[i].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genA[i].VAxH);
|
||||
}
|
||||
|
||||
/*
|
||||
for (uint32_t i = 0; i < pusle_gen_numb; i++)
|
||||
for (uint32_t i = 0; i < pulse_gen_numb; i++)
|
||||
{
|
||||
nrf_gpio_pin_clear(p_pusle_genB[i].VBxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[i].VBxH);
|
||||
nrf_gpio_pin_clear(p_pusle_genB[i].VAxL);
|
||||
nrf_gpio_pin_set(p_pusle_genB[i].VAxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genB[i].VBxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[i].VBxH);
|
||||
nrf_gpio_pin_clear(p_pulse_genB[i].VAxL);
|
||||
nrf_gpio_pin_set(p_pulse_genB[i].VAxH);
|
||||
}
|
||||
*/
|
||||
|
||||
cpg11_pulse_init(0, p_pusle_genA, pusle_gen_numb);
|
||||
cpg11_pulse_init(0, p_pulse_genA, pulse_gen_numb);
|
||||
|
||||
// cpg11_pulse_init(1, p_pusle_genB, pusle_gen_numb);
|
||||
// cpg11_pulse_init(1, p_pulse_genB, pulse_gen_numb);
|
||||
|
||||
cpg11_pulse_start(0, p_pusle_genA);
|
||||
cpg11_pulse_start(0, p_pulse_genA);
|
||||
|
||||
// cpg11_pulse_start(1, p_pusle_genB);
|
||||
// cpg11_pulse_start(1, p_pulse_genB);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
vTaskDelay(10);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pusle_genA[0].pulse_id);
|
||||
cpg11_pulse_suspend_by_pulse_id(p_pulse_genA[0].pulse_id);
|
||||
vTaskDelay(10);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pusle_genA[0].pulse_id);
|
||||
cpg11_pulse_resume_by_pulse_id(p_pulse_genA[0].pulse_id);
|
||||
}
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pusle_gen[0].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pusle_gen[1].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pusle_gen[2].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pusle_gen[3].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pusle_gen[4].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pulse_gen[0].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pulse_gen[1].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pulse_gen[2].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pulse_gen[3].pulse_id);
|
||||
// cpg11_pulse_suspend_by_pulse_id(p_pulse_gen[4].pulse_id);
|
||||
|
||||
vPortFree(p_pusle_genA);
|
||||
vPortFree(p_pusle_genB);
|
||||
vPortFree(p_pulse_genA);
|
||||
vPortFree(p_pulse_genB);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@@ -443,37 +443,37 @@ void cpg11_io_init(void)
|
||||
nrf_gpio_cfg_input(AIN0_PIN, NRF_GPIO_PIN_NOPULL);
|
||||
nrf_gpio_cfg_input(AIN1_PIN, NRF_GPIO_PIN_NOPULL);
|
||||
|
||||
for (uint32_t i = 0; i < COUNTOF(pusle_gen_hw); i++)
|
||||
for (uint32_t i = 0; i < COUNTOF(pulse_gen_hw); i++)
|
||||
{
|
||||
pusle_gen_hw[i].TMR_B->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pusle_gen_hw[i].TMR_B->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pusle_gen_hw[i].TMR_B->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
pulse_gen_hw[i].TMR_B->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pulse_gen_hw[i].TMR_B->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pulse_gen_hw[i].TMR_B->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
|
||||
pusle_gen_hw[i].TMR_A->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pusle_gen_hw[i].TMR_A->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pusle_gen_hw[i].TMR_A->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
pulse_gen_hw[i].TMR_A->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pulse_gen_hw[i].TMR_A->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pulse_gen_hw[i].TMR_A->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
|
||||
sd_nvic_SetPriority(pusle_gen_hw[i].IRQn, _PRIO_APP_HIGH);
|
||||
sd_nvic_SetPriority(pulse_gen_hw[i].IRQn, _PRIO_APP_HIGH);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
pusle_gen_hw[i].p_pusle_gen[0].VAxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[0].VBxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[0].VAxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[0].VBxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[1].VAxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[1].VBxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[1].VAxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].p_pusle_gen[1].VBxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[0].VAxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[0].VBxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[0].VAxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[0].VBxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[1].VAxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[1].VBxH = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[1].VAxL = 0xFFFFFFFF;
|
||||
pusle_gen_hw[i].private.p_pusle_gen[1].VBxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[0].VAxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[0].VBxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[0].VAxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[0].VBxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[1].VAxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[1].VBxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[1].VAxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].p_pulse_gen[1].VBxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[0].VAxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[0].VBxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[0].VAxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[0].VBxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[1].VAxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[1].VBxH = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[1].VAxL = 0xFFFFFFFF;
|
||||
pulse_gen_hw[i].private.p_pulse_gen[1].VBxL = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
// cpg_pulse_default_demo_ext();
|
||||
|
||||
+3
-3
@@ -72,7 +72,7 @@ extern "C"
|
||||
uint32_t point_us[7]; // toggle point timestamp
|
||||
uint32_t pulse_cnt; // min: 1, max: 0xFFFFFFFF
|
||||
uint32_t pulse_id; // NO_USE_IRQ / USE_TIMER1_IRQ / USE_TIMER2_IRQ
|
||||
} pusle_gen_t;
|
||||
} pulse_gen_t;
|
||||
|
||||
void spim_xfer(uint32_t cs_pin,
|
||||
nrf_spim_mode_t spi_mode,
|
||||
@@ -82,8 +82,8 @@ extern "C"
|
||||
uint16_t rx_buffer_length);
|
||||
|
||||
void cpg11_io_init(void);
|
||||
void cpg11_pulse_init(uint32_t hw_idx, pusle_gen_t *p_pusle_gen, uint32_t len);
|
||||
void cpg11_pulse_start(uint32_t idx, pusle_gen_t *p_pusle_gen);
|
||||
void cpg11_pulse_init(uint32_t hw_idx, pulse_gen_t *p_pulse_gen, uint32_t len);
|
||||
void cpg11_pulse_start(uint32_t idx, pulse_gen_t *p_pulse_gen);
|
||||
void cpg11_pulse_stop(uint32_t hw_idx);
|
||||
void cpg11_pulse_suspend_by_pulse_id(uint32_t pulse_id);
|
||||
void cpg11_pulse_resume_by_pulse_id(uint32_t pulse_id);
|
||||
|
||||
+41
-41
@@ -82,7 +82,7 @@ typedef struct
|
||||
uint32_t pulse_idle; // min: 2, max: 32767, unit: us
|
||||
uint32_t pulse_width; // min: 2, max: 32767, unit: us,
|
||||
uint32_t pulse_cnt; // min: 1, max: 0xFFFFFFFF
|
||||
} pusle_gen_t;
|
||||
} pulse_gen_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -90,9 +90,9 @@ typedef struct
|
||||
NRF_TIMER_Type *pulse_tmr;
|
||||
uint32_t pulse_irq_n;
|
||||
uint32_t pulse_cnt;
|
||||
} pusle_gen_hw_t;
|
||||
} pulse_gen_hw_t;
|
||||
|
||||
pusle_gen_hw_t pusle_gen_hw = {
|
||||
pulse_gen_hw_t pulse_gen_hw = {
|
||||
.gpiote_idx = {0, 1},
|
||||
.pulse_tmr = NRF_TIMER3,
|
||||
.pulse_irq_n = TIMER3_IRQn,
|
||||
@@ -101,73 +101,73 @@ pusle_gen_hw_t pusle_gen_hw = {
|
||||
|
||||
void TIMER3_IRQHandler(void)
|
||||
{
|
||||
if (pusle_gen_hw.pulse_tmr->EVENTS_COMPARE[1])
|
||||
if (pulse_gen_hw.pulse_tmr->EVENTS_COMPARE[1])
|
||||
{
|
||||
pusle_gen_hw.pulse_tmr->EVENTS_COMPARE[1] = 0;
|
||||
pusle_gen_hw.pulse_cnt--;
|
||||
if (pusle_gen_hw.pulse_cnt == 1)
|
||||
pulse_gen_hw.pulse_tmr->EVENTS_COMPARE[1] = 0;
|
||||
pulse_gen_hw.pulse_cnt--;
|
||||
if (pulse_gen_hw.pulse_cnt == 1)
|
||||
{
|
||||
pusle_gen_hw.pulse_tmr->SHORTS |= NRF_TIMER_SHORT_COMPARE1_STOP_MASK;
|
||||
pulse_gen_hw.pulse_tmr->SHORTS |= NRF_TIMER_SHORT_COMPARE1_STOP_MASK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool pel10_pulse_gen(pusle_gen_t *p_pusle_gen)
|
||||
bool pel10_pulse_gen(pulse_gen_t *p_pulse_gen)
|
||||
{
|
||||
/* hardware limitation */
|
||||
if (p_pusle_gen->pulse_cnt == 0 ||
|
||||
p_pusle_gen->pulse_idle < MIN_PULSE_IDLE ||
|
||||
p_pusle_gen->pulse_width < MIN_PULSE_WIDTH ||
|
||||
p_pusle_gen->pulse_idle > MAX_PULSE_IDLE ||
|
||||
p_pusle_gen->pulse_width > MAX_PULSE_WIDTH)
|
||||
if (p_pulse_gen->pulse_cnt == 0 ||
|
||||
p_pulse_gen->pulse_idle < MIN_PULSE_IDLE ||
|
||||
p_pulse_gen->pulse_width < MIN_PULSE_WIDTH ||
|
||||
p_pulse_gen->pulse_idle > MAX_PULSE_IDLE ||
|
||||
p_pulse_gen->pulse_width > MAX_PULSE_WIDTH)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
pusle_gen_hw.pulse_cnt = p_pusle_gen->pulse_cnt;
|
||||
pulse_gen_hw.pulse_cnt = p_pulse_gen->pulse_cnt;
|
||||
|
||||
pusle_gen_hw.pulse_tmr->TASKS_STOP = 1;
|
||||
pulse_gen_hw.pulse_tmr->TASKS_STOP = 1;
|
||||
|
||||
sd_nvic_DisableIRQ(pusle_gen_hw.pulse_irq_n);
|
||||
sd_nvic_ClearPendingIRQ(pusle_gen_hw.pulse_irq_n);
|
||||
sd_nvic_DisableIRQ(pulse_gen_hw.pulse_irq_n);
|
||||
sd_nvic_ClearPendingIRQ(pulse_gen_hw.pulse_irq_n);
|
||||
|
||||
nrf_gpiote_task_configure(pusle_gen_hw.gpiote_idx[0], p_pusle_gen->anode_pin, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pusle_gen_hw.gpiote_idx[1], p_pusle_gen->cathode_pin, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw.gpiote_idx[0], p_pulse_gen->anode_pin, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_HIGH);
|
||||
nrf_gpiote_task_configure(pulse_gen_hw.gpiote_idx[1], p_pulse_gen->cathode_pin, NRF_GPIOTE_POLARITY_TOGGLE, NRF_GPIOTE_INITIAL_VALUE_LOW);
|
||||
|
||||
nrf_gpiote_task_enable(pusle_gen_hw.gpiote_idx[0]);
|
||||
nrf_gpiote_task_enable(pusle_gen_hw.gpiote_idx[1]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw.gpiote_idx[0]);
|
||||
nrf_gpiote_task_enable(pulse_gen_hw.gpiote_idx[1]);
|
||||
|
||||
NRF_PPI->CH[0].EEP = (uint32_t)&pusle_gen_hw.pulse_tmr->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw.gpiote_idx[0]];
|
||||
NRF_PPI->FORK[0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw.gpiote_idx[1]];
|
||||
NRF_PPI->CH[0].EEP = (uint32_t)&pulse_gen_hw.pulse_tmr->EVENTS_COMPARE[0];
|
||||
NRF_PPI->CH[0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw.gpiote_idx[0]];
|
||||
NRF_PPI->FORK[0].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw.gpiote_idx[1]];
|
||||
NRF_PPI->CHENSET = (1 << (0));
|
||||
|
||||
NRF_PPI->CH[1].EEP = (uint32_t)&pusle_gen_hw.pulse_tmr->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw.gpiote_idx[0]];
|
||||
NRF_PPI->FORK[1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pusle_gen_hw.gpiote_idx[1]];
|
||||
NRF_PPI->CH[1].EEP = (uint32_t)&pulse_gen_hw.pulse_tmr->EVENTS_COMPARE[1];
|
||||
NRF_PPI->CH[1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw.gpiote_idx[0]];
|
||||
NRF_PPI->FORK[1].TEP = (uint32_t)&NRF_GPIOTE->TASKS_OUT[pulse_gen_hw.gpiote_idx[1]];
|
||||
NRF_PPI->CHENSET = (1 << (1));
|
||||
|
||||
pusle_gen_hw.pulse_tmr->TASKS_CLEAR = 1;
|
||||
pulse_gen_hw.pulse_tmr->TASKS_CLEAR = 1;
|
||||
|
||||
pusle_gen_hw.pulse_tmr->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pusle_gen_hw.pulse_tmr->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pusle_gen_hw.pulse_tmr->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
pusle_gen_hw.pulse_tmr->CC[0] = p_pusle_gen->pulse_idle * 16;
|
||||
pusle_gen_hw.pulse_tmr->CC[1] = pusle_gen_hw.pulse_tmr->CC[0] + p_pusle_gen->pulse_width * 16;
|
||||
pusle_gen_hw.pulse_tmr->SHORTS = pusle_gen_hw.pulse_cnt > 1 ? NRF_TIMER_SHORT_COMPARE1_CLEAR_MASK : NRF_TIMER_SHORT_COMPARE1_STOP_MASK;
|
||||
pusle_gen_hw.pulse_tmr->INTENSET = NRF_TIMER_INT_COMPARE1_MASK;
|
||||
pulse_gen_hw.pulse_tmr->PRESCALER = NRF_TIMER_FREQ_16MHz;
|
||||
pulse_gen_hw.pulse_tmr->MODE = NRF_TIMER_MODE_TIMER;
|
||||
pulse_gen_hw.pulse_tmr->BITMODE = NRF_TIMER_BIT_WIDTH_32;
|
||||
pulse_gen_hw.pulse_tmr->CC[0] = p_pulse_gen->pulse_idle * 16;
|
||||
pulse_gen_hw.pulse_tmr->CC[1] = pulse_gen_hw.pulse_tmr->CC[0] + p_pulse_gen->pulse_width * 16;
|
||||
pulse_gen_hw.pulse_tmr->SHORTS = pulse_gen_hw.pulse_cnt > 1 ? NRF_TIMER_SHORT_COMPARE1_CLEAR_MASK : NRF_TIMER_SHORT_COMPARE1_STOP_MASK;
|
||||
pulse_gen_hw.pulse_tmr->INTENSET = NRF_TIMER_INT_COMPARE1_MASK;
|
||||
|
||||
sd_nvic_SetPriority(pusle_gen_hw.pulse_irq_n, _PRIO_APP_HIGH);
|
||||
sd_nvic_EnableIRQ(pusle_gen_hw.pulse_irq_n);
|
||||
sd_nvic_SetPriority(pulse_gen_hw.pulse_irq_n, _PRIO_APP_HIGH);
|
||||
sd_nvic_EnableIRQ(pulse_gen_hw.pulse_irq_n);
|
||||
|
||||
pusle_gen_hw.pulse_tmr->TASKS_START = 1;
|
||||
pulse_gen_hw.pulse_tmr->TASKS_START = 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void pel10_pulse_gen_demo(void)
|
||||
{
|
||||
pusle_gen_t pusle_gen = {
|
||||
pulse_gen_t pulse_gen = {
|
||||
.anode_pin = ANODE_PIN,
|
||||
.cathode_pin = CATHODE_PIN,
|
||||
.pulse_width = 10,
|
||||
@@ -175,7 +175,7 @@ void pel10_pulse_gen_demo(void)
|
||||
.pulse_cnt = 0xFFFFFFFF
|
||||
};
|
||||
|
||||
if (pel10_pulse_gen(&pusle_gen) == false)
|
||||
if (pel10_pulse_gen(&pulse_gen) == false)
|
||||
{
|
||||
// fail handling
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user