Hallo an alle, ich arbeite gerade daran die Messagefilter des MCP2515 so zu setzen, dass nur bestimmte Nachrichten ankommen. Das ganze ist mir durch das Datenblatt und die Suche hier im Forum auch schon gelungen, indem ich die einzelnen Maskbits bzw. die Filterbits des entsprechenden Filters setze. Nun habe ich jedoch noch zwei Fragen auf die ich bis jetzt keine Antwort habe: Frage 1: Ist es möglich die Bits in den Filtern und den Masken so zu setzen, dass keinerlei Nachrichten mehr empfangen werden? Aus der Tabelle im Datenblatt geht dazu nichts hervor. Frage 2: Ich möchte nun noch eine Funktion schreiben mit denen ich eine bestimmte "Bandbreite" an Messages mit diesen ID´s empfange. Also beispielsweie alle Messages mit der ID von 0x011 bis 0x056 (Extended ID´s lasse ich erstmal außen vor). Ich bin jedoch noch nicht darauf gekommen, nach welchem Schema ich die Masken und Filterbits setzen muss, wenn ich eine größere Anzahl von ID´s von einer gegebenen unteren ID bis zu einer vorgegeben oberen ID empfangen möchte. Hat da vielleicht schon jemand Erfahrungen mit gemacht, oder diesbezüglich eine Idee? Sollte ja eigentlich ein gebräuchliches Anliegen an einen Messagefilter sein. Ich wäre sehr dankbar wenn mir jemand weiterhelfen kann. Gruß Kevin
Kevin M. schrieb: > Also > beispielsweie alle Messages mit der ID von 0x011 bis 0x056 (Extended > ID´s lasse ich erstmal außen vor). Moin, wie meinst Du das? Sollen die IDs 11 bis 56 absolut nicht akzeptiert werden? Aber alle anderen? 0x10 -> Ja und 0x57 Ja aber 0x100011 bis 0x100056 nicht? Dieses Maskenfilter kann man in GRENZEN als Gruppenfilter verwenden. Wenn Du aber ganz konkrete Bereiche, die sich durch verschieden verwendete BItpositionen unterscheiden, wird das nur durch eine Software, die dann Laufzeit kostet, zu realisieren sein. 56 hex -> 0b01010110 11 hex -> 0b00010001 Ein gutes Beispiel sind die 56 und 11 hex. Die 56 hat auf Position 2°4 eine Null und die 11 auf Position 2^0 eine Null. Damit die 11 die nicht akzeptiert weden würde, muß Du die 2^0 auf 1 Maskieren wohingegen das Tag-Register auf 0 ist. Damit eine 11hex von der Hardware abgelehnt werden wird. Wenn Du die IDs von 1010 xxxx akzeptieren willst, dann setzt Du die Maskenbits von 2°0 bis 2^4 auf null. Dann würde Botschaften 1010 0001 bis 1010 1111 alle akzeptiert werden. Das Festlegen eines wahlfreien Bereiches mit Offset, wird die Hardware nicht unterstützen. Das mußt Du dann mit Software ergänzen. Insofern ist das geschickte Auswählen von ID-Bereichen eine erforderliche Dispziplin im Umgang mit Maskenfilter. Ich hoffe, dass mein Betrag Dir ein wenig weiterhilft.
Schon mal vielen Danke für die Antwort. Ich habe mich wohl auch ein bisschen schlecht ausgedrückt. Mit "Extended ID´s lasse ich erstmal außen vor" meinte ich, dass ich diese erstmal gar nicht behandle, also ich mich nur um die Filterung bei Standard ID´s kümmere. Ich möchte praktisch eine Art Benutzereingabe realisieren, in welche der Nutzer eingeben kann: Ich möchte nur die ID´s von beispielsweise 0x11 bis 0x56 empfangen und diese damit durch den Filter lassen. Dazu suche ich gerade nach einem passenden Algorithmus, der mir diese "Bandbreite" an zugelassenen ID´s in die passenden Bitfolgen für Bitmaske und Filtermaske des Messagefilters umwandelt. >Wenn Du die IDs von 1010 xxxx akzeptieren willst, dann setzt Du die >Maskenbits von 2°0 bis 2^4 auf null. > >Dann würde Botschaften 1010 0001 bis 1010 1111 alle akzeptiert werden. So ähnlich habe ich mir das gedacht, aber wenn ich nun beispielsweise alle ID´s von 0x015 bis 0x025 zulassen möchte wäre das binär von 0b0001 0101 bis 0b0010 0101. Wenn ich bei diesem Beispiel nur sage, Bit 7 und 8 müssen 0 sein, damit der Messagefilter die Nachricht durchlässt, wäre das ja nicht ganz korrekt und es würden noch andere ID´s zusätlich durchgelassen, beispielsweise 0b00111111. Die Berechnungen dazu wollte ich auf dem PC durchführen und die dort fertig ausgerechneten Masken und Filterbits an den MCP2515 schicken.
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.