PWM
PWM Example¶
Emlid Neutis has two available PWM pins. In this example, we are using PWM0,
which is the alternative function of URX0 pin. By default, it is disabled.

To enable it you should apply special Device Tree overlay by editing /boot/Env.txt.
You need to add pwm to the overlays section:
/boot/Env.txt:
loglevel=10
overlays=pwm
Save this file and reboot your device. When your system finished booting,
you should get pwmchip0 interface in sysfs.
root@neutis:~# ls /sys/class/pwm/pwmchip0
device export npwm power subsystem uevent unexport
Activate the PWM:
echo 0 > /sys/class/pwm/pwmchip0/export
Set period to 10ms:
echo 10000000 > /sys/class/pwm/pwmchip0/pwm0/period
It means that the signal is high for 10% of the period and low the other 90%.
Set normal polarity:
echo "normal" > /sys/class/pwm/pwmchip0/pwm0/polarity
Enable the PWM:
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
Set duty cycle to 1ms:
echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
You can connect logic analyzer to PWM0 pin and see the result:
