ユーザ用ツール

サイト用ツール


mae3xx_ope:di_hardware_counter:start

DI(ハードウェアカウンタ機能付き)を利用する

MA-E350/LAD-20 は、DI/DO/RELAY OUT の端子台は MA-E350/GLAD と同じですが、
DI 8channel の前半 4channel 部分(DI0..DI3) に 8bit ハードウェアカウンタ1)が実装されています。

ハードウェアによる実装なので、本体が Standby による待機中でもパルスをカウントすることができます。


ソフトウェア

sysfs のノードは下記のようになっています。

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


他の機種と比べると、下記が追加になっています。

No. Name Info
1hwcounterカウント値 R/W
2hwcounter_enableハードウェアカウンタ enable/disable
3wakeup_enable割込 enable/disable


hwcounter

カウンタ値の読み出しおよび設定を行います。 8bit で 255 までしか記録できないため、

  • 定期的に 0 クリアする
  • ラップアラウンドをソフトウェアで検知し、上位の桁を補う

などの処理をする必要があります。

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# 


hwcounter_enable

ハードウェアカウンタの有効化/無効化を設定します。“1” を書くと有効化、“0” を書くと無効化2)します。

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


wakeup_enable

割込信号を CPU 側に入れるかどうかを設定します。初期状態は『無効』(0) になっています。 ※ Standby による低消費電力待機中に、DI の割込により Wakeup しないため。

そのため、これを有効にしない場合、割込により実装されているソフトウェアカウンタ3)が動作しませんので注意が必要です。

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


1)
255までカウント可能
2)
v4.4.3まではバグにより無効化ができません、v4.4.4 で修正してあります
3)
“counter” というノード
mae3xx_ope/di_hardware_counter/start.txt · 最終更新: 2020/12/24 11:07 by admin