CAN Identifier ermitteln

Gast #4105962
Lesenswert?
• ▲
▼
Guten Abend,
ich habe mal eine Frage zur CAN-Kommunikation. Eine CAN-Nachricht hat 
neben den eigentlichen Daten auch einen 11-Bit, bzw. 29-Bit Identifier. 
Wie bekommt jetzt der Mikrocontroller mit, dass die Nachricht für ihn 
ist? muss man dazu im Code des Mikrocontrollers bei einer einkommenden 
Nachricht die Daten abfragen?
z.B.

if(Nachricht & 0xE000000... == 111){
...
}

wobei 0xE00000... die ganze CAN-NAchricht ist und nur bei der ID die 
entsprechenden Bits 1 hat. Hier ist die ganze ID
00000000111

So würde der Mikrocontroller die Nachricht nur ausführen, wenn der 
Itendifier 111 ist.

Oder wird das anders gemacht?
#4105986
Lesenswert?
• ▲
▼
Frank schrieb:
> Wie bekommt jetzt der Mikrocontroller mit, dass die Nachricht für ihn
> ist?

"der Mikrocontroller" also. Bisschen unspezifisch. Im Zweifel steht die 
Antwort im Datenblatt ;-)

Ich hatte für CAN bisher nur den AVR AT90CAN128 in der Hand und der 
macht die Filterung auf den Message Identifier in Hardware. Die 
Identifier (ID und Maske; siehe Datenblatt), die du empfangen willst, 
schreibst du in ein Register und das CAN-Modul löst nur dann einen 
Interrupt aus, wenn ein Frame mit der richtigen ID empfangen wurde. Alle 
anderen Frames ignoriert er und deine Software bekommt davon nichts mit.
#4106012
Lesenswert?
• ▲
▼
Frank schrieb:
> Oder wird das anders gemacht?

Mal etwas anders denken. Die Nachrichten werden empfangen. Was die 
einzelnen Bits in den Nachrichten an welcher Stelle steh,t ist bekannt. 
Was diese bedeuten auch (kann alles mögliche sein). Das Programm wertet 
dann die Information aus und macht was sinnvolles.

Der Gedanke die Nachricht auszuführen ist etwas zu eng gedacht.Es muss 
nicht unbedingt ein Steuerkommando  enthalten sein.
Gast #4106308
Lesenswert?
• ▲
▼
Frank schrieb:
> Das macht das ganze zwar nicht einfacher

Na irgendwie schon. Sonst wäre der Prozessor bei einem Bus, auf dem ein 
bisschen was los ist, nur mit Dekodieren und gucken "bin ich gemeint" 
beschäftigt und hätte entsprechend wenig Zeit für andere Dinge, ganz 
abgesehen von den Anforderungen an ein entsprechend echtzeitfähiges 
Programm.

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.