Цитата(kolisnichenko_r @ Dec 2 2015, 15:24)

Что нужно сделать чтобы установить INT в ноль? В User manual написано чтением Status Register (STAT) или очисткой INTPND.
Код
can_stat = LPC_CAN->STAT;
LPC_CAN->IF2_MCTRL &= 0xDFFF;//Clear INTPND
После этих действий INT не обнуляется
А какое значение он имеет?
В обработчике прерываний происходит чтение LPC_CAN->STAT, после чего определяется наличие или отсутствие ошибок.
При отсутствии ошибок выполняется обработка MSG OBJECT сгенерировавшего прерывание.
При обработке MSG OBJECT выполняется его чтение. Возможно при чтениее LPC_CAN->STAT или после чтения содержимого MSG OBJECT обнуляются флаги NEWDATA и INTPND.
В документации написано:
When the CPU transfers the contents of Message Object to the IFx Message Buffer registers by writing its number to the IFx Command Request Register,
bits NEWDAT and INTPND in the corresponding Command Mask Register should be reset to zero (TXRQST/NEWDAT = ‘1’ and ClrINTPND = ‘1’).
что я понимаю как
Когда цпу перемещает содержимое MSG OBJECT в IFx buff путём записи его номера в IFx Command Request Register биты NEWDAT and INTPND в соответствующем Command Mask Register должны обнулиться.
В привёдённом во вложении обработчике прерываний никаких дополнительных сбросов битов нет, но при этом нет и лишних прерываний, что наверняка было бы, еслибы бит INTPND не сбрасывался.
Возможно у Вас есть ошибки на шине или Вы не корретно обрабатываете RX/TX MSG OBJECT.