When you use the TriggerStart() function, it requires a MASK, instead of a counter. You actually just need to call TriggerStart() once, triggering all 24 PWMs with 0xFFF as argument.
This is exactly what I'm doing wrong. Thank you very much!
Since you seem to have some knowledge here, I have a followup question if you don't mind: What is the proper procedure for changing the period and compare values of a PWM once it's running? I settled in on this as to set it, but it doesn't work consistently:
// for a given PWM instance called LED for example
Cy_TCPWM_PWM_SetPeriod0(LED_HW, LED_NUM, 400);
Cy_TCPWM_PWM_SetCompare0(LED_HW, LED_NUM, 400/2);
On some of the PWMs this works as expected, but on others it does not. I expect there's something else w/r/t the MASK vs NUM problem I had previously, but it very well could be something else. I can't use the period and compare swap, as I need four potential settings (off, on, fast, slow).
Thanks again for the help.
The flow looks OK, as long you are passing the correct parameters (which I think you are).
Another think I will look at is if all the PWMs were assigned to the same block (LED_HW). Because if they are not, you have two different bases to pass as argument. The PSoC 6 has two TCPWM blocks and each block has several channels (LED_NUM).