PIC32+Harmony System Service Librariesの Command Processor System Service Libraryでハマる

Harmony Ver 1.06.02で記述
HarmonyVer 1.07.02でも同様現象を確認

このライブラリは,DOSプロンプトのようなコマンドインターフェースを簡単に実装できる.
で,早速使ってみても動かない.
ヘルプの通りにコマンドとコールバック関数をちゃんと登録しているのに.
SYS_CMD_MSG関数などで表示はできるものの,コマンド入力を受け付けない.

ライブラリのプログラムを調べると,USARTからのデータをリードFIFOに登録していない.
なぜか・・・ここで2週間悩む.

ライブラリのプログラムを読み進めると,データリードのスイッチがあることに気付く.
SYS_CMD_DEVICE_NODE構造体ポインタであるpCmdIOのcmdStateメンバがSYS_CMD_STATE_SETUP_READにならないので,コマンドの受信・解析を行っていない.

で,このスイッチを誰がコントロールしているのかを探すと,SYS_CMD_READY_TO_READ関数となっていた.
SYS_CMD_READY_TO_READ関数を呼び,戻り値が’1’であるとき,コマンド受信・解析モードになるようだ.
この時,SYS_CMD_PRINT関数などでコンソールへの表示はできなくなる.

コンソールへ再度表示できるようにするためには,SYS_CMD_READY_TO_WRITE関数を呼び,戻り値が’1’となることを確認する.

ただし,SYS_CMD_READY_TO_READ関数とSYS_CMD_READY_TO_WRITE関数で動作を切り替える場合は,SYS_CMD_RegisterCallback関数を使って,送信か受信が完了したことを検知してから切り替えないと,内部でException Errorが発生してマイコンはハングアップする.


コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください