Forum: Mikrocontroller und Digitale Elektronik IDMaske CAN Programmierung ATmega 32M1


von guest111 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.