Harmony Ver 1.07.01で記述
概要
I2C通信の状態を表す列挙体.
コールバック()に指定する場合は,指定した状態になった時にコールバック関数を呼び出す.
ポーリング()で読みだした場合は,転送状態を確認できる.
Harmony Ver 1.07.01で記述
I2C通信の状態を表す列挙体.
コールバック()に指定する場合は,指定した状態になった時にコールバック関数を呼び出す.
ポーリング()で読みだした場合は,転送状態を確認できる.
Harmony Ver 1.07.01で記述
HarmonyでDynamicタイプのドライバ関数が追加されたので,その使い方を解説する.
まだ頻繁にバージョンアップしているので,今後変更になる可能性が高い.
基本的なI2C通信の仕方は,以下の順序となる.
Harmony Ver 1.07.01で記述
モジュールのドライバの動作を指定する列挙体.
ドライバをブロッキング/ノンブロッキング(共有か,排他か)を指定でき,ドライバの読み込み・書き込み動作も指定できる.
さらに,ドライバ内部のバッファ動作を指定したり,DMA使用の有無を指定できる.(この機能は2016/05/18時点で未実装のようだ)
今制作している機器では,Console機能をUSBとUARTに共通して実装し,どちらからでもコマンドを受け付けるようにする必要がある.
しかし,
Issue of the "Console System Service Library" in Harmony PIC32
の通り,Console機能の複数インスタンス生成でバグが見つかっていて,手動修正が必要となる.
ConsoleとCommandのSystem Service Librariesを使っている.
このとき,Consoleのインスタンスを2つにし,インスタンス0をUart,インスタンス1をUSB DeviceのCDCに割り当て,どちらからでも同じコマンド入力に対応するようにしたいと思った.
手始めに,インスタンス0にUartのみ割り当て,デバッグをして,
ConsoleのSYS_CONSOLE_Write関数や
Command Processor System Service Library
に引っかかりながらも,何とかコマンド入出力が可能になった.
Harmony Ver 1.06.02で記述
HarmonyVer 1.07.02でも同様現象を確認
このライブラリは,DOSプロンプトのようなコマンドインターフェースを簡単に実装できる.
で,早速使ってみても動かない.
ヘルプの通りにコマンドとコールバック関数をちゃんと登録しているのに.
SYS_CMD_MSG関数などで表示はできるものの,コマンド入力を受け付けない.
ライブラリのプログラムを調べると,USARTからのデータをリードFIFOに登録していない.
なぜか・・・ここで2週間悩む.
続きを読む PIC32+Harmony System Service Librariesの Command Processor System Service Libraryでハマる
この関数の第2パラメータは,コンソール出力先がUSARTの時は関係ない.
関数内部で第2パラメータは見ていない.
これは大した問題ではないが.
大問題なのは,第3パラメータの文字列配列は,auto変数だとバグるということ.
関数内宣言の変数配列のポインタを渡すときは,static宣言する.
あるいはグローバル変数配列のポインタを渡すこと!.
続きを読む PIC32+Harmony System Service LibrariesのConsole SYS_CONSOLE_Writeでハマる