MCP2515 Filter und Maske

Gast #2128218
Lesenswert?
• ▲
▼
Hallo!
Kann mir, bitte, jemand erklären, wie ich filter und maske einstellen 
soll?
Und wo ist der Unterschied zwischen Filter und Maske?
Ich werde aus den Datenblatt irgendwie nicht ganz schlau.

So sieht meine Initiaizierung aus:
1
 Mcp2515_init:
2

3
'mcp2515 reset
4
 Mcphilf = Spi_reset
5
 Reset Css
6
   Waitus 10
7
   Spdr = Mcphilf
8
   Do
9
   Loop Until Spsr.spif = 1
10
   Waitus 10
11
 Set Css
12

13
 Mcp2515_write_register Cnf1 , &H03
14
 Mcp2515_write_register Cnf2 , &HBA
15
 Mcp2515_write_register Cnf3 , &H07
16

17
'Interrupt einstellen
18
 Mcp2515_write_register Caninte , &B00000001                'Interrupt auslosen, wenn Nachricht in buffer 0 liegt
19
 Mcp2515_write_register Canintf , &B00000000                'No interrupt pending
20
 Mcp2515_write_register Rxb0ctrl , &B00100000               'Empfange nur durch filter eingestelle Standart ID, Acceptance Filter 0 (RXB0)
21

22
'Maske
23
 Mcp2515_write_register Rxm0sidh , &B10111000               'Maske  High
24
 Mcp2515_write_register Rxm0sidl , &B01100000               'Maske  Low
25

26
'Filter
27
 Mcp2515_write_register Rxf0sidh , &B10111000               'Filter High
28
 Mcp2515_write_register Rxf0sidl , &B01100000               'Filter Low , bit 3 EXIDE Filter fuer Standart Frame
29

30
 Mcp2515_bitmodify Canctrl , &B11101000 , &B00001000        '???

Irgendwie funktioniert der Filter nicht, ich empfange alle Nachrichten.
Danke
Gruss Alex
Gast #2128268
Lesenswert?
• ▲
▼
Das sind aber viel zu viele IDs im Auto :)
Ich kann doch nicht jede Nachricht beim 1000kbps CAN, mit dem AVR 
Empfangen, dann ID vergleichen und wenn es nicht passt, wegschmeisen.
Ich brauche nur eine, höchstens 2 IDs.
Das ist doch übel :)
Desswegen macht es ja Sinn, dass der MCP das filtert.
Leider kriege ich das so nicht zum Laufen.

Ich teste das im Moment so:
Ich habe eine kleine Schaltung, die immer eine Can Nachricht schickt.
Die ID davon ist 1475.

Wenn ich den MCP so konfiguriere, dass er die ID 1475 empfangen soll, 
dass tut er das auch.
 Mcp2515_write_register Rxf0sidh , &B10111000
 Mcp2515_write_register Rxf0sidl , &B01100000
ID 1475 auf sidh und sidl verteilt.

Wenn ich aber ein Bit ändere:
 Mcp2515_write_register Rxf0sidh , &B1011100!1!
 Mcp2515_write_register Rxf0sidl , &B01100000
 dann ist im Filter schon eine andere ID (WENN ICH DAS RICHTIG 
VERSTANDEN HABE), dann empfange ich trotzdem die Nachricht mit der ID 
1475.

Und das kapiere ich halt nicht. Es muss was sein, dass ich vom Grund her 
nicht verstanden habe.
Desswegen auch die Fragen:
1. was ist Filter und was ist Maske? (einfach erklärt)
2. warum braucht man beides?

Bitte, auf den Datenblatt nicht verweisen, den habe ich schon sehr oft 
gelesen.

Danke
Gruss Alex
Gast #2128293
Lesenswert?
• ▲
▼
Fehler gefunden :)
Es muss so sein:

'Maske
 Mcp2515_write_register Rxm0sidh , &B11111111               'Maske  High
 Mcp2515_write_register Rxm0sidl , &B11100000               'Maske  Low


'Filter
 Mcp2515_write_register Rxf0sidh , &B10111000               'Filter High
 Mcp2515_write_register Rxf0sidl , &B01100000               'Filter Low 
, bit 3 EXIDE Filter fuer Standert Frame

Maske muss alles auf 1, damit der MCP jeden Bit der ankommenden ID prüft 
und mit der ID vom Filter vergleicht.
Habe die Tabelle im Datenblatt erstmal nicht verstanden, aber jetzt.

Danke an alle.

Gruss Alex

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.