CAN 用に dsPIC30F4011 をプログラミングしています。しかし、識別子、マスク、フィルターの指定に問題があります。
私は標準識別子とエクステンデット識別子を使用します。ビット 16-23 には、トランシーバーのアドレスを書き込みます。したがって、00000 00000001 0000000000000001 のように見えます。スペースは、次のビットを設定したトランシーバー部分を示すためのものです。
// PRIO
C1TX0SIDbits.SID10_6 = 0x0000;
// SCR
C1TX0SIDbits.SID5_0 = 0x0000;
C1TX0EIDbits.EID17 = 0x0000;
C1TX0EIDbits.EID16 = 0x0001;
// DEST
C1TX0EIDbits.EID15 = 0x0000;
C1TX0EIDbits.EID14 = 0x0000;
C1TX0EIDbits.EID13 = 0x0000;
C1TX0EIDbits.EID12 = 0x0000;
C1TX0EIDbits.EID11 = 0x0000;
C1TX0EIDbits.EID10 = 0x0000;
C1TX0EIDbits.EID9 = 0x0000;
C1TX0EIDbits.EID8 = 0x0000;
// CMD
C1TX0DLCbits.EID5_0 = 0x0001;
今、マスクと設定したフィルターに問題があります
// Mask
C1RXM0SID = 0x00FD;
C1RXM0EIDH = 0x0C00;
C1RXM0EIDL = 0x0000;
// Filter
C1RXF0SID = 0x0000;
C1RXF0EIDH = 0x0400;
C1RXF0EIDL = 0x0000;
今、私は何も受け取りません。私が設定した場合
C1RXM0SID = 0x000FC;
すべてのメッセージを受け取ります。トランシーバーアドレスで試してみました
0b00000000
と
0b00000001
それで、私は何か悪いことをしましたか?(そう思うのですが、よくわかりません)