Выручайте. LPC2119. Не генерится прерывание передачи в UART1 IAR, если это имеет значение.
Инициализация:
{
__uartlcr_bits Tmp;
Tmp.WLS = 3; // 8 bits
Tmp.SBS = 1; // 2 stop bits
Tmp.PE = 0; // no parity
Tmp.PS = 0;
Tmp.BC = 0; // no break
Tmp.DLAB = 1;
U1LCR_bit = Tmp;
}
U1DLM = (PCLK / 16 / BAUDRATE) >> 8;
U1DLL = (PCLK / 16 / BAUDRATE) & 0xFF;
{
__uartlcr_bits Tmp;
Tmp.WLS = 3; // 8 bits
Tmp.SBS = 1; // 2 stop bits
Tmp.PE = 0; // no parity
Tmp.PS = 0;
Tmp.BC = 0; // no break
Tmp.DLAB = 0;
U1LCR_bit = Tmp;
}
{
__uartier1_bits Tmp;
Tmp.RDAIE = 1; // Enable Rx INT
Tmp.THREIE = 0; // disable Tx INT
Tmp.RXLSIE = 0; // disable line status INT
Tmp.MSIE = 0;
U1IER_bit = Tmp;
}
{
__uartfcriir_bits Tmp;
Tmp.FCRFE = 1; // Enable FIFO
Tmp.RFR = 1; // Reset Rx FIFO
Tmp.TFR = 1; // Reset Rx FIFO
Tmp.RTLS = 0; // 1 byte FIFO
U1FCR_bit = Tmp;
}
потом в программе разрешаю прерывание:
U1IER_bit.THREIE = 1; // Enable TX interrupt
Вижу U1IIR: IP = 1, IID = 1 и прерывание не генерится. Хотя в U1LSR биты THRE и TEMT равны 1. Прием при этом работает. Где грабля?