Kleines Zwischenprojekt: CAN-Debugger
Da mein Roboter vermutlich den CAN-Bus zur Kommunikation verwenden wird, brauche ich dafür auch einen passenden Debugger. Fertige Debugger waren mir viel zu teuer(>100€) und außerdem brauche ich weder galvanische noch optische Trennung(im schlimmsten Fall wird der Max232 im Rechner getoastet…), deshalb habe ich mir einen selber gebaut. Ich verwende einen ATmega8 mit MCP2515 als CAN-Controller, MCP2551 als CAN-Transreceiver und einen MAX233(hatte ich halt rumliegen, wer will, kann das Layout ja auch für einen MAX232 anpassen) als RS232-Transreceiver. Die Gerätefirmware ist dank der CAN-Lib von Fabian Greif kein Problem, schwierig war es eher, einen passenden Linuxtreiber für SocketCAN zu frickeln. Schwierig deshalb, weil ich nicht das gängige ASCII-Protokoll, sondern eine eigens dafür entwickeltes Binärprotokoll(spart fast 50% Daten auf RS232, und das ist der Flaschenhals) verwende. Eine Beschreibung dieses Protokolls findest du hier(PDF, Englisch!). Die Firmware und das Kernelmodul können hier(SVN-Revision 12) heruntergeladen werden, allerdings hat die Firmware (noch) kein Makefile! Dieses Archiv enthält außerdem auch die Eagle-Files des Boards. In Rücksprache mit den SocketCAN-Entwicklern wurde das Protokoll geändert, eine neues Archiv ist in Arbeit! Bisher habe ich das Modul mit 125Kbit Busrate unter 100% Busload erfolgreich getestet. Einziges Manko: Der MCP2515 nimmt die Nachrichten zwar sofort an, allerdings bedeutet das nicht, dass diese auch verschickt wurden. Unter 100% Busload kann es passieren, dass der MCP seine Nachrichten einfach nicht loswird, somit irgendwann alle 3 Sendepuffer voll sind und das Kernelmodul dann auf jede weitere Sendeanfrage nur noch den Fehlercode 0xff bekommt. Allerdings tritt dieser Fall wirklich nur sehr selten auf! Viel Spaß beim Nachbauen!




Zu diesem Artikel gibt es(noch) keinen Kommentar