Re: CAN-Bus Kategorie: CAN-Bus (von Cris - 30.04.2002 21:43) | |
Als Antwort auf CAN-Bus von Dieter Kalkofen - 30.04.2002 13:46
| |
Hallo Dieter Kalkofen, Die Progrmmierung des CAN-Interfaces ist im Handbuch unter Standardmodule-CAN beschrieben. Grundsätzlich ist die Datenübertragung standardisiert und verträgt sich mit dem Philips-CAN-Controler. Der CAN-Controler der CC2-Unit kann Datenframes auf 15 Kanälen empfangen. Das funktioniert so: Ein Frame mit einer bestimmten ID wird empfangen, dann wird entschieden in welchen Datenkanal dieses Frame gestellt wird. Passt die ID in die Maske eines bestimmten Kanals wird das Frame dort empfangen. Passen mehrere Kanäle wird der niedrigste Kanal ausgewählt -passt kein Kanal wird die Nachricht ignoriert. Die Zuordnung von ID's und Kanälen erfolgt mit den Funktionen can.init(...) und can.expect(...). Ein kleines Beispiel: can.init(can.SPEED_125,0x07FF,0x0000); //Kanal 0..13 sollen alle Bits der ID vergleichen, Kanal 14 vergleicht nichts can.expect(0,0x1); //Kanal 0 soll ID 1 empfangen can.expect(1,0x11); //Kanal 1 soll ID 11H empfangen can.expect(14,0x00); . . . Wird jetzt ein Frame mit der ID 1 empfangen, gelangt diese in den Kanal 0, die ID 11H in den Kanal 1. Alle anderen ID's kommen in den Kanal 14. Beispiel 2: can.init(can.SPEED_125,0x07FE,0x0000); can.expect(0,0x10); can.expect(1,0x20); can.expect(14,0); ID=10H und ID=11H wird im Kanal 0 empfangen, ID=20H und ID=21H wird im Kanal 1 empfangen, der Rest im Kanal 14. Hier wird ein kleiner Nachteil deutlich - die Frames sind zwar im entsprechenden Kanl lesbar, es gibt aber keine Möglichkeit die empfangene ID zu lesen. Cris | |
Antwort schreiben Antworten: |