Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Fehlererkennung


von Pnubbi (Gast)


Lesenswert?

Guten morgen,

für die CAN-Kommunikation verwende ich einen AVR mit MCP2515 und 
Bustreiber.
Am Bustreiber meiner Platine sind 120 Ohm zwischen High und Low, am 
angeschossenen CAN<->USB Gateway (für die Diagnose und Anzeige von 
Telegrammen am PC) ist ebenfalls ein Abschlusswiderstand vorhanden.

Insgesamt funktioniert meine Schaltung und ich kann aus dem AVR Daten 
senden, die am PC sichtbar sind. Wenn ich jetzt aber das USB-Gerät nicht 
mehr mit Spannung versorge (es gibt also nur noch meine Platine auf dem 
Bus), meldet der AVR ein Sende-Timeout.

Es sind weiterhin Abschusswiderstände an beiden Enden, nur mit dem 
Unterschied, dass es nur noch meine Schaltung als Busteilnehmer gibt 
(Ich weiß, in der Praxis würde das ja keinen Sinn machen).

Wodurch wird ein Sendefehler erkannt? Was funktioniert daran nicht?

Wo liegt für meine Schaltung der Unterschied, ob sie alleine zwischen 
zwei Abschlusswiderständen liegt, oder ob es noch einen (rein 
passiven!!!!!) zuhörer gibt?

Wäre über Hilfe sehr dankbar.

von Pit (Gast)


Lesenswert?

Liegt wohl eher am fehlenden Ack

von Frank K. (fchk)


Lesenswert?

Pnubbi schrieb:

> Wo liegt für meine Schaltung der Unterschied, ob sie alleine zwischen
> zwei Abschlusswiderständen liegt, oder ob es noch einen (rein
> passiven!!!!!) zuhörer gibt?

Der Zuhörer ist nicht rein passiv. Das ist der Trick. Es muss mindestens 
einen Teilnehmer geben, der den Empfang des Paketes quittiert.

Wenn der Zuhörer wirklich rein passiv wäre (auch das gibts), dann 
hättest Du die gleichen Probleme wie bei abgeschaltetem Zuhörer.

fchk

von Pnubbi (Gast)


Lesenswert?

Super! Danke für die schnelle Info!!!

Ich habe im CAN-Monitor mal die Funktion für den passiven Controller 
ausprobiert und siehe da - es gibt den gleichen Fehler. Das wusste ich 
noch gar nicht mit dem Ack.

Muss das dann jeder Teilnehmer senden, oder reicht einer, oder macht es 
vielleicht nur einer?

Das Ack muss der CAN-Controller auf jeden Fall selbstständig machen, 
denn wenn ich vom PC aus sende, gibt es bei angeschlossener Platine auch 
keinen Fehler - und ich habe nichts mit Ack programmiert..... ;-)

von Frank K. (fchk)


Lesenswert?

Pnubbi schrieb:

> Muss das dann jeder Teilnehmer senden, oder reicht einer, oder macht es
> vielleicht nur einer?

Jeder Teilnehmer sendet das.

> Das Ack muss der CAN-Controller auf jeden Fall selbstständig machen,
genau. Ist in der Hardware drin.

von Steffen R. (steffen_rose)


Lesenswert?

Alle zuhörenden CAN Controller senden gleichzeitig ein Ack, wenn sie das 
Telegramm fehlerfrei empfangen konnten. Ansonsten senden sie ein Error 
Frame.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.