「PIC」カテゴリーアーカイブ

セレナC27のオートブレーキホールド機能を自動的に有効にする

セレナC27を買って良かったなぁと思う機能の一つにオートブレーキホールド機能がある。これ、信号待ちや渋滞で一旦停止し、それなりにブレーキペダルを踏み込み停止したとき、その踏力相当をキープしてくれるというもの。
この機能使うと、ホント付いていない車に乗るのが億劫になる。
しかし、唯一の不満はエンジン始動時自動で有効にする設定がないこと。
今回はこのオートブレーキホールド機能を自動で有効にするユニットを製作した。

続きを読む セレナC27のオートブレーキホールド機能を自動的に有効にする

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関数で,上記バッファハンドルのステータス(通信完了など)を取得
    必要に応じて通信完了まで待機

続きを読む PIC32+HarmonyでI2C通信のやり方

DRV_IO_INTENT

Harmony Ver 1.07.01で記述

概要

モジュールのドライバの動作を指定する列挙体.
ドライバをブロッキング/ノンブロッキング(共有か,排他か)を指定でき,ドライバの読み込み・書き込み動作も指定できる.
さらに,ドライバ内部のバッファ動作を指定したり,DMA使用の有無を指定できる.(この機能は2016/05/18時点で未実装のようだ)

続きを読む DRV_IO_INTENT

PIC32+Harmony V1.07でConsoleのインスタンスが1つに制限される

今制作している機器では,Console機能をUSBとUARTに共通して実装し,どちらからでもコマンドを受け付けるようにする必要がある.
しかし,
Issue of the "Console System Service Library" in Harmony PIC32
の通り,Console機能の複数インスタンス生成でバグが見つかっていて,手動修正が必要となる.

続きを読む PIC32+Harmony V1.07でConsoleのインスタンスが1つに制限される

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 Moduleに付随するPin Diagramでハマる

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)を使用した.

続きを読む XC32コンパイラのコンパイル(最適化制約解除)