AT90CAN128 Identifier filtern ?

Gast #2475449
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 ?
Gast #2487033
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

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.