Description
Fully documented here:
https://forum.microchip.com/s/topic/a5CV40000000b1BMAQ/t394578
TL;DR :
use case : TCCx timer set as PWM pulse train generator. DMA in charge of setting the duty cycle of the PWM channel at each new period, hence trigger source selected is TCCx-OVERFLOW. DMA channel writes new duty cycle in the TCCx[concerned channel & pin].CCbuf
Bottom line: in rev F of the silicon, if you allocate a dma channel and set it with a trigger source then allocate another channel with the SAME trigger source, first channel will never start its job and will not finish it. Triggering the SECOND one will eventually sometimes allow for the first channel, sometimes not. As soon as you revert the trigger source of the second DMA channel to another source, like another timer, different from the first channel timer, the first channel works correctly and triggers interrupts and such. Reverting can be done on the fly as code offers (by pressing a switch on a GPIO or shorting it) and first channel falls back in order.
Test code made to work with an itsty bitsy M4 and could be simply adapted to a M4 express with the exact MCU (51J19) using for instance pins D8 and D9 which feature the same TCC0 timer, on respective (timer) channels 1 and 0. The itsy M4 I ordered last week from adafruit are unfortunately rev D as well as my older M4 express I own. I tested that simple code on my custom board that uses a 51J19A-AU in TQFP format, using both D and F versions to compare and highlight the issue. F revision MCU were acquired from both microchip direct and mouser.