この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
mae3xx_ope:di_hardware_counter:start [2020/12/23 19:23] admin 作成 |
mae3xx_ope:di_hardware_counter:start [2020/12/24 11:07] (現在) admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
====== DI(ハードウェアカウンタ機能付き)を利用する ====== | ====== DI(ハードウェアカウンタ機能付き)を利用する ====== | ||
+ | |||
+ | [[https://www.centurysys.co.jp/products/linuxserver/mae350lad.html|MA-E350/LAD-20]] は、DI/DO/RELAY OUT の端子台は MA-E350/GLAD と同じですが、\\ | ||
+ | DI 8channel の前半 4channel 部分(DI0..DI3) に 8bit ハードウェアカウンタ((255までカウント可能))が実装されています。 | ||
+ | |||
+ | ハードウェアによる実装なので、本体が Standby による待機中でもパルスをカウントすることができます。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== ソフトウェア ===== | ||
+ | |||
+ | sysfs のノードは下記のようになっています。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/class/gpio/DI_03# ls -l | ||
+ | total 0 | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 active_low | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 counter | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 debounce | ||
+ | lrwxrwxrwx 1 root root 0 Dec 24 09:14 device -> ../../../gpiochip13 | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 edge | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 hwcounter | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 hwcounter_enable | ||
+ | drwxr-xr-x 2 root root 0 Dec 24 09:14 power | ||
+ | lrwxrwxrwx 1 root root 0 Dec 23 20:39 subsystem -> ../../../../../../../../class/gpio | ||
+ | -rw-r--r-- 1 root root 4096 Dec 23 20:39 uevent | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 value | ||
+ | -rw-r--r-- 1 root root 4096 Dec 24 09:14 wakeup_enable | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 他の機種と比べると、下記が追加になっています。 | ||
+ | |||
+ | |<35em 4em 12em 20em>| | ||
+ | ^ No. ^ Name ^ Info | | ||
+ | | 1|hwcounter|カウント値 R/W| | ||
+ | | 2|hwcounter_enable|ハードウェアカウンタ enable/disable| | ||
+ | | 3|wakeup_enable|割込 enable/disable| | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== hwcounter ==== | ||
+ | |||
+ | カウンタ値の読み出しおよび設定を行います。 | ||
+ | 8bit で 255 までしか記録できないため、 | ||
+ | |||
+ | * 定期的に 0 クリアする | ||
+ | * ラップアラウンドをソフトウェアで検知し、上位の桁を補う | ||
+ | |||
+ | などの処理をする必要があります。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/class/gpio/DI_03# cat hwcounter | ||
+ | 0 | ||
+ | root@plum:/sys/class/gpio/DI_03# echo 10 > hwcounter | ||
+ | root@plum:/sys/class/gpio/DI_03# cat hwcounter | ||
+ | 10 | ||
+ | root@plum:/sys/class/gpio/DI_03# | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== hwcounter_enable ==== | ||
+ | |||
+ | ハードウェアカウンタの有効化/無効化を設定します。"1" を書くと有効化、"0" を書くと無効化((v4.4.3まではバグにより無効化ができません、v4.4.4 で修正してあります))します。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/class/gpio/DI_03# cat hwcounter_enable | ||
+ | 0 | ||
+ | root@plum:/sys/class/gpio/DI_03# echo 1 > hwcounter_enable | ||
+ | root@plum:/sys/class/gpio/DI_03# cat hwcounter_enable | ||
+ | 1 | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== wakeup_enable ==== | ||
+ | |||
+ | 割込信号を CPU 側に入れるかどうかを設定します。初期状態は『無効』(0) になっています。 | ||
+ | ※ Standby による低消費電力待機中に、DI の割込により Wakeup しないため。 | ||
+ | |||
+ | そのため、これを有効にしない場合、割込により実装されているソフトウェアカウンタ(("counter" というノード))が動作しませんので注意が必要です。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:/sys/class/gpio/DI_03# cat wakeup_enable | ||
+ | 0 | ||
+ | root@plum:/sys/class/gpio/DI_03# echo 1 > wakeup_enable | ||
+ | root@plum:/sys/class/gpio/DI_03# cat wakeup_enable | ||
+ | 1 | ||
+ | root@plum:/sys/class/gpio/DI_03# echo 0 > wakeup_enable | ||
+ | root@plum:/sys/class/gpio/DI_03# cat wakeup_enable | ||
+ | 0 | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | |||