Добрый день всем !
кто может пояснить мне как правильно построить обработчик прерывания по приему данных UART.
Обработчик должен срабатывать по флагу DR регистра UART_LSR.
путь действий следующий. настраиваюсь на нужную скорость - передача данных из процессора идет, идет запись в файл и т.д. с этим все превосходно.
настраиваю прерывания: отображаю прерывание периферии на прерывание ядра :
*pSIC_IAR1 = 0xf3ffffff ;
снимаю маски :
*pSIC_IMASK = 0x00004000;
включаю обработчик
register_handler(ik_ivg10, UARTRx_ISR);
разрешаю прерывание:
*pUART_IER =0x1;//Enable interrupts for receive
и собственно сам обработчик:
EX_INTERRUPT_HANDLER(UARTRx_ISR)
{
REC_Data = *pUART_RBR;
ssync();
do {;}
while (!(*pUART_LSR & TEMT)) ; //
*pUART_THR = REC_Data ;
ssync();
}
пробывал буфферизировать входные данные не помогает.
тестирую следующим образом - в HypTerminal. работаю посимвольно - пытаюсь ввести ряд символов
записать их в массив, а потом выдать обратно.
но с выше описанным подходом ничего не получается.
Буду благодарен за помощь !
Заранее спасибо !