mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90CAN128


Autor: Tille (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe ein Problemchen mit dem Senden über CAN. Habe ein MOb definiert, 
dass alle CAN messages empfangen kann (Auswertung erfolgt im Interrupt).
Wie kann ich verhindern, dass ich Nachrichten empfange, die der 
Controller über ein anderes MOb selber sendet?
Gibt es beim AT90CAN128 irgendwo eine Einstellung, wo man das Empfangen 
eigener CAN Nachrichten disablen kann?

Gruß
Tille

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es beim AT90CAN128 irgendwo eine Einstellung, wo man das Empfangen
>eigener CAN Nachrichten disablen kann?

Wie soll das gehen?
Ein CAN-Datenrahmen enthält keine Absenderinformationen, anhand derer 
man Nachrichten filtern könnte.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CAN mag nicht besonders, wenn sich Frames aus verschiedener Quelle nur 
im Body, nicht aber in der ID unterscheiden, da es dann bei 
gleichzeitigem Senden zu Fehler kommen kann.

Folglich muss man ohnehin darauf achten, dass keine 2 Nodes die gleiche 
ID senden. Womit sich das Problem eigentlich erledigt, weil dann 
entsprechene Filter möglich sind. Kann allerdings passieren, dass der 
ID-Adressraum zu sehr fragmentiert und die Filtereinträge knapp werden.

Notfalls kann man auch das immerhin 29 Bit lange EID-Feld in 3 Blöcke 
zerlegen: Zieladdresse, Quelladresse, Msgno. Dann ist man ziemlich dicht 
an quell/zieladressierten Frames, wie man sie aus Ethernet kennt.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist dir das wirklich passiert, dass du gesendete Frames im 
Empfangsbuffer hattest?

Ich habe bis jetzt nur mit anderen CAN-Bausteinen gearbeitet (Freescale 
und Infineon), und dabei ist mir eigentlihc noch nie (bewusst) ein 
selbst gesendetes Frame untergekommen. Auch wenn ich keine Filter 
gesetzt hatte.

Gruß,
Heiko.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
glaub ich auch nicht so recht - werde ich gleich mal probieren.
Bis jetzt habe ich noch nie Filter im CAN-Controller benutzt. Alle 
Botschaften werden gelesen, Identifier ab in case-Schleife, wenn sich 
nichts passendes findet, ist es im Nirwana. Zeitprobleme hatte ich mit 
dieser Vorgehensweise noch nie.
Ganz am Anfang hatte ich mal mit Filtern angefangen, hat sich dann aber 
als lästig bei Programmerweiterungen erwiesen (vergisst man schon mal zu 
ändern, oder baut sich gar neue Fehler ein:-).

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt welche: LPC2100/2200. Die haben zwar auch einen self-receipt Filter 
drin, der filtert aber so gut (zu gut), dass im Erratasheet drinsteht, 
mag möge diesen Filter doch bitte ausschalten ;-).

Autor: Mike Tilgner (tille)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke ersteinmal, vielleicht versuche ich mein Problem noch etwas 
genauer darzustellen.
Es geht um das address claiming bei J1939. Ich sende eine spezielle 
address claim Nachricht (z.B. id=0x18EEFF80). Nach dem Senden muss ich 
eine gewisse Zeit (250ms) warten, damit ich die geforderte Source 
Adresse (hier 0x80) benutzen kann. Sende in dieser Zeit ein anderes 
device ebenfalls diese address claim Nachricht (0x18EEFF80) dann müssen 
die Datenbytes ausgewertet werden und ggf. eine neue Adresse (z.B. 0x81) 
gefordert werden.
Das heisst, ich sende selbst eine Nachricht und muss aber gleichzeitig 
auf genau diesen identifier scannen.
Das Problem was ich habe ist, dass ich meine address claim Nachricht auf 
einem MOb sende und auf dem anderen MOb wieder empfange. Das Programm 
kann nun natürlich nicht unterscheiden von wo diese Nachricht kam und 
leitet den Vergleich der Datenbytes ein... Diese stimmen zu 100% 
überein... :-(

Gruß
Tille

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.