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: