Sean Cross hat für Adafruits Industries ein Kernelmodul geschrieben, welches PWM/Servo am GPIO #18 Pin unterstützt. Das am GPIO Header verfügbare PWM Pin wird mit dem Audio System geteilt.
Unabhängige Verwendung von PWM/Servo und Audio am 3.5 mm Klinkenstecker sind deshalb nicht möglich.
Das Kernelmodul ist von adafruit beschrieben.
Im folgenden Shell Script wird eine Frequenz von 1 kHz erzeugt und das Tastverhältnis (Duty) verändert. Mit einem Oszilloskop kann man an GPIO #18 die Veränderung des Tastverhältnisses verfolgen. Hierzu sind zwischen jeder Änderung des Tastverhältnisses jeweils 1 s Wartezeit eingebaut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/bin/bash echo "========================================================================" echo "PWM Test" echo "========================================================================" echo pwm > /sys/class/rpi-pwm/pwm0/mode echo 10 > /sys/class/rpi-pwm/pwm0/duty echo 0 > /sys/class/rpi-pwm/pwm0/delayed echo -n "Mode: " cat /sys/class/rpi-pwm/pwm0/mode echo 1000 > /sys/class/rpi-pwm/pwm0/frequency # 1000 Hz echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 1 echo 25 > /sys/class/rpi-pwm/pwm0/duty # Duty = 0.25 echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 1 echo 50 > /sys/class/rpi-pwm/pwm0/duty # Duty = 0.5 echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 1 echo 75 > /sys/class/rpi-pwm/pwm0/duty # Duty = 0.75 echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 1 echo 90 > /sys/class/rpi-pwm/pwm0/duty # Duty = 0.9 echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 1 echo 50 > /sys/class/rpi-pwm/pwm0/duty # Duty = 0.5 echo -n "Duty: " cat /sys/class/rpi-pwm/pwm0/duty sleep 2 echo 0 > /sys/class/rpi-pwm/pwm0/frequency |