Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 - CAN Verbindung abfragen


von Dennis (Gast)


Lesenswert?

Hallo,
ich bastel gerade mit einem AT90CAN128.
Dabei habe ich ein kleines Problem...
Ich würde gerne irgendwie prüfen ob der Controller eine CAN-Verbindung 
hat, weil er sich sonst nämlich beim senden meiner zyklischen 
Nachrichten aufhängt. Gibt es dazu eine Möglichkeit???
Gruß

von holger (Gast)


Lesenswert?

>Ich würde gerne irgendwie prüfen ob der Controller eine CAN-Verbindung
>hat, weil er sich sonst nämlich beim senden meiner zyklischen
>Nachrichten aufhängt. Gibt es dazu eine Möglichkeit???

Setz einen Zähler der in bestimmten Zeitabständen
runterzählt. Wenn eine Nachricht kommt setzt du ihn
wieder auf den Startwert. Wenn er bei 0 ankommt
hast du einen Fehler.

von Dennis (Gast)


Lesenswert?

Damit eine Nachricht empfangen wird, muß ich aber zunächst eine 
Nachricht senden. Wenn aber keine Verbindung besteht, bleibt der 
Controller hierbei hängen... :-(
Ich vermute daher das ich irgendwo im Controller abfragen muß ob die 
Nachricht abgesendet wurde. Finde da nur nichts passendes...

von Daniel H. (doomstar)


Lesenswert?

Hi Dennis,

schau dir mall bit das Error Managment an auf Seite 245ff.
Sobald du Nachrichten sendest und diese nicht acknowledged werden
wird ein interne Zähler um 1 nach oben gesetzt. Wenn 255 Nachrichten
nicht acknowledged werden geht der Can Controller in den Bus Off
state und löst ein Interrupt aus. Wäre das nicht eine Möglichkeit für
dich?

Alternativ könntest du falls es schneller gehen soll auch dir mal
die Seite 259f anschauen. Dort gibt es das MOB Status Register
welches ein Acknowledgment Error Flag besitzt der anzeigt ob
die Massage acknowledged wurde oder nicht. Diese kann auch ein
Interrupt auslösen.

MFG
Daniel

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.