418
7679H–CAN–08/08
AT90CAN32/64/128
minimum delay will be 39-bit time in CAN2.0B. See CAN2.0A CAN2.0B frame timings
below.
Workaround implementation
The workaround is to have the last MOb (MOb14) as "spy" enabled all the time; it is the MOb
of lowest priority. If a MOb other than MOb14 is programmed in receive mode and its accep-
tance filter matches with the incoming message ID, this MOb will take the message. MOb14
will only take messages than no other MObs will have accepted. MOb14 will need to be re-
enabled fast enough to manage back to back frames. The deadline to do this is the begin-
ning of DLC slot of incoming frames as explained above.
Minimum code to insert in CAN interrupt routine:
__interrupt void can_int_handler(void)
{
if ((CANSIT1 & 0x40) == 0x40 )
/* MOb14 interrupt (SIT14=1) */
{
CANPAGE = (0x0E << 4);
/* select MOb14 */
CANSTMOB = 0x00;
/* reset MOb14 status */
CANCDMOB = 0x88;
/* reception enable */
}
........
........
}
5.
Asynchronous Timer-2 wakes up without interrupt
The asynchronous timer can wake from sleep without giving interrupt. The error only occurs
if the interrupt flag(s) is cleared by software less than 4 cycles before going to sleep and this
clear is done exactly when it is supposed to be set (compare match or overflow). Only the
interrupts flags are affected by the clear, not the signal witch is used to wake up the part.
Problem fix / workaround
No known workaround, try to lock the code to avoid such a timing.
CAN 2.0A
19-bit time minimum
T
1
(RXOK)
T
2
Arbitration
Field
Control
Field
End of Frame
CRC
Field
ACK
Field
Inter-
mission
11-bit identifier
ID10..0
CRC
del.
ACK
del.
15-bit CRC
SOF
SOF
RTR IDE
r0
ACK
7 bits
4-bit DLC
DLC4..0
3 bits
CAN 2.0B
39-bit time minimum
T
1
(RXOK)
T
2
End of Frame
CRC
Field
ACK
Field
Inter-
mission
Arbitration
Field
Control
Field
CRC
del.
ACK
del.
15-bit CRC
SOF
SOF
ACK
7 bits
3 bits
11-bit base identifier
IDT28..18
18-bit identifier extension
ID17..0
4-bit DLC
DLC4..0
SRR IDE
r0
RTR
r1