From 52409cb35af8c09a319386c2098bf02fb1b65fd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
Date: Wed, 18 Sep 2019 03:17:52 +0200
Subject: [PATCH] Use TMR3 instead of TMR5 for interrupts from epicardium

Any reason to use TMR5 except preventing the use of PWM on the IR LED?

TMR4 is used for the LCD backlight it seems.
---
 epicardium/api/control.c            | 6 +++---
 epicardium/api/interrupt-receiver.c | 4 ++--
 epicardium/api/interrupt-sender.c   | 2 +-
 l0dables/lib/crt.s                  | 2 +-
 l0dables/lib/hardware.c             | 2 +-
 pycardium/mphalport.c               | 4 ++--
 6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/epicardium/api/control.c b/epicardium/api/control.c
index deff43301..82f77074e 100644
--- a/epicardium/api/control.c
+++ b/epicardium/api/control.c
@@ -74,7 +74,7 @@ void __core1_init(void)
 	/*
 	 * Clear any pending API interrupts.
 	 */
-	TMR_IntClear(MXC_TMR5);
+	TMR_IntClear(MXC_TMR3);
 
 	/*
 	 * Disable the SysTick
@@ -181,8 +181,8 @@ void __core1_init(void)
 	/*
 	 * Clear any pending API interrupts.
 	 */
-	TMR_IntClear(MXC_TMR5);
-	NVIC_ClearPendingIRQ(TMR5_IRQn);
+	TMR_IntClear(MXC_TMR3);
+	NVIC_ClearPendingIRQ(TMR3_IRQn);
 
 	/*
 	 * Jump to payload's reset handler
diff --git a/epicardium/api/interrupt-receiver.c b/epicardium/api/interrupt-receiver.c
index f9856423f..e11d591d5 100644
--- a/epicardium/api/interrupt-receiver.c
+++ b/epicardium/api/interrupt-receiver.c
@@ -6,9 +6,9 @@
 void __dispatch_isr(api_int_id_t);
 
 /* Timer Interrupt used for control char notification */
-void TMR5_IRQHandler(void)
+void TMR3_IRQHandler(void)
 {
-	TMR_IntClear(MXC_TMR5);
+	TMR_IntClear(MXC_TMR3);
 	__dispatch_isr(API_CALL_MEM->int_id);
 	API_CALL_MEM->int_id = (-1);
 }
diff --git a/epicardium/api/interrupt-sender.c b/epicardium/api/interrupt-sender.c
index fad7ed674..1d696fa87 100644
--- a/epicardium/api/interrupt-sender.c
+++ b/epicardium/api/interrupt-sender.c
@@ -18,5 +18,5 @@ void api_interrupt_trigger(api_int_id_t id)
 	assert(API_CALL_MEM->int_id == (api_int_id_t)(-1));
 
 	API_CALL_MEM->int_id = id;
-	TMR_TO_Start(MXC_TMR5, 1, 0);
+	TMR_TO_Start(MXC_TMR3, 1, 0);
 }
diff --git a/l0dables/lib/crt.s b/l0dables/lib/crt.s
index 79e326515..12e4f798d 100644
--- a/l0dables/lib/crt.s
+++ b/l0dables/lib/crt.s
@@ -207,8 +207,8 @@ DefaultHandler:
 		def_irq_handler    TMR0_IRQHandler
 		def_irq_handler    TMR1_IRQHandler
 		def_irq_handler    TMR2_IRQHandler
-		def_irq_handler    TMR3_IRQHandler
 		def_irq_handler    TMR4_IRQHandler
+		def_irq_handler    TMR5_IRQHandler
 		def_irq_handler    RSV11_IRQHandler
 		def_irq_handler    RSV12_IRQHandler
 		def_irq_handler    I2C0_IRQHandler
diff --git a/l0dables/lib/hardware.c b/l0dables/lib/hardware.c
index 209ee97ad..ef92eef36 100644
--- a/l0dables/lib/hardware.c
+++ b/l0dables/lib/hardware.c
@@ -77,7 +77,7 @@ __weak void SystemInit()
 	SystemCoreClockUpdate();
 
 	// Enable API interrupt.
-	NVIC_EnableIRQ(TMR5_IRQn);
+	NVIC_EnableIRQ(TMR3_IRQn);
 }
 
 // newlib syscall to allow printf to work.
diff --git a/pycardium/mphalport.c b/pycardium/mphalport.c
index 5ae9cee49..df7783e7e 100644
--- a/pycardium/mphalport.c
+++ b/pycardium/mphalport.c
@@ -23,8 +23,8 @@
 /* Initialize everything for MicroPython */
 void pycardium_hal_init(void)
 {
-	/* TMR5 is used for interrupts from Epicardium */
-	NVIC_EnableIRQ(TMR5_IRQn);
+	/* TMR3 is used for interrupts from Epicardium */
+	NVIC_EnableIRQ(TMR3_IRQn);
 
 	/*
 	 * Enable UART RX Interrupt so Pycardium can sleep until
-- 
GitLab