戻る CQ出版

動かして学ぶCAN通信

サポート・ページ

ファイル類のダウンロード

ダウンロードの前にお読みください
 最初に、ファイルの構成のテキストファイルをダウンロードしてください。
 ほかの圧縮したzipファイルの位置関係を示しています。

ファイル構成をダウンロード  【filelist.txt】 (4KB)
Arduinoをダウンロード  【arduino.zip】 (74KB)
CCSCをダウンロード  【ccsc.zip】 (492KB)
WinAVRをダウンロード  【winavr.zip】 (150KB)
WinCSをダウンロード  【wincs.zip】 (1,999KB)

以下は、WizC15内のファイルです。
_Prj001をダウンロード  【_prj001.zip】 (635KB)
_Prj002をダウンロード(_Prj002-242を含む)  【_prj002.zip】 (1,110KB)
_Prj003をダウンロード(_Prj003A、B)  【_prj003.zip】 (1,750KB)
_Prj004をダウンロード  【_prj004.zip】 (1,091KB)
_Prj005をダウンロード(_Prj005Bを含む)  【_prj005.zip】 (1,546KB)
Commonをダウンロード  【common.zip】 (35KB)
LcdNWTestをダウンロード  【lcdnwtest.zip】 (181KB)
Prj701をダウンロード  【prj701.zip】 (995KB)
Prj801をダウンロード  【prj801.zip】 (650KB)
Prj901をダウンロード  【prj901.zip】 (3,042KB)

Arduinoの基本編のプログラム

 書籍内で利用しているArduinoのバージョンは0014です。その後のバージョン(0017と思われる)以降で、ファイル名の命名規則が変更されたため、用意したファイルを読み込むことができません。
1.ファイル名に"-"(マイナス)が使えない。"_"(アンダスコア)はok
2.ファイル名の先頭に数字が使えない
3.文字コードはUTF-8に要変換

 これらに対応したファイルを用意しましたので、ご利用ください。

P258_N1をダウンロード 【p258_n1.zip】 (72KB)

#219基板で温度測定が安定しない場合の対処法

 原因は、シャント・レギュレータの電圧が安定しないためです。PICのVRev+(5番ピン)とGND(8番ピン)あたりに0.1μFのセラミック・コンデンサを取り付けてください。
 これで安定するはずです。

CANノード制御用Windowsアプリ アップデート

 第8章 CANブリッジ、第9章 組み合わせのWindowsアプリケーションのアップデートをアップします。
どちらもVisualStudio2008版にアップグレード済みです。

CAN_CSをダウンロード  【can_cs.zip】 (267KB)
-----------------------------------------
内容
(1) 08\CanBridge
CANブリッジ制御用Windowsアプリケーションのプロジェクト・フォルダ
実行ファイル "08\CanBridge\bin\Release\CanBridge.exe"

(2) 09\CanCont
組み合わせ制御用Windowsアプリケーションのプロジェクト・フォルダ
実行ファイル "09\CanCont\bin\Release\CanCont.exe"

修正箇所
 第8章のCANブリッジ制御アプリケーションで、直接シリアル・コマンドを送信するためのテキスト・ボックスが空欄の場合に例外が発生しないように、空欄のときは送信処理を無視するように修正しました。
 第9章のアプリケーションは、サーボ用のトラックバー・コントロールの初期状態を中央(90°)のニュートラル位置にしました。
 そのほか、関係のないファイルを削除してフォルダ内を少し整理しました。
-----------------------------------------

第9章 WIZ-C版ノード1 アップデート

 第9章で使うPIC版ノード(ノード1)のWIZ-Cソースを修正したものをアップします。

WIZC_901UDをダウンロード 【wizc_901ud.zip】 (176KB)
-----------------------------------------
内容
 Prj901\219-N1フォルダ一式
 #219基板用のノード#1プログラムです。

アップデート方法
 既存のPrj901\219-N1を丸ごと入れ替えてください。相対パスで"Common"フォルダなどを参照しているため、フォルダ構成は変更不可です。
 このプロジェクトはWIZ-C Ver.16でコンパイルしています。

修正箇所
 第10章で使うArduinoノード関係の処理が抜けていました。申し訳ございません。
-----------------------------------------

CAN Arduinoスケッチパック

 書籍内の第10章で使用する、サーボ、PWM制御ができるArduinoノードのスケッチをアップします。
 ついでにWIZ-C版のCANバスモニタ(第7章)、CANブリッジ(第8章)、PC I/F(第9章)の各ノードもArduinoに移植しましたので、一緒にアップしておきます。
 各章の#219-N1ノードと完全に置き換えが可能です(各ノードはArduino+#258基板で製作)。

 なお、Arduinoから適当な方法でSPI信号と電源ラインを引きだし、ブレッドボードなどでCANコントローラ回路を製作して接続することで、#258基板を使わなくても利用可能です。シリアル通信にはArduinoのUSBを利用しますので、必要なものはCANコントローラ関係の回路だけです。

