From b23939707af5152d4296c22537053eebae89eb96 Mon Sep 17 00:00:00 2001
From: Emmanuel Roux-Palomo <erouxpalom@laas.fr>
Date: Fri, 23 Jun 2023 05:25:19 +0000
Subject: [PATCH] Fix ADC Trigger interleaved and ADC Center Aligned

Fix ADC Trigger by using TIMCMP and CMP4 for ADC Update.
Fix get_leg_period_us for center aligned mode.
---
 .../zephyr/src/hrtim_common.c                    | 16 ++++++++--------
 .../src/voltage_mode/owntech_leg_driver.cpp      |  5 ++++-
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/zephyr/modules/owntech_hrtim_driver/zephyr/src/hrtim_common.c b/zephyr/modules/owntech_hrtim_driver/zephyr/src/hrtim_common.c
index 9c0e99f..404bc5b 100644
--- a/zephyr/modules/owntech_hrtim_driver/zephyr/src/hrtim_common.c
+++ b/zephyr/modules/owntech_hrtim_driver/zephyr/src/hrtim_common.c
@@ -62,16 +62,16 @@ void _hrtim_init_events_center_aligned(hrtim_tu_t leg1_tu, hrtim_tu_t leg2_tu)
 		LL_HRTIM_TIM_SetADCRollOverMode(HRTIM1, LL_HRTIM_TIMER_B, LL_HRTIM_ROLLOVER_MODE_PER);
 
 		// setting adc trigger
-		hrtim_adc_trigger_en(1, 1, LL_HRTIM_ADCTRIG_SRC13_TIMAPER);
-		hrtim_adc_trigger_en(3, 2, LL_HRTIM_ADCTRIG_SRC13_TIMBPER);
+		hrtim_adc_trigger_en(1, 1, LL_HRTIM_ADCTRIG_SRC13_TIMACMP4);
+		hrtim_adc_trigger_en(3, 2, LL_HRTIM_ADCTRIG_SRC13_TIMBCMP4);
 	}else if(leg1_tu == TIMA && leg2_tu == TIMC){
 		// setting the adc roll-over mode on period event
 		LL_HRTIM_TIM_SetADCRollOverMode(HRTIM1, LL_HRTIM_TIMER_A, LL_HRTIM_ROLLOVER_MODE_PER);
 		LL_HRTIM_TIM_SetADCRollOverMode(HRTIM1, LL_HRTIM_TIMER_C, LL_HRTIM_ROLLOVER_MODE_PER);
 
 		// setting adc trigger
-		hrtim_adc_trigger_en(3, 1, LL_HRTIM_ADCTRIG_SRC13_TIMAPER);
-		hrtim_adc_trigger_en(1, 3, LL_HRTIM_ADCTRIG_SRC13_TIMCPER);
+		hrtim_adc_trigger_en(3, 1, LL_HRTIM_ADCTRIG_SRC13_TIMACMP4);
+		hrtim_adc_trigger_en(1, 3, LL_HRTIM_ADCTRIG_SRC13_TIMCCMP4);
 	}
 }
 
@@ -87,11 +87,11 @@ void _hrtim_callback()
 void hrtim_update_adc_trig_interleaved(uint16_t new_trig, hrtim_tu_t leg1_tu, hrtim_tu_t leg2_tu)
 {
 	if(leg1_tu == TIMA && leg2_tu == TIMB){
-		hrtim_cmp_set(0, TIMA, CMP3xR, new_trig);
-		hrtim_cmp_set(0, TIMB, CMP3xR, new_trig);
+		hrtim_cmp_set(0, TIMA, CMP4xR, new_trig);
+		hrtim_cmp_set(0, TIMB, CMP4xR, new_trig);
 	}else if(leg1_tu == TIMA && leg2_tu == TIMC){
-		hrtim_cmp_set(0, TIMA, CMP3xR, new_trig);
-		hrtim_cmp_set(0, TIMC, CMP3xR, new_trig);
+		hrtim_cmp_set(0, TIMA, CMP4xR, new_trig);
+		hrtim_cmp_set(0, TIMC, CMP4xR, new_trig);
 	}
 }
 
diff --git a/zephyr/modules/owntech_hrtim_driver/zephyr/src/voltage_mode/owntech_leg_driver.cpp b/zephyr/modules/owntech_hrtim_driver/zephyr/src/voltage_mode/owntech_leg_driver.cpp
index bd61df1..46bf7e1 100644
--- a/zephyr/modules/owntech_hrtim_driver/zephyr/src/voltage_mode/owntech_leg_driver.cpp
+++ b/zephyr/modules/owntech_hrtim_driver/zephyr/src/voltage_mode/owntech_leg_driver.cpp
@@ -196,7 +196,10 @@ uint16_t leg_period(void)
 
 uint32_t leg_get_period_us()
 {
-    return period*184e-6;
+    if(LL_HRTIM_TIM_GetCountingMode(HRTIM1, LL_HRTIM_TIMER_A) == LL_HRTIM_COUNTING_MODE_UP_DOWN)
+        return period*2*184e-6;
+    else 
+        return period*184e-6;
 }
 
 uint8_t leg_numof(void)
-- 
GitLab