die Arduinos hängen aktuell nur am PC, damit ich über Serial.print schauen kann, was die so machen und was nicht.
Oder meintest Du die Modellbahnsteuerung? Da habe ich einen entsprechenden "Adapter" der auch in RocRail bereits eingebunden ist. Jedoch habe ich ihn aktuell nicht mit in meinen Probeaufbauten, bei dem ich nur "begreifen" will, wie ich den CAN-Bus nutzen kann.
Denn das Thema wollte ich nicht aufmachen, wie ich von einem Windoof Rechner mit einem Web-Programm auf ein Linux Rechner zugreife, um über diesen mit Geräten an einem CAN-Bus, Steuerungsarbeiten an meiner Modellbahn zu koordinieren.
Ich wollte mich in diesem Post nur auf den Aspekt des CAN-Busses beschränken.
Ich habe vor, mehrere Dutzend Ardus auf der Anlege "zu verteilen", die entsprechende Aufgaben bekommen. Und außerdem dutzende, die die Steuerungsbefehle dann geben können. Oder eben die Software. Wenn es halbwegs läuft, berichte ich mal unter "Eure Projekte".
Jedoch klappt das mit den Steuerungsbefehlen aktuell noch nicht so, wie ich es gern hätte und bräuchte.
Bei einem Bus mit gleichberechtigten Teilnehmen wie dem CAN-BUS ist die Kollisionsvermeidung extrem wichtig. Ein einzelner MCP2515 sieht den Bus vermutlich als beschäftigt an, weshalb er seine eigenen Nachrichten nicht absetzen kann, was zu einer Zeitüberschreitung mit der Meldung TIMEOUT führt. Das erscheint mir logisch.
BUS bedeutet zwei oder mehr Teilnehmer. RS232 ist im Gegensatz dazu eine Punkt-zu-Punkt-Verbindung, RS485 kann man als BUS verwenden.
Ja, das mache ich auch mit einem Rechner und mehreren Fenstern der Arduino-IDE.
Da schließe ich mich Dir an
MCP_8MHZ hast Du ja beachtet, eigentlich der klassische Fehler.
Jetzt bin ich noch verwirrter.
Ich habe die Fehlermeldung wegbekommen, in dem ich die Datenlänge auf 7 reduziert habe also aus : byte sndStat = CAN0.sendMsgBuf(0x100, 0, 8, data);
habe ich: byte sndStat = CAN0.sendMsgBuf(0x100, 0, 7, data);
gemacht und nun kommen keine Fehler mehr und es läuft einwandfrei mit CAN==OK durch. Jedoch werden nun nur 7 Datenbyts übertragen.
???? Ich bin verwirrt????
So, ich habe jetzt alles, was mir einfiel ausprobiert, aber ich habe es nicht geschafft, daß er 8 Bytes sendet ohne, daß diese Fehlermeldung kommt. 7 und weniger Bytes sind kein Problem. Aber mit 8 kommt immer die Fehlermeldung.
ich habe auch schon Sender und Empfänger gewechselt, aber bei mir immer das Gleiche.
Wenn ich auf 8 Bytes senden wechsle, kommt:
Error Sending Message...
CAN_SENDMSGTIMEOUT
Beim Empfänger auch:
Standard ID: 0x100 DLC: 8 Data: 0x00 0x01 0x01 0x03 0x04 0x05 0x06 0x07
alle 10 Sekunden.
welchen Speed meinst Du? Die kbps des CAN-Busses?
Das geht nicht, weil ich die wegen der Leitungslängen benötige.
Ich würde gern sogar noch langsamer werden, jedoch der Adapter für RocRail arbeitet mit den Einstellungen.
ich habe weiter herumexperimentiert, obwohl ich von alle dem keine Ahnung habe, aber ich habe die Fehlermeldung nun nicht mehr.
Ich habe die Datei: mcp_can_dfs.h in dem Ordner: c:\Users\Sensi\Documents\Arduino\libraries\MCP_CAN_lib-master
geöffnet mit Nodepad++
Dann den Eintrag "TIMEOUTVALUE" gesucht und den Wert von 50 auf 90 geändert. Nun kommt der Fehler nicht mehr.
Dann möchte ich hoffen, das bleibt so. Dank an @combie!
Leider macht mich die Tatsache, daß es bei mir ohne Deine Änderung über eine Stunde ohne einen Fehler durchgelaufen ist, etwas skeptisch. Zusammen mit RocRail wird das nochmal spannend