Hallo liebe User,
ich sitzte momentan an einem schönen Softwareprojekt zur Vernetzung von
mehreren Baugruppen über CAN-Bus. Soweit funktioniert auch alles
einwandfrei! Damit ich sicher gehen konnte, dass die Übertragung stimmt,
habe ich erstmal ohne Identifier Maske gearbeitet. Nun geht es ins
Detail...dazu habe ich den ID-Filter gesetzt. Allerdings kommen nun
keine Daten mehr an. Ich kann sicherstellen, dass die eingestellte ID
für das Empfangsprotokoll RPDO1 von Baugruppe 1 mit der des
Sendeprotokolls TPDO1 von Baugruppe 2 übereinstimmt. Warum funktioniert
das nicht?
Einstellungen Baugruppe 1:
ID: 0x002
COB_ID RPDO1: 0x183
ID_MASK: 0xFFF
Einstellungen Baugruppe 2:
ID: 0x003
COB_ID TPDO1: 0x183
ID_MASK: -
folgender Init-Code:
/*--------------------------------------------------------------
FUNCTION :can_rmob_init
INPUT :CAN_ID, CAN page, ,ID_MASK, data length
OUTPUT :-
DESCRIPTION :initialize RPDOs
--------------------------------------------------------------*/
void can_rmob_init(unsigned int cob_id, int mob, unsigned int id_mask,
int length)
{
CANPAGE=(mob<<4); //MOb
CANSTMOB=0; //reset MOb
state
CANCDMOB=0; //reset MOb Control- &
DLC register
CANIDT4=0; //no RTR
CANIDT2=(cob_id<<5); //last 3Bits
CANIDT1=(cob_id>>3); //first 5Bits
CANIDM2=(id_mask<<5); //last 3Bits
CANIDM1=(id_mask>>3); //first 5Bits
CANCDMOB=(length | 0x80); //enable reception, data length
}
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.