Hi
PWM on the KL46 is included in the code at KINETIS Project Code
The PWM (timer interface) is discussed in the HW timer document http://www.utasker.com/docs/uTasker/uTaskerHWTimers.PDF
and is compatible with all KE, Kl and K devices (K/KE use FlexTimer and KL uses the TPM but the interface is the same).
Eg:
PWM_INTERRUPT_SETUP pwm_setup;
pwm_setup.int_type = PWM_INTERRUPT;
pwm_setup.pwm_mode = (PWM_SYS_CLK | PWM_PRESCALER_16); // clock PWM timer from the system clock with /16 prescaler
pwm_setup.pwm_reference = (_TIMER_0 | 3); // timer module 0, channel 3
pwm_setup.pwm_frequency = PWM_TIMER_US_DELAY(TIMER_FREQUENCY_VALUE(1000), 16); // generate 1000Hz on PWM output
pwm_setup.pwm_value = _PWM_PERCENT(20, pwm_setup.pwm_frequency); // 20% PWM (high/low)
fnConfigureInterrupt((void *)&pwm_setup); // enter configuration for first PWM output
pwm_setup.pwm_reference = (_TIMER_0 | 2); // timer module 0, channel 2
pwm_setup.pwm_mode |= PWM_POLARITY; // change polarity of second channel
pwm_setup.pwm_value = _PWM_TENTH_PERCENT(706, pwm_setup.pwm_frequency); // 70.6% PWM (low/high) on different channel
fnConfigureInterrupt((void *)&pwm_setup); // enter configuration for second PWM output
You just need to choose the timer modules and channels (as available on the device being used) - any number can be used and all are independent apart from the fact that all channels on a particular module share the same base frequency.
Regards
Mark