From the ap162101 "The internal structure of message object 15 has been adapted to provide a BASIC-CAN feature. In this mode, all incoming messages with identifiers, which are not matching to other message objects,can be stored in object 15. If no other objects have been activated, all messages can be treated by message object 15. The CPU has to check whether an incoming message addresses the controller (acceptance filtering) or should be ignored. As a consequence, the required CPU time to deal with incoming data increases, but all messages (data or remote frames, standard or extended dentifiers) can be handled" I know the mo 15 can recieived the bsic 11 bits ID and exter 29 ID, however, my code genernate by DavE: CAN2_OBJ[14].MCR = 0x5599; // set CAN1 message control register
/// - message direction is receive /// - extended 29-bit identifier
C2UMLM = 0x00; // set CAN1 upper mask of last message C2LMLM = 0x00;// set CAN1 lower mask of last message CAN2_OBJ[14].MCFG = 0x00; CAN2_OBJ[14].UAR = 0x0000; // set CAN1 upper arbitration register CAN2_OBJ[14].LAR = 0x0000; // set CAN1 lower arbitration register Can only receive shor ID ingroe long id? why? can i use mo 15 to received and can data ,then use interrupt to handle all of them ? thanks a lot
I uss send a 0x12 as a flag to show the mo 15 to received a can data...
void CAN1_viCAN1(void) interrupt 0x40 { uword uwIntID,test; while (uwIntID = C1IR & 0x00ff) { switch (uwIntID & 0x00ff) { case 2: // Message Object 15 Interrupt S0TBUF=0x12; ..........