本連載は、自動車などで利用されているCANというネットワークをPICやAVRなどのマイコンで使ってみようというものです。最近流行の言葉、"Yes, we can!"ではありませんが、専用コントローラを使うと、わりと簡単にCANを利用することができます。
次の写真は、試作した2種類のCANノード基板です。CANコントローラにマイクロチップ社のMCP2515、CANトランシーバにMCP2551を使っています。これらの基板ではPICを制御にを使っていますが、SPIで通信できれば、AVRやH8など各種CPUでも制御可能です。
続きを読む "CANコントローラ MCP2515の使い方(1)
CANの概要" »
今回は、CANコントローラ MCP2515の機能について、ポイントとなる点を中心に説明します。
続きを読む "CANコントローラ MCP2515の使い方(2)
MPC2515の概要" »
今回は、MCP2515のレジスタ構成の概要、送受信の概要を説明します。レジスタはたくさんありますが、整理してみると、それほど複雑ではありません。
続きを読む "CANコントローラ MCP2515の使い方(3)
MCP2515のレジスタ構成" »
今回は、MCP2515を使うために必要なSPIコマンドについて説明します。SPI通信はソフトウェアで制御するため、コマンドの内容を理解すれば、PIC以外のCPUやコンパイラでも応用可能です。
続きを読む "CANコントローラ MCP2515の使い方(4)
SPIコマンドについて" »
今回から、筆者が作成したMCP2515制御用のドライバ関数、マクロを説明します。最初にSPIで使用する汎用I/Oポートの初期化部分を説明します。この部分がCPUに依存する部分です。
続きを読む "CANコントローラ MCP2515の使い方(5)
ドライバ関数、マクロの説明(1)" »
今回は、前回定義したSPIポートのアクセス用マクロを使った、実際のドライバ・ルーチンの一部を説明します。もちろん、PIC、AVR共用のコードです。
続きを読む "CANコントローラ MCP2515の使い方(6)
ドライバ関数、マクロの説明(2)" »
今回は、実際に制御ソフトウェアから呼び出すことになる、マクロや関数について概要を説明します。利用頻度が高いと思われる機能はマクロ化してありますが、それでは対応できない場合もあるでしょうから、その場合はプリミティブ関数(レジスタを直接操作するような関数)を使うことになります。また、実際はあまり使わないというようなものもあるかもしれません。
続きを読む "CANコントローラ MCP2515の使い方(7)
ドライバ関数、マクロの説明(3)" »
今回は、前回までに掲載してきたCANドライバ関数やマクロを実際に使った送受信のコードを具体的に説明します。
続きを読む "CANコントローラ MCP2515の使い方(8)
送/受信処理のプログラミング" »
今回は、二つのノード間で交互に通信するという、評価用のプログラムについて説明します。また、各ノードのCCS-Cのプロジェクト・フォルダ一式も掲載します。
次の写真は、デバッグ、評価用に製作したもので、五つのノード基板がトレイの上に混載されています。
続きを読む "CANコントローラ MCP2515の使い方(9)
評価用ノードのプログラム" »
今回は、市販品のCANデバイスとしてNI社のUSB-8473sという機材を借用できることになったため、このデバイスについて簡単に紹介します。次の写真はUSB-8473s本体です。
続きを読む "CANコントローラ MCP2515の使い方(10)
NI社 USB-8473s" »
これまで、CAN制御には、SPI制御のMCP2515をよく使っていたのですが、実装のスペースや手間を考えると、CAN内蔵のPICを使うのがよさそうなので、試用してみました。今までMCP2515を使っていたので、わりと簡単に動かせるようになりました。
実用の目処が付きましたので、忘れないうちにまとめるという意味でも、ブログに掲載しておきます。
今回は手持ちの関係でPIC18F4580を使用していますが、レガシィ・モードを使っているので、CAN内蔵の18Fシリーズだとすべてに対応できると思います。
ちなみに、最近RX62NでCAN制御することができましたので、その弾みで、ということもあります。そちらは、インターフェース誌の2011年6月号に掲載予定ですので、興味がある方はごらんください。
下記写真は実験に使う基板ですが、ブレッドボードでも簡単に作れます。
続きを読む "番外編 PIC18F4580のCAN制御 その1
概要" »
今回はCANコントローラの機能をざっと説明して、プログラムの手順などを示します。書籍関連記事ということで、一部重複しているものもありますが、説明を省略していることもありますので、書籍も一緒にごらんください。
続きを読む "番外編 PIC18F4580のCAN制御 その2
CANコントローラの機能" »
今回は、前回一覧で示したドライバ関数の機能を個別に説明して、使用例を実際のプログラムに近い形で示します。
また、内容の解説は次回からですが、とりあえず、実験1で使用したWIZ-Cのプロジェクトフォルダ一式もアップしておきます。
続きを読む "番外編 PIC18F4580のCAN制御 その3
ドライバ関数の使用法" »
今回は評価、実験の内容と開発環境などについて説明します。回路や使用部品についても簡単に触れます。
続きを読む "番外編 PIC18F4580のCAN制御 その4
評価、実験の説明" »
今回は実験1のプログラム・コードについて少し詳しく説明します。
それから、相手となるCAN-LCDボードのプログラムもアップしておきます。
続きを読む "番外編 PIC18F4580のCAN制御 その5
実験1のプログラムの説明" »
今回は、CANドライバ関数のソースについて説明します(一部省略)。これから説明する部分は実験1、2共通です。
続きを読む "番外編 PIC18F4580のCAN制御 その6
CAN制御ドライバ ・プログラムの説明" »
今回は実験2のプログラムについて説明します。
実験2のプログラムは、実験1のプログラムにCAN受信処理とカウンタ値をCAN送信する処理を追加したものです。
実験1から変更になっている部分を説明します。なお、ドライバ関数は実験1とまったく同じものですので、説明は省略します。
続きを読む "番外編 PIC18F4580のCAN制御 その7
実験2のプログラムの説明" »
これまで説明してきた、CANドライバ、実験プログラムをCCS-Cに移植しましたのでアップします。今回アップしたのは、実験2のほうだけですが、実験2のプログラムは実験1の機能を含んでいます。
続きを読む "番外編 PIC18F4580のCAN制御 その8
CCS-C版プログラム" »