Armadilloフォーラム

PWM出力の有効設定時の戻り値について

nic-segawa

2016年10月21日 20時47分

お世話になります。

Armadillo-410のPWM3制御のためのプログラムをQtを使用して作成しています。
PWM出力を有効にする際に以下のようにデバイスファイルにアクセスしています。

fd = open(”/sys/class/mxc_pwm/CON11_49/enable”, O_RDWR);
len = write(fd, "1", 1);

この際に戻り値が書き込んだバイト数になると思うのですが、0となります。しかし、書き込み自体は成功しています。
また、以下のようにして出力を無効にした場合、

len = write(fd, "0", 1);

この場合は戻り値として1が返って来ます。(書き込みは成功しています)

PWM出力を有効にした際の戻り値は0で良いのでしょうか?

よろしくお願い致します。

コメント

ご回答ありがとうございます。

0 < duty_ns < period_nsとなっているか確認してみましたが、範囲内で問題無く設定されていました。
やはりenableの設定自体はできています。
ちなみにwrite戻り値は以下のようになっています。

enable 0 → 1 戻り値=0
enable 1 → 0 戻り値=1
enable 1 → 1 戻り値=1
enable 0 → 0 戻り値=1

無効から有効にする場合のみ戻り値=0となってしまいます。
一旦、戻り値=0であればOKとしてソフトを作成します。
もし他に何か情報がありましたらお願い致します。

at_takashi.sasayama

2016年10月31日 9時50分

笹山です。

こちらでも同現象を確認できました。
解析した結果、PWMドライバの不具合であることがわかりました。

暫定的になりますが、添付のパッチを適用することで、
不具合が改修されます。

[ATDE3]$ cd atmark-dist/linux-2.6.x
[ATDE3]$ patch -p1 < linux-2.6.26-at25-pwm-write-bug-fix.patch

不具合のご報告ありがとうございました。

ファイル ファイルの説明
linux-2.6.26-at25-pwm-write-bug-fix.patch PWM enable への write で正しい値を返すパッチ

笹山様

迅速なご対応ありがとうございました。
パッチを適用した所、戻り値が1になることを確認しました。
ありがとうございました。