LPC1768 e módulo RTI

Pessoal,
Estou iniciando os estudos da familia CM3 da NXP. Comprei um kit (http://www.poweravr.com/bbs/viewthread.php?tid=831&extra=) e estou testando os periféricos e desenvolvendo as lib.
Fiz a UART funcionar via INT. Tenho o costume de encerar uma comunicação por timeout, geralmente usando um timer. Então, lendo o manual do usuário, vi poderia usar o módulo RIT para gerar interrupções periódicas. Assim, poderia deixar os timers para outras funções. Configurei tudo tudo, carreguei o programa e....nada. O programa trava. Mexi no código para tentar descobrir a fonte do problema e notei que se eu alterar qualquer registrador do módulo RIT, o programa trava.
Alguém tem experiência com isso? Pode me dar uma ajuda?
Configuração da UART2
Configuração do RIT
Estou iniciando os estudos da familia CM3 da NXP. Comprei um kit (http://www.poweravr.com/bbs/viewthread.php?tid=831&extra=) e estou testando os periféricos e desenvolvendo as lib.
Fiz a UART funcionar via INT. Tenho o costume de encerar uma comunicação por timeout, geralmente usando um timer. Então, lendo o manual do usuário, vi poderia usar o módulo RIT para gerar interrupções periódicas. Assim, poderia deixar os timers para outras funções. Configurei tudo tudo, carreguei o programa e....nada. O programa trava. Mexi no código para tentar descobrir a fonte do problema e notei que se eu alterar qualquer registrador do módulo RIT, o programa trava.
Alguém tem experiência com isso? Pode me dar uma ajuda?
Configuração da UART2
- Código: Selecionar todos
LPC_PINCON->PINSEL0 |= (1 << 20); /* Pin P0.10 used as TXD2 */
LPC_PINCON->PINSEL0 |= (1 << 22); /* Pin P0.11 used as RXD2 */
LPC_SC->PCONP = LPC_SC->PCONP|(1<<24); /* habilita o modulo UART */
LPC_UART2->LCR = 0x83; /* libera acesso aos registradores */
dummy = (FPCLK/16) / UART2_BPS; /* ajusta o baud rate */
LPC_UART2->DLM = dummy / 256;
LPC_UART2->DLL = dummy % 256;
LPC_UART2->LCR = 0x03; /* trava acesso aos registradores. Frame de dados de 8 bits */
LPC_UART2->FCR = 0x06;
dummy = LPC_UART2->IIR; // Read IrqID - Required to Get Interrupts Started
dummy = LPC_UART2->RBR; //clear receive register
dummy = LPC_UART2->LSR; //clear line status register
LPC_UART2->IER = 7; // Habilita a interrupção do RX2
/* preemption = 1, sub-priority = 1 */
NVIC_SetPriority(UART2_IRQn, ((0x01<<3)|0x01));
NVIC_EnableIRQ(UART2_IRQn); /* Enable Interrupt for UART2 channel */
Configuração do RIT
- Código: Selecionar todos
/* Int a cada 5ms*/
LPC_RIT->RICOMPVAL = 125000;
/* Ajusta o timer para zerar o contador quando atingir o valor de RICOMPVAL*/
LPC_RIT->RICTRL = 0x0E;
LPC_RIT->RICOUNTER = 0;
NVIC_SetPriority(RIT_IRQn, ((0x01<<3)|0x01));
NVIC_EnableIRQ(RIT_IRQn); // Ativa a interrupção