Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 Identifier filtern ?


von Napoli (Gast)


Lesenswert?

Hallo,

Ich möchte den CAN-Bus auf verschiedene Identifier abfragen. Liegt auf 
dem CAN-Bus eine Message mit einem der gefragten Identifer, soll eine 
bestimme Aktion passieren. So ist die Aufgabenstellung.
Die Identifier sind 0x1000 und 0x2010, 0x2011,..., 0x2019, 0x2020.

Die Frage ist, in Datenblättern und im Internet ist immer von einem 11 
bit Identifier die Rede, also z.B. 0x317. Meine Vorgabe ist aber 
vierstellig. Woher kommt das ? 11 bit 16 bit ?

Und wie lege ich die Register IDM und IDTag fest. Ich habe einfach mal 
mit 16 bit weitergemacht, wobei ich glaube, das das nicht richtig ist.

Für die Filterung habe ich mal folgendes überlegt:
1
ID 0x1000
2
IDMask 1111 1111 1111 1111
3
ID Tag 0001 0000 0000 0000
4
5
6
ID 0x2010 - 0x2017
7
IDMask 1111 1111 1111 1000
8
ID Tag 0010 0000 0000 0XXX
9
10
11
ID 0x2018 - 0x2019
12
IDMask 1111 1111 1111 1110
13
ID Tag 0010 0000 0000 100X
14
15
16
ID 0x2020
17
IDMask 1111 1111 1111 1111
18
ID Tag 0010 0000 0000 0010

Meine Idee:
Aufgeteilt in die 4 Bereiche, frägt man dann immer die einzelnen 
Bereiche in einer Schleife ab.

Oder gibt es einen anderen Weg, wie ich diese Identifier leichter 
filtern kann ?

Oder wie kommt man von den 16 bit zu 11 bit ?

von cskulkw (Gast)


Lesenswert?

Ich glaube Du hast da was mit dem CAN-Standard nicht ganz richtig 
verstanden.

Die 11-Bits ermöglichen einen Bereich von 0 - 7FF hex als CAN-Identifier 
und entsprechen der CAN-Spezifikation 2.0A

Wenn Du mehr willst , dann mußt Du die 29-Bit-Variante verwenden und die 
nicht erforderlichen Bits ungenutzt lassen.
Du müßtest dann jeweils die Register CANIDMSK 1 - 3 benutzen.

Prinzipiell sehe ich nicht, warum Dein Vorhaben nicht programmierbar 
sein sollte. Dir stehen schließlich 15 Messageboxen zur Verfügung.

Du hast jedoch nur einen CAN-Interruptvektor. Darin mußt Du alles 
unterbringen. In Deinem Fall also das Identifizieren, welche Mail-Box 
den Auslösegrund geliefert hat.
Wenn die Daten Dich nicht interessieren, brauchst Du nur das Flag der 
MOb löschen und alles ist gut.

Ich hoffe, Dir hilft das weiter

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.