Forum: Mikrocontroller und Digitale Elektronik can-bus mcp2515 -----filter-maske-----


von Bestromer (Gast)


Lesenswert?

Servus Leute,

Wie im Betreff schon angekündigt,handelt es sich um einen MCP2515 
Can-Controller und dessen Filter/Maskeneinstellung.


Ich habe Filter RXF0 und RXF1 auf zwei Extended-IDs gesetzt und 
entsprechend in der Maske RXM0 alle Bits auf 1, da nur diese zwei IDs 
gefiltert werden sollen.
Soweit ist alles gut und der Filter funktioniert prima...

Jetzt würde ich gern eine Extended und eine Standard-ID filtern,also 
stelle
ich eine Standard-ID in Filter RXF1 ein.
Das Ergebnis ist nun, das die Extended-ID weiterhin prima gefiltert wird 
und die Standard-ID nicht durch den Filter kommt.

Grundsätzlich wird ja durch das EXIDE-Flag im Filter festgelegt ob die 
ID als Extended- oder Standard-ID behandelt wird....?
Leider musste ich jetzt feststellen das die Maske unabhängig vom 
EXIDE-Flag immer auf die volle Bitbreite von 29 Bit Anwendung findet, 
selbst wenn nur eine Standard-ID im Filter steht.

Stelle ich die Maske auf die ersten 11 Bit,dann funktionert das Filtern 
der Standard-ID, allerdings hab ich dann entsprechend bei den Filter der 
Extended-IDs durch die 11-Bit-Maske eine ganze Range (alles grösser 11 
Bit) "freigeschaltet"....das soll so aber nicht sein ;-)

Ist es also wirklich so,dass man dadurch in einem Empfangspuffer nicht 
beide ID-Typen gemischt empfangen kann??
Eine gemeinsame Nutzung der Maske für beide Typen wäre doch über das 
EXIDE-Flag möglich...ich kann mir nicht vorstellen das dies nicht 
implementiert ist :(


Vielleich stand ja jemand schon mal vor dem Problem?
Im Datenblatt ist alles recht schwammig erklärt....


Danke fürs lesen und beste Grüsse :o)

von taliban (Gast)


Lesenswert?

Hallo,

das ist eine gute Frage, hatte selber nur immer entweder Standard oder 
extended auf meinem Bus.
Selbstverständlich kann man auch gemischt auf dem selben Bus senden und 
dann sollte m.e. schon die selbe Maske für beide idtypen nutzbar sein, 
sonst wäre das exide Flag ja sinnfrei!
Werde es mal kommende Woche testen:)

von Bestromer (Gast)


Lesenswert?

Hallo Taliban :)
wäre echt cool wenn Du mir Dein Ergebnis hier postest...irgendwie 
scheine ich der Einzige mit dem Problem zu sein???

von Bestromer (Gast)


Lesenswert?

...eine nützliche Angabe hab ich noch vergessen...
Der Receive Buffer Operating Mode ist nätürlich auf RXM=00 gestellt.
(Receive all valid messages using either standard orextended identifiers
thatmeet filter criteria)

Somit sollte ich beide Message-Typen mit der selben Maske verarbeiten 
können,
ansonsten wäre ja auch dieser Modus sinnfrei...

nochmal kurz die anderen Modes zur Übersicht:

11= Turn mask/filters off; receive any message
10= Receive only valid messages with extended identifiers that meet
    filter criteria
01= Receive only valid messages with standard identifiers that meet
    filter criteria
00= Receive all valid messages using either standard orextended
    identifiers thatmeet filter criteria

...setze ich den Modus auf standard identifiers (RXM=01) dann wird die 
entsprechende standard-id natürlich durchgelassen...dies sollte auch bei
Modus RXM=00 funktionieren, tut es aber irgendwie nicht....
Vielleicht hat ja noch jemand einen Tip...

von Bestromer (Gast)


Lesenswert?

.....naja,wer lesen kann ist klar im Vorteil ;-)

Hab das Datenblatt nun gefühlte 100 mal durchgelesen,allerdings dieses 
mal
auch den offenbar nebensächlichen Dingen Beachtung geschenkt.
Es ist tatsächlich so, dass man in dem Mode RXM=00 beide Identifier 
empfängt,
wobei wie vermutet die komplette Maske mit 29Bit anwendung findet.
In Fall eines Standard-ID-Frames wird einfach der 11-Bit Identifier 
zusammen
mit den ersten beiden Datenbytes aus dem Datenfeld mit dem hinterlegten 
Filter verglichen.
Das klingt im ersten Moment doof, macht aber bei Protokollen durchaus 
Sinn ;-)

Wenn man gemischt empfangen will, so bleibt eben nur einen der beiden 
Puffer für standard-, den anderen für extended-Id zu 
konfigurieren....gemeinsam in einem Puffer geht das nicht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.