Datasheet

Table Of Contents
422
7682C–AUTO–04/08
AT90CAN32/64/128
__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 */
}
........
........
}
2. 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.
1. SPI Programming Timing
When the fuse high byte or the extended fuse byte has been written, it is necessary to wait
the end of the programming using “Poll RDY/BSYinstruction. If this instruction is entered
too speedily after the Write Fuseinstruction, the fuse low byte is written instead of high
fuse /extended fuse byte.
Problem fix / workaround
Wait sometime before applying the Poll RDY/BSY instruction. For 8MHz system clock,
waiting 1 µs is sufficient.