Hallo zusammen,
wie der Betreff schon sagt, geht es um die Nutzung des CAN Bus auf dem
BeagleBone Black. Die Receiver-Schaltung befindet sich im Anhang. (Es
wird der ISO1050 verwendet). An sich funktioniert der CAN Bus ganz gut.
Probleme treten nur dann auf, wenn zwischen den einzelnen CAN Frames
sehr geringe Verzögerungen eingehalten werden. Aktiviert wurde des CAN
Device nach folgender Anleitung:
http://www.embedded-things.com/bbb/enable-canbus-on-the-beaglebone-black/
Der Versuchsaufbau ist folgender:
Auf der einen Seite befindet sich ein AT90CAN128 Board, welches mit
Hilfe der CAN-Library von Fabian Greif
(http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek)
ununterbrochen CAN Frames versendet. Es werden immer 8 Frames in den
Write-Buffer geschrieben, 1ms gewartet und dann wieder 8 Frames...
Bitrates bei der dieses Problem festgestellt werden konnte, waren
50000KBit/s oder mehr.
Auf der anderen Seite befindet sich das BeagleBone Black welches die
Daten entgegennehmen soll. Auf dem Beaglebone läuft ein Ubuntu Precise
12.04 (http://www.armhf.com/index.php/boards/beaglebone-black/#precise).
Sowohl am AT90 als auch beim BBB befinden sich Abschlusswiderstände mit
120 Ohm. Ausgelesen werden die Frames mit dem Tool 'candump' vom project
can-utils
(https://gitorious.org/linux-can/can-utils/source/9c82d462f4251bf0f8292a969d6063e782c42d43:)
Das eigentliche Problem ist nun, dass sich das BeagleBone Black nach
einer gewissen Zeit einfach aufhängt und dann nurnoch die Möglichkeit
bleibt, es per ResetButton wieder neu zu starten. Auffällig ist, dass es
sich nur aufhängt, wenn auch mit einer Software wie candump die Daten
gelesen werden. Reproduzierbar ist der Fehler nicht wirklich, da es
vorkommen kann, dass es 15min zu keinem Zwischenfall kommt und ein
anderes Mal bereits nach 5 Sekunden. Falls irgendjemand eine Vermutung
hätte, woran ein solches Verhalten liegen könnte, oder eine Idee, wie
man weiter vorgehen kann um den Fehler genauer einzugrenzen, wäre ich
sehr dankbar :)
Viele Grüße
L31N