RXマイコンのCAN通信のWORDデータについて

はじめまして、ODAと申します。
RL78マイコンをCS+ for CA,CXを使ってプログラムを作成してきましたが、今回、初めて
RXマイコンをCS+ for CCを使ってプログラム作成にチャレンジして、つまずいております。
CAN通信において、RL78ではBYTEデータでもWORDデータでも簡単に処理できましたが、

RL78の送信データの事例
TMDF00L = 0x01;  //BYTEデータ
TMDF00H = 0x23;  //BYTEデータ
TMDF10 = 0x4567; //WORDデータ
TMDF20 = 0x89AB; //WORDデータ

RXにおけるWORDデータの処理方法がわかりません。
事例として、動作確認済みのBYTEデータの送信プログラムを記載します。

CAN0.MCTL[0].BYTE = 0x00;    // 送信準備
CAN0.MB[0].ID.BIT.SID = 0x777;
CAN0.MB[0].DLC = 8;
CAN0.MB[0].DATA[0] = 0x01;  //BYTEデータ
CAN0.MB[0].DATA[1] = 0x23;
CAN0.MB[0].DATA[2] = 0x45;
CAN0.MB[0].DATA[3] = 0x67;
CAN0.MB[0].DATA[4] = 0x89;
CAN0.MB[0].DATA[5] = 0xAB;
CAN0.MB[0].DATA[6] = 0xCD;
CAN0.MB[0].DATA[7] = 0xEF;
CAN0.MCTL[0].BYTE = 0x80;    // 送信リクエスト
// 送信完了待ち
while (CAN0.MCTL[0].BIT.TX.SENTDATA != 1){};

ユーザーズマニュアルのメールボックスの説明に
「DATA0~DATA3、あるいはDATA4~DATA7を32ビット単位で一度にアクセスすることはできません。
DATA0~DATA1、DATA2~DATA5、DATA6~DATA7の3回、または、DATA0~DATA1、DATA2~DATA3、
DATA4~DATA5、DATA6~DATA7の4回に分けてアクセスしてください。」
と記入されていますので、WORDデータの処理も可能と考えますが、具体的なアクセス方法(プログラム)
を教えて頂きたく、よろしく、お願い致します。

勝手に下記の内容で、チャレンジしましたが、エラーとはなりませんが、正確なデータは送信できませんでした。
CAN0.MB[0].DATA[01] = 0x0123;  //WORDデータ

Parents
  • odawaraさん?ODAさん? NAKAといいます。

    なぜDATAを2Byteごとに書きたいんでしょうか?
    iodefine.hでも2byteで入力できる構造になってないと思うんですけど?
    自分でこの部分を改造しちゃいますか?(笑)

    struct st_can {
    struct {
    union {
    unsigned long LONG;
    struct {
    unsigned short H;
    unsigned short L;
    } WORD;
    struct {
    unsigned char HH;
    unsigned char HL;
    unsigned char LH;
    unsigned char LL;
    } BYTE;
    struct {
    unsigned long IDE:1;
    unsigned long RTR:1;
    unsigned long :1;
    unsigned long SID:11;
    unsigned long EID:18;
    } BIT;
    } ID;
    unsigned short DLC;
    unsigned char DATA[8];
    unsigned short TS;
    } MB[32];

Reply
  • odawaraさん?ODAさん? NAKAといいます。

    なぜDATAを2Byteごとに書きたいんでしょうか?
    iodefine.hでも2byteで入力できる構造になってないと思うんですけど?
    自分でこの部分を改造しちゃいますか?(笑)

    struct st_can {
    struct {
    union {
    unsigned long LONG;
    struct {
    unsigned short H;
    unsigned short L;
    } WORD;
    struct {
    unsigned char HH;
    unsigned char HL;
    unsigned char LH;
    unsigned char LL;
    } BYTE;
    struct {
    unsigned long IDE:1;
    unsigned long RTR:1;
    unsigned long :1;
    unsigned long SID:11;
    unsigned long EID:18;
    } BIT;
    } ID;
    unsigned short DLC;
    unsigned char DATA[8];
    unsigned short TS;
    } MB[32];

Children
No Data