From cee859c9aeda07b2083760ce08afb1c7187f4037 Mon Sep 17 00:00:00 2001 From: Balazs Eszes Date: Sun, 9 Mar 2025 10:43:41 +0100 Subject: [PATCH] Evsys fix channel offset (0 meaning disconnected) Adds function to disconnect event generator --- include/hal/evsys.h | 11 +++++++++++ src/hal/evsys.c | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/hal/evsys.h b/include/hal/evsys.h index 7d48f0c..6392a22 100644 --- a/include/hal/evsys.h +++ b/include/hal/evsys.h @@ -42,6 +42,17 @@ void EVSYS_ConfigureGenerator(uint8_t channel, evsys_gen_edgesel edgsel, evsys_g */ void EVSYS_ConfigureUser(uint8_t user_channel, uint8_t event_generator); +/** + * @brief Disconnects the event user from the event generator + * + * @code + * EVSYS_DisconnectUser(EVENT_ID_USER_TC4_EVU); + * @endcode + * + * @param user_channel Event's consumer + */ +void EVSYS_DisconnectUser(uint8_t user_channel); + /** * @brief Acquires a free generator channel * diff --git a/src/hal/evsys.c b/src/hal/evsys.c index e9fc7c5..ee71413 100644 --- a/src/hal/evsys.c +++ b/src/hal/evsys.c @@ -11,7 +11,11 @@ void EVSYS_ConfigureGenerator(uint8_t channel, evsys_gen_edgesel edgsel, evsys_g } void EVSYS_ConfigureUser(uint8_t user_channel, uint8_t event_generator) { - EVSYS_REGS->EVSYS_USER = (event_generator << EVSYS_USER_CHANNEL_Pos) | user_channel; + EVSYS_REGS->EVSYS_USER = ((event_generator + 1) << EVSYS_USER_CHANNEL_Pos) | (user_channel); +} + +void EVSYS_DisconnectUser(uint8_t user_channel) { + EVSYS_REGS->EVSYS_USER = (0 << EVSYS_USER_CHANNEL_Pos) | (user_channel); } uint8_t EVSYS_AcquireGeneratorChannel(void) {