Hallo zusammen, ich habe ein kleines Problem mit meinem CAN-Bus. Vielleicht kann mir ja jemand den nötigen Denkanstoss geben. Also, der Bus läuft soweit und die Nachrichten werden auch übermittelt. Nun will ich aber nur bestimmte Nachrichten empfangen und die Filter des MCP2515 setzen. Dazu habe ich folgendes gemacht: // Buffer 0 : Nur 29 Bit Identifier zulassen und filtern mcp2515_write_register( RXB0CTRL, (1<<RXM1)); // Buffer 1 : Nur 29 Bit Identifier zulassen und filtern mcp2515_write_register( RXB1CTRL, (1<<RXM1)); //Filter mcp2515_write_register( RXF0SIDH, 0b11110111); mcp2515_write_register( RXF0SIDL, 0b00000000); mcp2515_write_register( RXF0EID8, 0b00000000); mcp2515_write_register( RXF0EID0, 0b00000000); //Maske mcp2515_write_register( RXM0SIDH, 0b11111111); mcp2515_write_register( RXM0SIDL, 0b00000000); mcp2515_write_register( RXM0EID8, 0b00000000); mcp2515_write_register( RXM0EID0, 0b00000000); Wenn ich das Datenblatt richtig verstanden habe, dann müsste doch nun alles akzeptiert werden, wo die obersten 8bit 11110111 sind und der Rest ist egal. Leider akzeptiert der aber irgendwie nix mehr. Gruß Lars
Gast
#1638513
> mcp2515_write_register( RXF0SIDL, 0b00000000);
Musst du hier nicht das Bit EXIDE setzen, wenn du 29-Bit ID verwendest?
Thomas
Hallo Thomas, da könntest Du natürlich recht haben, ich wusste das ich wahrscheinlich irgendeine Kleinigkeit übersehen habe. Das werde ich gleich heute Abend mal ausprobieren. Ich bin eigentlich davon ausgegangen, dass er das EXIDE bit ignoriert, da das Maskenbit an der stelle auf 0 steht. Wenn der MCP2515 dennoch an dem EXIDE Bit festlegt, ob es ein 11 oder 29bit Filter ist, dann wird er das sicherlich brauchen. Danke schonmal, werde berichten, obs daran lag. Gruß Lars
Hallo, ich kann berichten, es funktioniert. Für manche Feinheiten ist es manchmal zu spät Abends, da übersieht man solche Sachen. Danke nochmal Gruß Lars
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.