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)
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:)
Hallo Taliban :) wäre echt cool wenn Du mir Dein Ergebnis hier postest...irgendwie scheine ich der Einzige mit dem Problem zu sein???
...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...
.....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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.