CAN BUS Identifier

Gast #1621172
Lesenswert?
• ▲
▼
Hallo.
Ich taste mich grad an den CAN BUS ran und finde keine Antwort auf 
folgende Frage:

Ich empfange die Nachrichten über die Interrupt Routine. Diese wird bei 
jeder eingehenden Nachricht ausgelöst. Alle Nachrichten kommen in MoB1 
an.

Wie kann ich die Nachrichten innerhalb der ISR anhand des Identifier 
unterscheiden, wenn der MoB die ID´s 0 - 100 zulässt ?
Beispiel:
Wert a hat ID 100 und soll in Variable a gespeichert werden;;
Wert b hat ID 101 und soll in Variable b gespeichert werden.

Kann ich innerhalb der ISR das CAN Identifier Mask Register dazu 
benutzen ?

Ein kleines Beispiel in C wäre traumhaft...

Ich benutze den AT90CAN128
#1621179
Lesenswert?
• ▲
▼
Du kannst direkt das MOb ID Tag Register (CANIDT1-4) auslesen. da steht 
der empfangene ID Tag drin. Anhand dessen kannste dann entscheiden, was 
zu tun ist.
Schau dir mal die AVR-Lib von Atmel für den CAN128 an. Die ist zwar 
erstmal nicht Int-basiert sondern pollt, aber die hat sehr schöne 
Strukturen vordefiniert mit denen man dann einfacher auswertbare 
Ergebnisse bekommt.

Gruß
Fabian
Gast #1621185
Lesenswert?
• ▲
▼
Tobi P schrieb:
> Wie kann ich die Nachrichten innerhalb der ISR anhand des Identifier
> unterscheiden, wenn der MoB die ID´s 0 - 100 zulässt ?
> Beispiel:
> Wert a hat ID 100 und soll in Variable a gespeichert werden;;
> Wert b hat ID 101 und soll in Variable b gespeichert werden.

Warscheinlich nur ein Tipfehler aber
Wert b (ID 101) sollte gar nicht angenommen werden.
Gast #1621190
Lesenswert?
• ▲
▼
Fabian B. schrieb:
> Du kannst direkt das MOb ID Tag Register (CANIDT1-4) auslesen. da steht
> der empfangene ID Tag drin. Anhand dessen kannste dann entscheiden, was
> zu tun ist.

Also könnte ich die ID der Nachricht dort auslesen und innhalb der ISR 
mit switch/case arbeiten...??? Könnte es wirklich so einfach sein ?
Gast #1621193
Lesenswert?
• ▲
▼
Daniel schrieb:
> Tobi P schrieb:
>> Wie kann ich die Nachrichten innerhalb der ISR anhand des Identifier
>> unterscheiden, wenn der MoB die ID´s 0 - 100 zulässt ?
>> Beispiel:
>> Wert a hat ID 100 und soll in Variable a gespeichert werden;;
>> Wert b hat ID 101 und soll in Variable b gespeichert werden.
>
> Warscheinlich nur ein Tipfehler aber
> Wert b (ID 101) sollte gar nicht angenommen werden.

Ja natürlich Tippfehler. sagen wir mal ID#s sind 99 und 100

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.