init_Mask()

説明

CAN IDのシールド。86Duinoにおいては, 32 組のCAN IDシールドが存在し,外部設備によるCANデータより,シールドは取得可能なCAN ID 範囲を判断する(0 ~ N 區間);この関数は init_Filt()と組み合わされ, CAN IDをA ~ B区間に制限する。もしsketch においてinit_Mask() 或いはinit_Filt()が無い場合は,CAN 関数は會自動的にCAN ID のデータを取得する。

語法


CAN.init_Mask(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:3. CAN_STDID_REMOTE: 標準遠端画像, CAN 2.0A の規範に符合し,ID範囲:0 ~ 0x7FF
  4. CAN_EXTID_REMOTE:4. CAN_EXTID_REMOTE: 遠端画像を展開, CAN 2.0B 規範に符合し,ID範囲:0 ~ 0x1FFFFFFF

ulData:シールド值。以下を確認されたい

        濾過機設定がされていない:
        0 0 0 0 0 0 0 0    濾過機値: 0x00
        0 0 0 0 0 0 1 1    シールド值: 0x03

        CAN ID の取得期間を:0x00 ~ 0x03 とする

        濾過機の設定:
        0 0 0 1 1 0 0 1    濾過機值: 0x19
        0 0 0 0 0 0 0 1    シールド值: 0x01

         CAN IDの取得期間を:0x18、0x19 とする

        0 1 0 1 1 1 0 0    濾過機值 :0x5C
        0 0 0 0 0 1 1 1    シールド值: 0x07

        CAN ID の取得区間を:0x58 ~ 0x5F とする

ポストバック

CAN_FAIL:設定失敗
CAN_OK:設定成功

Examples

#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 濾過器を設定し,値を 0x019とし,標準データ画像を使用する
    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_Filt()
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.