Other Parts Discussed in Thread: MSPM0L1306, MSPM0G3507, , SYSCONFIG,
Tool/software:
Hi, I have an issue where code for a timer queue implementation only functions on TIMG14 and TIMA0. For MSPM0C1104, TIMG8 does not work. I have also noticed that my code only functions using TIMA0 on the MSPM0G3507 and MSPM0L1306 launchpad boards.
I have reproduced a minimal example using the C SDK (the actual code is written in Rust) and it appears that TIMG8 never starts counting when replicating what the Rust code I've written does line by line. Changing the defines in the "empty_non_sysconfig.c" file to use TIMG14 or TIMA0 will cause the code to work. The code should result in the LED on the launchpad board being toggled once a second.
Although not shown here in full detail, I will explain what I am trying to do. The timer queue uses one of the timers and puts it into a free-running mode that counts up forever. The timer queue works uses the CCU0 and LOAD interrupts to increment a value indicating how many 32768 timer "ticks" have passed. The number of periods and the current counter value are used to compute a global "tick" counter corresponding to the amount of time passed since boot. CC1 is loaded with a value corresponding to how many ticks within the current period there are until the timer alarm happens. The CCU1 interrupt is enabled when the alarm will happen within the next period. The CCU1 interrupt then occurs when the alarm has happened.
I do recall the TIMER_ERR_01 errata present in the MSPM0G3507 hardware. However given that this code works on 2 out of 3 timers (and one of the timers for G3507), I am unsure if the issue is related.
I have attached a project reproducing this issue for the LP-MSPM0C1104 board. This only contains the code relating to CCU0 and LOAD since the TIMG8 never starts.