Hab hier aufm Steckbrett zwei PICs die fleißig Daten hin und herschieben, d.h. die SIDs (Standard-Identifizierer) werden richtig erkannt, bei falscher SID bleibt der Empfangspuffer leer bzw der alte Inhalt wird nicht aktualisiert (es ist schön wenn Dinge funktionieren wie sie sollen ;-). Was aber hat es mit Akzeptanz-Maske + Filter auf sich, wenn die Kommunikation über die SIDs (vollständig?) gesteuert ist? Im Datenblatt, das an dieser Stelle wohl eher als eine Referenz zu den Registern zu sehen ist und keine tiefere Erklärung liefert, finde ich nichts.
Wenn du einen CAN Controller dazu bringen willst, nicht nur auf ein paar wenige einzelne SIDs zu reagieren, sondern auf ein Bündel davon, dann kannst du mit der Maske jene Bits ausmaskieren, die für den Vergleich nicht relevant sind. Ansonsten gehört es leider zur Standardprozedur von Forenteilnehmern, nicht den Typ zu verraten, um den es geht. Aber auch bei den PICs gibts verschiedene CAN Module.
Ich mache mit CAN gerade meine ersten Gehversuche, ich hab das zurückgehalten, weil ich es nicht für wichtig hielt. Sind zwei 18F458 mit MCP2551. >nicht nur auf ein paar wenige einzelne SIDs zu reagieren, sondern auf ein >Bündel davon Warum sollte man das haben wollen? Ist eine einzelne SID (SID = Adresse?) nicht besser als mehrere, was zur Verwirrung führen könnte? Oder seh ich das falsch und es steckt mehr dahinter?
Joachim ... schrieb: > Oder seh ich das falsch und es steckt mehr dahinter? Ja und ja. Der Identifier soll den Botschaftstyp beschreiben, nicht unbedingt die Adresse des adressierten Teilnehmers. Sonst musst Du ja unterschiedliche Botschaftstypen in der Payload verklausulieren und verschenkst damit Bandbreite.
>Der Identifier soll den Botschaftstyp beschreiben,
Aber ist der Identifizierer denn nicht eindeutig? Oder hat das nichts
damit zu tun?
Muß ich wirklich erst die CAN-Referenz von Bosch lesen um die
Zusammenhänge zu verstehen?
Die IDs adressieren nicht explizit einen bestimmten Controller, sondern definieren eine Botschaft oder einen Zustand. Also sowas wie "Lampe an". Welcher Controller sich für Lampen zuständig fühlt, der hört dann darauf. Nun kann es aber sein, dass ein Controller sich für mehr Botschaften zuständig fühlt, als er einzelne IDs matchen kann. Sinnvollerweise stehen diese Botschaften dann in einem Block, der mit einem ID/Mask-Paar durch binäres maskieren identifiziert werden kann. Wenn das CAN-Netz langsam oder darin generell wenig los ist, dann ist kann man sich das allerdings ggf. auch sparen und ohne ID-Erkennung seitens des CAN-Controllers arbeiten.
Joachim schrieb: > Muß ich wirklich erst die CAN-Referenz von Bosch lesen um die > Zusammenhänge zu verstehen? Das musst Du schon selbst wissen - bei mir hat Brain V1.0 gereicht.
Du kannst mit der Maske z.B. definieren, daß in den Empfangspuffer 4 alle Messages mit ID 0x1000 bis 0x100F gehen. Dieser Puffer würde also die Messages mit ID 0x1000, 0x1001, 0x1002...0x100F akzeptieren. Wenn Du das machst, muß natürlich sichergestellt sein, daß zwischen zwei Messages, die in diesen Puffer gehen, genug Zeit ist, damit Du die erste rechtzeitig herausholen kannst, bevor die zweite kommt. Wie A.K. schon sagt: Eine Message geht nicht zwangsläufig an nur einen bestimmten Teilnehmer. Es ist oft eher so: Ein Gerät schickt unaufgefordert zyklisch eine Information (z.B. Temperatur von Sensor X) mit einer vorher festgelegten Message-ID weg, und jeder andere CAN-Teilnehmer kann selbst entscheiden, ob er diese Information haben will oder nicht.
Dann hab ich wohl das Konzept bis jetzt falsch verstanden. Danke an die Helfer.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.