TOPに戻る

ラズパイ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出力は出ました。

-