ラズパイ2023年10月更新 bookworm ⑫ ラズパイ5のPWM-ハードウェアPWM<その2>
前回、GPIO18の1チャネルにハードウェアPWMの出力を出しました。ここでは2チャネルにPWM出力を出します。
●環境
- ハードウェア Raspberry Pi 5(4GBモデル)
- OS Raspberry Pi OS (64ビット)、リリース日December 5th 2023
- Windows10 22H2にて、ssh(OpenSSH_9.2p1 Debian-2+deb12u2, OpenSSL 3.0.11 19 Sep 2023)および、VNC Viewerを動作させている
●二つのチャネルの設定
/boot/overlays/READMEの記述です。
Name: pwm-2chan Info: Configures both PWM channels Legal pin,function combinations for each channel: PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) N.B.: 1) Pin 18 is the only one available on all platforms, and it is the one used by the I2S audio interface. Pins 12 and 13 might be better choices on an A+, B+ or Pi2. 2) The onboard analogue audio output uses both PWM channels. 3) So be careful mixing audio and PWM. 4) Currently the clock must have been enabled and configured by other means. Load: dtoverlay=pwm-2chan,<param>=<val> Params: pin Output pin (default 18) - see table pin2 Output pin for other channel (default 19) func Pin function (default 2 = Alt5) - see above func2 Function for pin2 (default 2 = Alt5) clock PWM clock frequency (informational) |
root権限で、/boot/firmware/config.txtの最後に、次の1行を記述し、
dtoverlay=pwm-2chan
CTRL-O、CTRL-Xで書き込みます。
リブートします。
$ echo 2 > /sys/class/pwm/pwmchip2/export
echo 20000 > /sys/class/pwm/pwmchip2/pwm2/period
echo 10000 > /sys/class/pwm/pwmchip2/pwm2/duty_cycle
echo 1 > /sys/class/pwm/pwmchip2/pwm2/enable
波形を見ます。赤色C1がGPIO18です。
$ echo 0 > /sys/class/pwm/pwmchip0/export
echo 20000 > /sys/class/pwm/pwmchip0/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
pwm/pwmchip0/にpwm0はできていて、各パラメタには値が書き込まれていますが、波形は出てきません。
echo 3 > /sys/class/pwm/pwmchip2/export
echo 20000 > /sys/class/pwm/pwmchip2/pwm3/period
echo 10000 > /sys/class/pwm/pwmchip2/pwm3/duty_cycle
echo 1 > /sys/class/pwm/pwmchip2/pwm3/enable
pwm/pwmchip2/にpwm3ができていて、GPIO19(青色C2)に波形が出ました。GPIO18とは、位相がずれています。
ほかのpwm4やpwm5を作ろうとしましたが、できませんでした。
$ echo 4 > /sys/class/pwm/pwmchip2/export
bash: echo: write error: No such device
echo 5 > /sys/class/pwm/pwmchip2/export
bash: echo: write error: No such device
----
GPIO12とGPIO13に出力ピンを明示します。root権限で、/boot/firmware/config.txtの最後に、次の1行を記述し、
dtoverlay=pwm-2chan,pin=12,pin2=13
CTRL-O、CTRL-Xで書き込みます。
リブートします。
$ echo 2 > /sys/class/pwm/pwmchip2/export
echo 20000 > /sys/class/pwm/pwmchip2/pwm2/period
echo 10000 > /sys/class/pwm/pwmchip2/pwm2/duty_cycle
echo 1 > /sys/class/pwm/pwmchip2/pwm2/enable
pwm/pwmchip2/にpwm2はできていて、各パラメタには値が書き込まれていますが、波形は出てきません。
$ echo 0 > /sys/class/pwm/pwmchip0/export
echo 20000 > /sys/class/pwm/pwmchip0/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
pwm/pwmchip0/にpwm0はできていて、各パラメタには値が書き込まれていますが、波形は出てきません。
$ echo 4 > /sys/class/pwm/pwmchip2/export
bash: echo: write error: No such device
echo 5 > /sys/class/pwm/pwmchip2/export
bash: echo: write error: No such device
----
GPIO12とGPIO13に出力ピンを明示、functionの記述も追加します。root権限で、/boot/firmware/config.txtの最後に、次の1行を記述し、
dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4
$ echo 2 > /sys/class/pwm/pwmchip2/export
echo 20000 > /sys/class/pwm/pwmchip2/pwm2/period
echo 10000 > /sys/class/pwm/pwmchip2/pwm2/duty_cycle
echo 1 > /sys/class/pwm/pwmchip2/pwm2/enable
pwm/pwmchip2/にpwm2はできていて、各パラメタには値が書き込まれていますが、波形は出てきません。
$ echo 0 > /sys/class/pwm/pwmchip0/export
echo 20000 > /sys/class/pwm/pwmchip0/pwm0/period
echo 10000 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
pwm/pwmchip0/にpwm0はできていて、各パラメタには値が書き込まれていますが、波形は出てきません。
●二つのピンのPWM出力の結果
デフォルトのGPIO18とGPIO19にPWM出力は出ました。