Вопрос по UART0 у LPC2138
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smartleds 22 ноября 2006 г. 00:10

Принимаю данные по UART0 на скорости 250к, при приходе байта возникает прерывание , где я смотрю не битый ли фрейм пришел (проверяю флажок FE)и записываю принятый байт в переменную curbyte
Вот пример конфигурациии прерывания

U0IER = 0x00; // disable all interrupts
PINSEL0_bit.P0_1 = 1;// RXD0 input

U0LCR_bit.DLAB = 1; //enable DLAB
U0LCR_bit.WLS = 3; //8 bit
U0LCR_bit.SBS = 0; //1 stop bit
U0LCR_bit.PE = 0; //no parity

divisor=3; // 250k, frequence VPB 12 MHz
U0DLM = divisor/256; //highbyte
U0DLL = divisor%256 ; //lowbyte
U0LCR_bit.DLAB = 0; //disable DLAB

U0FCR=0xC1; // 14 characters FIFO and enable the FIFO's
U0IER_bit.RDAIE =1 ; Interrupt enable

Вот сам обработчик прерывания
void UART0Interrupt(void)
{
intoccursuart=1;

if(U0LSR_bit.FE > 0) //Yes--> framing error
{//2
fe_flag=1;
badbyte=U0RBR;
}//2
else {//2
curbyte=U0RBR;
}//2

}

1).Все работает нормально, но если я делаю буфер FIFO меньше чем 14 байт все перестает работать
U0FCR=0xC1; // 14 characters FIFO and enable the FIFO's

2). Если я переношу обработку полученного байта в основную программу, а в прерывании устанавливаю только флаг intoccursuart=1; то все перестает работать. Хотя какая казалось бы разница где считывать регистр U0RBR в прерывании или в основной программе.
т.е. программа выглядит так:
main()
.......
while
{
if (intoccursuart==1) {//1
intoccursuart=0;
if(U0LSR_bit.FE > 0) //Yes--> framing error
{//2
fe_flag=1;
badbyte=U0RBR;
}//2
else {//2
curbyte=U0RBR;
// U0FCR_bit.RFR = 1; //RESET FIFO
}//2
}//1
}
в прерывании устанавливается только флажок intoccursuart=1;

Эта программа раньше работала на mega16 никаких проблем не было мега все успевала обрабатывать.
Может я что-то не понимаю ???

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание