ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
42461
Сергей Борщ (26.10.2005 12:16, просмотров: 1088)
Выручайте. 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. Прием при этом работает. Где грабля?