Can bus filter

Gast #5349548
Lesenswert?
• ▲
▼
Hallo,

ich betreibe ein CAN- Bus Netzwerk mit CAN Standard Frames (2048 
identifiers).

Ich möchte nun einen Filter schreiben, welcher nur Pakete mit dem 
Identifier "0x003" und als ersten Datenbyte den Wert "0x01" annimmt.

Ich verwende einen Arduino mit der MCP 2515 Libary, dazu ein Beispiel 
der Filter: 
https://github.com/coryjfowler/MCP_CAN_lib/blob/master/examples/Standard_MaskFilter/Standard_MaskFilter.ino

Setze ich nur eine Mask, so werden trotzdem alle Pakete angenommen, 
setze ich beide Mask (muss ich immer beide setzen?), so werden gar keine 
mehr angenommen.

Code:
1
  _bus->init_Mask(0,0,0x0FFFFF00);                // Init first mask...
2
  _bus->init_Mask(1,0,0x0FFFFF00);                // Init second mask...
3
  _bus->init_Filt(0,1,0x00030100);                // Init first filter...

Auch bei folgenden Beispiel werden keine Pakete mehr mit dem Identifier 
0x003 angenommen:


Code:
1
  _bus->init_Mask(0,0,0x0FFF0000);                // Init first mask...
2
  _bus->init_Mask(1,0,0x0FFF0000);                // Init second mask...
3
  _bus->init_Filt(0,1,0x00030000);                // Init first filter...

Könnt ihr mir helfen?

Danke!
Gast #5349699
Lesenswert?
• ▲
▼
Christopher B. schrieb:
> Siehe hier
>
> https://github.com/coryjfowler/MCP_CAN_lib/blob/master/mcp_can.cpp#L600

Ok danke!

Ich kann es gerade nicht testen, aber sollte dieses hier rein 
theoretisch funktionieren oder gibts da einen Denkfehler:
1
  _bus->init_Mask(0,0,0x0FFFFF00);                // Init first mask...
2
  _bus->init_Mask(1,0,0x0FFFFF00);                // Init second mask...
3
  _bus->init_Filt(0,0,0x00030100);                // Init first filter...

Somit sollte ich nur Nachrichten mit dem Identifier 3 und dem ersten 
Datenbyte mit dem Wert bekommen?
Gast #5349709
Lesenswert?
• ▲
▼
Hab mich gerade noch eingelesen, müsste es zufällig so lauten;
1
  _bus->init_Mask(0,0,0x07FFFF00);                // Init first mask...
2
  _bus->init_Mask(1,0,0x07FFFF00);                // Init second mask...
3
  _bus->init_Filt(0,0,0x00030100);                // Init first filter...
Beitrag #5379150 wurde von einem Moderator gelöscht.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.