Прерывания UART2 выключены, по линии RX к нему могут приходить какие-то символы, но в тот момент они не интересны. Потом программа выполняет следующий код (готовится к обмену с приемом):
Код
U2IER = 0;
U2FCR = 7;
assert((1 == (U2IIR & 1)) && "At least one interrupt is pending");
assert((0x60 == U2LSR) && "There is something active in the UART2");
dword volatile unused; // workaround
unused = U2RBR; // workaround
unused = U2LSR; // workaround
U2IER = 7;
В ассертах не вылетает, если убрать workaround то после включения прерываний (U2IER=) сразу срабатывает CTI. С workaround работает нормально. Это баг или фича?