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 種がある

  1. CAN_STDID:標準データ画像, CAN 2.0A 規範に符合し,ID範囲は:0 ~ 0x7FF
  2. CAN_EXTID:データ画像を展開し、CAN 2.0B規範に符合し,ID範囲は:0 ~ 0x1FFFFFFF
  3. CAN_STDID_REMOTE:標準遠端画像, CAN 2.0A 規範に符合し,ID 範囲は:0 ~ 0x7FF
  4. 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()


Libraries Reference Home

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.