Can_Arduinoをダウンロード  【can_arduino.zip】 (44KB)
-----------------------------------------
内容
(1) Prj0701AR
 CANバスモニタ用Arduino版ノード。WIZ-C版から移植。Arduino+#258基板で作動。

(2) Prj0801AR
 CANブリッジ用Arduino版ノード。WIZ-C版から移植。Arduino+#258基板で作動。

(3) Prj0901AR
 複合アプリケーションのPC I/F用Arduino版ノード。WIZ-C版から移植。Arduino+#258基板で作動。

(4) Prj1001
 第9章のCANバスに接続するArduinoノード(ノード#5)。サーボ、PWM制御用。Arduino+#258基板で作動。
-----------------------------------------

 (1)〜(3)は書籍には未掲載ですが、大部分はPIC版と同じですので、PIC版の記事を参考にしてください。
 各スケッチ・フォルダは適当な場所に解凍して、それぞれのフォルダにあるスケッチファイル("*.pde")をArduinoスケッチブックから開けば即利用可能です。使用したArduinoスケッチブックのバージョンは018です。

CCS-C 、WIZ-Cでコンパイルエラーが発生する場合の対処法

 CCS-C 、WIZ-Cで下記のCANの初期化の行でコンパイル・エラーが発生する場合があります。
CANInit(CAN_BRP_20MHz_125BPS); // CLOCK 20MHz CAN 125bps
その場合は下記のように修正してください。
 誤)"CAN_BRP_20MHz_125BPS"
 正)"CAN_BRP_20MHz_125KBPS"
"K"が抜けています。お詫びして訂正いたします。

###「動かして学ぶCAN通信」で使用したCCSC関係のファイル(共通関数やコンパイル後のヘキサ・ファイル含む)一式

 CCSC 4.071でコンパイルしてあります。 Can_CCSCをダウンロード 【can_ccsc.zip】 (1,317KB)
 共通のドライバやヘッダファイルは相対パスで参照しているため、フォルダ構造を変更しないようにしてください。
 既出の"_Prj002", "Prj701" プロジェクトフォルダも含んでいます。若干修正しています。

<CCS-C移植 注意事項、覚え書き>

(1) 大文字、小文字の区別
 大文字小文字を区別するためにプリプロセッサ "#case" を指定しています。
(2) 文字定数のポインタの扱い
 LCDの表示で、文字列定数を表示する場合は、次のマクロを使用しています。

#define LCDSTRING(str)  strcpy(StrBuf, str);LCDString(StrBuf)

 "LCDString()"はLCDへ文字列を表示する関数です。
 CCS-Cでは関数の引数に定数の文字列のポインタを渡せないため("strcpy"や"printf"などの引数は除く)、いったん配列変数へ設定する必要があります。

 "sprintf()"で文字列を配列に作成している場合は直接"LCDString()"へ渡します。

(3) 一般的なCコンパイラとのデータ型の違い
 CCSCのint型は8ビットです。16ビットの場合はlongかint16と定義します。また、sprintfなどの書式指定で、16ビット変数を使う場合は"l"(エル)をつける必要があります。

 例)
 int16 hex = 0x1234;
 printf("%04lX", hex);

(4) その他
 Prj003Aのノード1(219-N1)と_Prj003Bのノード1(219-N1)はまったく同じものです。
 便宜的にコピーしてプロジェクト・フォルダにまとめてあります。

第1版の訂正

お詫びして訂正いたします。

・p.14 修正図(赤バーは削除)
 【Sp14.jpg】
・p.15 修正図
 【Sp15.jpg】
・p.20 下から2行目
 「CANトランシーバ」 → 「CANコントローラ」
・p.30 本文上から3行目
 「受信ステータス・リード・コマンド」 フォントをゴシックに変更
・p.38 図2-6の図中の計算式で括弧追加
 分子「2 x BPR + 1」 → 「2 x (BPR + 1) 」
・p.50 修正図
 【Sp50.jpg】
・p.53 「●動作確認」2行目
 「LED4」 → 「LED3」
・p.64 図3-7 図中の説明 「CN2ブレッドボード用」の下の行
 「外部ピン(28ピン 800mil)」を削除
・p.125 コラム記事 右列上から4行目
 「...というです。」 → 「...ということです。」
・p.172 「●使用する部品と材料」の上から3行目のモータ型番
 「RE-130」 → 「FA-130」

 掲載時およびダウンロード・ファイルでは,Arduinoのスケッチの拡張子はpdeですが,バージョン1.0からinoに変更されました.文字コードUTF-8のテキスト・ファイルです.