SDMMC/Systimer problem fix.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User13086
Level 1
Level 1
The following error occurred while working with DAVE 4.4.2 and XMC4700:

From two timers that were periodically started with "SYSTIMER_StartTimer()", one timer sporadically stopped working
(the callback function was no longer called) if a file was transferred to the XMC4700 via ethernet.

After a few tests it turned out that the cause for this was the call to FATFS/SDMMC.
The SDMMC functions call SYSTIMER_StartTimer() and SYSTIMER_StopTimer() functions for each data block.

These SDMMC timer calls can be interrupted by timer calls of the SYSTMER interrupt and lead to errors,
when the timer functions are currently performing chain-in or chain-off operations.

In order to avoid these malfunctions, user programs and SDMMC may only use the following
interrupt protected versions of the timer calls:
SYSTIMER_CreateTimerFromISR (), SYSTIMER_StartTimerFromISR (), SYSTIMER_StopTimerFromISR (),
SYSTIMER_RestartTimerFromISR (), SYSTIMER_DeleteTimerFromISR ().

After integrating the interruption-protected versions of the timer calls in SDMMC, the timer malfunction described above has not yet occurred again.

best regards Hans
0 Likes
1 Solution
Vasanth
Moderator
Moderator
Moderator
250 sign-ins 500 solutions authored First question asked
Hi Hans,

Thanks for sharing your solution with community.

Best Regards,
Vasanth

View solution in original post

0 Likes
1 Reply
Vasanth
Moderator
Moderator
Moderator
250 sign-ins 500 solutions authored First question asked
Hi Hans,

Thanks for sharing your solution with community.

Best Regards,
Vasanth
0 Likes