セレナC27を買って良かったなぁと思う機能の一つにオートブレーキホールド機能がある。これ、信号待ちや渋滞で一旦停止し、それなりにブレーキペダルを踏み込み停止したとき、その踏力相当をキープしてくれるというもの。
この機能使うと、ホント付いていない車に乗るのが億劫になる。
しかし、唯一の不満はエンジン始動時自動で有効にする設定がないこと。
今回はこのオートブレーキホールド機能を自動で有効にするユニットを製作した。
「PIC」カテゴリーアーカイブ
DRV_I2C_BUFFER_EVENT
Harmony Ver 1.07.01で記述
概要
I2C通信の状態を表す列挙体.
コールバック()に指定する場合は,指定した状態になった時にコールバック関数を呼び出す.
ポーリング()で読みだした場合は,転送状態を確認できる.
PIC32+HarmonyでI2C通信のやり方
Harmony Ver 1.07.01で記述
前書き
HarmonyでDynamicタイプのドライバ関数が追加されたので,その使い方を解説する.
まだ頻繁にバージョンアップしているので,今後変更になる可能性が高い.
基本的なI2C通信の仕方は,以下の順序となる.
- DRV_I2C_Initialize関数で,I2Cモジュールの初期化を行う(system_init.c内にHarmonyが自動生成している)
- DRV_I2C_Open関数で,I2Cモジュールを開き,ハンドル取得
- DRV_I2C_Transmit関数で,I2Cデータ送信(バッファハンドル取得)
- DRV_I2C_Receive関数で,I2Cデータ受信(バッファハンドル取得)
-
DRV_I2C_TransferStatusGet関数で,上記バッファハンドルのステータス(通信完了など)を取得
必要に応じて通信完了まで待機
DRV_IO_INTENT
Harmony Ver 1.07.01で記述
概要
モジュールのドライバの動作を指定する列挙体.
ドライバをブロッキング/ノンブロッキング(共有か,排他か)を指定でき,ドライバの読み込み・書き込み動作も指定できる.
さらに,ドライバ内部のバッファ動作を指定したり,DMA使用の有無を指定できる.(この機能は2016/05/18時点で未実装のようだ)
PIC32+Harmony V1.07でConsoleのインスタンスが1つに制限される
今制作している機器では,Console機能をUSBとUARTに共通して実装し,どちらからでもコマンドを受け付けるようにする必要がある.
しかし,
Issue of the "Console System Service Library" in Harmony PIC32
の通り,Console機能の複数インスタンス生成でバグが見つかっていて,手動修正が必要となる.
PIC32+Harmony Moduleに付随するPin Diagramでハマる
ConsoleとCommandのSystem Service Librariesを使っている.
このとき,Consoleのインスタンスを2つにし,インスタンス0をUart,インスタンス1をUSB DeviceのCDCに割り当て,どちらからでも同じコマンド入力に対応するようにしたいと思った.
手始めに,インスタンス0にUartのみ割り当て,デバッグをして,
ConsoleのSYS_CONSOLE_Write関数や
Command Processor System Service Library
に引っかかりながらも,何とかコマンド入出力が可能になった.
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週間悩む.
続きを読む PIC32+Harmony System Service Librariesの Command Processor System Service Libraryでハマる
PIC32+Harmony System Service LibrariesのConsole SYS_CONSOLE_Writeでハマる
この関数の第2パラメータは,コンソール出力先がUSARTの時は関係ない.
関数内部で第2パラメータは見ていない.
これは大した問題ではないが.
大問題なのは,第3パラメータの文字列配列は,auto変数だとバグるということ.
関数内宣言の変数配列のポインタを渡すときは,static宣言する.
あるいはグローバル変数配列のポインタを渡すこと!.
続きを読む PIC32+Harmony System Service LibrariesのConsole SYS_CONSOLE_Writeでハマる
XC32コンパイラのコンパイル(最適化制約解除)
Attribute System(http://blog.goo.ne.jp/mk_nukkeyoh-/e/cb9500e28fe0bb567dc892e05c2755b8)様で取り組まれている,XC32のSelf Buildに取り組んでみた.
公開してあるbuild-xc32-133.shを使わせていただき,せっかくなので最新のXC32 V1.34をコンパイルした.
コンパイル環境は,MinGW32(base=v2013072200,GCC=v4.8.1-4)+MSYS(v2013072300)を使用した.