Joined: Sun Nov 18, 2007 9:48 am Posts: 2
|
|
If CAN errors happen when the CAN module receives a message the receiver message object interrupt happens? My interrupt must be like __arm void CANISRHandler (void) { volatile unsigned int status = AT91F_CAN_GetStatus(AT91C_BASE_CAN); if (status & AT91C_CAN_WAKEUP) { ... //do something when CAN_WAKEUP happens }else if (status & (AT91C_CAN_CERR | AT91C_CAN_SERR | AT91C_CAN_AERR | AT91C_CAN_FERR | AT91C_CAN_BERR)) { ... //do something when CAN_ERROR happens }else { ... //do something when CAN_ERROR is absent } } OR like (as all examples) __arm void CANISRHandler (void) { volatile unsigned int status = AT91F_CAN_GetStatus(AT91C_BASE_CAN); if (status & AT91C_CAN_WAKEUP) { ... //do something when CAN_WAKEUP happens }else if (status & (0x0000FFFF)) { ... //do something when CAN_ERROR is absent } if (status & (AT91C_CAN_CERR | AT91C_CAN_SERR | AT91C_CAN_AERR | AT91C_CAN_FERR | AT91C_CAN_BERR)) { ... //do something when CAN_ERROR happens } }
|
|