Hi, ich habe eine allgemeine Frage über die Funktionalität des Mask für den CAN-Protokoll. Ich benutze den AT90CAN128 als Hardware. Im Datenblatt gibt es ein Beispiel, wie kann man die Nachrichten vorfiltrieren ID: 111 1111 1xxx Mask=7F1: 111 1111 1000 So empfängt man nur die ID 310-317. Mit Hilfe dieser Beschreibung konnte ich alle Nachricten, die ich wollte, empfangen. Jetzt möchte ich anders machen. Ich habe mein Mikrocontroller programmiert, damit er alle Nachrichten über den Bus empfängt.ID: xxx xxxx xxxx Mask: 000 000 000.Vom diesem Zustand möchte ich, dass der µC alle ID 310-317. ignoriert. Wie setze ich die Bit in Register CANIDM1 und CANIDM2 oder welche Mask soll ich wählen, wenn ich jetzt NUR die ID 301 bis 307 NICHT empfangen will? Ein Beispiel als berechnung wäre hilfeich. Danke
Indem du ein Mob einrichtest, welches auf die ID 301 bis 307 reagiert. Dieses Mob muss eine höhere Priotität als dein "Alles rein" Mob haben. Im Can-Interrupt verwirfst Du dann einfach die Daten des 301..307 MObs.
Hallo, ich komme wieder mit dem selben Problem. ich erkläre zuerst, was ich mache. Ich habe die Kommunikation über CAN-Bus zwischen zwei AT90CAN128 erstellt. Die Platine 1 sendet regelmässig verschiedene Nachricht auf den Bus mit ID=0,8,10,30. Die Platine 2 soll nur empfangen. Ich programmiere das Mob1, damit es auf die ID=0 hört, dafür sende ich(Id=0, Mask=7FF,mob=1). bis jetzt habe ich kein Problem ich bekomme nur die gewünschte Nachricht. Wenn ich jetzt die Mask=0 setze, bekomme ich alle 4 Nachricht über den Kanal 1. Meine Frage ist:Ich bin im Zustand, Mob1 hört auf ID=0, wie konfiguire ich das Mob1, damit er vom diesem Zustand die ID=0 nicht mehr empfängt? Danke schon
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.