init_Filt()
説明
CAN ID の濾過機。86Duinoには, 32 組のCANによるID濾過機が存在し、外部システムによるCANデータから、濾過機はどのCAN IDを受信するか決定することが可能である;
関数は init_Mask()がふさわしく、取得可能なCAN IDはA ~ Bに限定される。
もしsketch内に、sketchと呼ばれるものもinit_Filt()と呼ばれるものもない場合は、CAN関数が自動的にCAN IDデータを取得する。
語法
CAN.init_Filt(num, ext, ulData)
パラメータ
num
:濾過機の番号,値の範囲は: 0 ~ 31
ext
:送信の形式には,以下の4 種がある
- CAN_STDID:標準データ画像, CAN 2.0A 規範に符合し,ID範囲は:0 ~ 0x7FF
- CAN_EXTID:データ画像を展開し、CAN 2.0B規範に符合し,ID範囲は:0 ~ 0x1FFFFFFF
- CAN_STDID_REMOTE:標準遠端画像, CAN 2.0A 規範に符合し,ID 範囲は:0 ~ 0x7FF
- CAN_EXTID_REMOTE:遠端画像を展開し, CAN 2.0B 規範に符合し,ID 範囲は:0 ~ 0x1FFFFFFF
ulData
:濾過機の値。下記を参照のこと:
シールドの設定なし
0 0 0 0 0 0 1 1 濾過機值: 0x03
0 0 0 0 0 0 0 0 シールド值:0x00
Range of CAN ID to receive data::0x03
シールド設定あり
0 0 0 1 1 0 0 1 濾過機值:0x19
0 0 0 0 0 0 0 1 シールド值: 0x01
CAN ID の取得区間を:0×18、0×19とする
0 1 0 1 1 1 0 0 濾過機值:0x5C
0 0 0 0 0 1 1 1 シールド值:0x07
CAN ID の取得区間を:0×58 ~ 0x5Fとする
ポストバック
CAN_FAIL:設定失敗
CAN_OK:設定成功
例
#include <CANBus.h> unsigned char buf[8] = {0, 1, 2, 3, 4, 5, 6, 7}; void setup() { Serial.begin(115200); CAN.begin(CAN_500KBPS); // CAN 送信速度を 500KBPSに設定する CAN.init_Filt(0, CAN_STDID, 0x019); // 第 0 濾過機を設定し,値をsx019とし,標準画像データを使用する CAN.init_Mask(0, CAN_STDID, 0x01); // 第 0 シールドを設定し,値を 0x01とし,標準画像データを使用する } void loop() { CAN.beginTransmission(0x00, CAN_STDID); // 外部 CAN device のID を 0x00とし,標準画像データを使用する CAN.write(buf, 8); // 8 bytesデータを送信する CAN.endTransmission(); // 送信完了 delay(10); }
See also
- init_Mask()
- beginTransmission()
- write()
- endTransmission()
The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.