MOb-Register befüllung beim AT90CAN128

Gast #3548096
Hallo,

Ich verwende AT90CAN128 und habe dazu eine rein theoretische Frage:

Szenario:
Auf dem CAN-Bus kommt ein Frame zu dem es ein passendes MOb gibt und ein 
Hit wird erkannt. Die IDT, IDE DLC weden geupdated und die 8 Daten-Bytes 
werden im Register des MOb abgelegt. -> RXOK

Was passiert nun wenn ein weiterer Frame mit der gleichen ID, jedoch 
anderen Daten, kommt bevor ich in meinem Programm die Daten des alten 
Frame ausgelesen habe?

Werden die Register einfach überschrieben? Oder bleibt der Frame im 
Receive-Buffer bis das das Register des MOb wieder frei ist?
Gast #3549503
Das MOb wird also mit Setzen des RXOK disabled. Also sehe ich es 
richtig, dass weitere Frames der gleichen ID bis zum Auslesen und Reset 
von CANCDMOB einfach ignoriert werden?
Gast #3549546
Ja, solange die Messsage-Box nicht wieder auf Empfang geschaltet wird 
nimmt sie halt keine Daten an.

Das dürfte sich aber in der Praxis eher nicht so auswirken das 
Botschaften verloren gehen, der CAN ist ja doch recht langsam.
Eine CAN-ISR die einfach nur die Daten aus dem MoB schaufelt ist in 
weniger als 2µs fertig.

Wie kurz kann ein Frame sein? Ich komme auf mindestens 52 Bits bei einem 
Byte Daten, also 52µs bei 1MBit.
8 Byte Nutzdaten und 500kBit wären dann 216µs.

Also richtig viel Zeit dafür zu sorgen, dass die Daten verstaut sind.

100% Buslast hat man dann ja auch nicht.
#3549625
Man kann auch mehrere MOBs auf den gleichen ID setzen.
Allerdings wird dann immer der unterste freie befüllt, d.h. die 
Reihenfolge ist nicht garantiert. Man kann dann mit dem Timestamp 
feststellen, welcher MOB die früheste Nachricht enthält.
Gast #3549778
Man kann auch mehrere belegen, klar.
Aber wofür? Wenn man es nicht schafft eine MoB in >> 50µs frei zu 
machen, dann werden auch drölf MoBs früher oder später voll sein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.