From d8b82b6edf73607933a347ecdefa56bb4f43d5df Mon Sep 17 00:00:00 2001 From: Roy_01 Date: Thu, 12 Sep 2024 09:23:24 +0800 Subject: [PATCH] fix: replace 'pusle' with 'pulse' --- cpg.c | 6 +- cpg11_dev_mode.c | 368 +++++++++++++++++++++++------------------------ cpg11_io.c | 328 +++++++++++++++++++++--------------------- cpg11_io.h | 6 +- pel10_io.c | 82 +++++------ 5 files changed, 395 insertions(+), 395 deletions(-) diff --git a/cpg.c b/cpg.c index 75c1866..473c3f9 100644 --- a/cpg.c +++ b/cpg.c @@ -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__); diff --git a/cpg11_dev_mode.c b/cpg11_dev_mode.c index 6057d0b..bc8c29e 100644 --- a/cpg11_dev_mode.c +++ b/cpg11_dev_mode.c @@ -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); } } diff --git a/cpg11_io.c b/cpg11_io.c index 9a04e0d..80a31ff 100644 --- a/cpg11_io.c +++ b/cpg11_io.c @@ -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(); diff --git a/cpg11_io.h b/cpg11_io.h index 49772f9..bb50137 100644 --- a/cpg11_io.h +++ b/cpg11_io.h @@ -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); diff --git a/pel10_io.c b/pel10_io.c index 39078e1..dfee511 100644 --- a/pel10_io.c +++ b/pel10_io.c @@ -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 }