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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren