How To: PWM
Pulse Width Modulation (PWM) is a method to create an analog-like signal from the microcontroller's digital output. It achieves that by fast toggling of the pin with a different ratio of logic HIGH and LOW. This ratio is called the duty cycle.
Please check the Core Module pinout to see which pins allow PWM.
9 pins can be used as PWM pins:
TWR_PWM_P0
TWR_PWM_P1
TWR_PWM_P2
TWR_PWM_P3
TWR_PWM_P6
TWR_PWM_P7
TWR_PWM_P8
TWR_PWM_P12
TWR_PWM_P14
References
- PWM SDK Module
- GitHub Repository Example
Duty Cycle
The duty cycle stands for how long should the pin be in the HIGH state, by changing this number you will achieve different analog-like outputs.
The values range from 0-255
where 0
means always LOW and 255
means always HIGH
info
This is just a simple example that will enable PWM signal on P6, P7 and P8 outputs. Every output has a different duty cycle: 180, 210 and 255.
Run PWM on Pins Code Example
void application_init()
{
twr_pwm_init(TWR_PWM_P6);
twr_pwm_set(TWR_PWM_P6, 180);
twr_pwm_enable(TWR_PWM_P6);
twr_pwm_init(TWR_PWM_P7);
twr_pwm_set(TWR_PWM_P7, 210);
twr_pwm_enable(TWR_PWM_P7);
twr_pwm_init(TWR_PWM_P8);
twr_pwm_set(TWR_PWM_P8, 255);
twr_pwm_enable(TWR_PWM_P8);
}