aboutsummaryrefslogtreecommitdiffstats
path: root/docs/RPi_microcontroller.md
diff options
context:
space:
mode:
authorMartin <github@mrvanes.com>2021-07-15 19:24:02 +0200
committerGitHub <noreply@github.com>2021-07-15 13:24:02 -0400
commit4cf25c714ae177c166d85961fcad3c4898eed7c3 (patch)
tree325cbcc69d9e0ea02f3644aad45d797ab371f185 /docs/RPi_microcontroller.md
parentf24210054a2b263e7a73df1356c77b222851c0a1 (diff)
downloadkutter-4cf25c714ae177c166d85961fcad3c4898eed7c3.tar.gz
kutter-4cf25c714ae177c166d85961fcad3c4898eed7c3.tar.xz
kutter-4cf25c714ae177c166d85961fcad3c4898eed7c3.zip
docs: Add hardware RPi PWM documentation (#4418)
Signed-off-by: Martin van Es <martin@mrvanes.com>
Diffstat (limited to 'docs/RPi_microcontroller.md')
-rw-r--r--docs/RPi_microcontroller.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/RPi_microcontroller.md b/docs/RPi_microcontroller.md
index bc8d0fad..2229ee69 100644
--- a/docs/RPi_microcontroller.md
+++ b/docs/RPi_microcontroller.md
@@ -154,3 +154,39 @@ gpiochip1 - 8 lines:
line 6: unnamed unused input active-high
line 7: unnamed unused input active-high
```
+
+Optional: Hardware PWM
+=======================================
+Raspberry Pi's have two PWM channels (PWM0 and PWM1) which are exposed on the header or if not, can be routed to existing gpio pins.
+The Linux mcu daemon uses the pwmchip sysfs interface to control hardware pwm devices on Linux hosts.
+The pwm sysfs interface is not exposed by default on a Raspberry and can be activated by adding a line to ```/boot/config.txt```:
+```
+# Enable pwmchip sysfs interface
+dtoverlay=pwm,pin=12,func=4
+```
+This example enables only PWM0 and routes it to gpio12. If both PWM channels need to be enabled you can use ```pwm-2chan```.
+
+The overlay does not expose the pwm line on sysfs on boot and needs to be exported by echo'ing the number of the pwm channel to ```/sys/class/pwm/pwmchip0/export```:
+```
+echo 0 > /sys/class/pwm/pwmchip0/export
+```
+This will create device ```/sys/class/pwm/pwmchip0/pwm0``` in the filesystem.
+The easiest way to do this is by adding this to ```/etc/rc.local``` before the ```exit 0``` line.
+
+With the sysfs in place, you can now use either the pwm channel(s) by adding the following piece of configuration to your ```printer.cfg```:
+```
+[output_pin caselight]
+pin: host:pwmchip0/pwm0
+pwm: True
+hardware_pwm: True
+cycle_time: 0.000001
+```
+This will add hardware pwm control to gpio12 on the Pi (because the overlay was configured to route pwm0 to pin=12).
+
+PWM0 can be routed to gpio12 and gpio18, PWM1 can be routed to gpio13 and gpio19:
+|PWM|gpio PIN|Func|
+|---|--------|----|
+| 0| 12| 4|
+| 0| 18| 2|
+| 1| 13| 4|
+| 1| 19| 2|