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で良いのでしょうか?
よろしくお願い致します。
コメント
nic-segawa
ご回答ありがとうございます。
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
笹山です。
こちらでも同現象を確認できました。
解析した結果、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 で正しい値を返すパッチ |
nic-segawa
at_yashi
2016年10月28日 14時38分
もしかして、↓これだったりしますか?
PWM設定ではまったこと
https://users.atmark-techno.com/blog/615/768
書き込みに成功しているってことは、違うのかもしれませんが...