реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADUC7026 обработка прерываний UART, функция обработки прерываний
Sergiiiii
сообщение Apr 1 2010, 06:33
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 19-03-10
Пользователь №: 56 053



Программирую микроконтроллер ADuC7026 (делаю это впервые).
Мне нужно прослушивать COM port и по прерыванию считать принятые данные (10 00 10 03) - второй байт должен быть 00, в моем случае это значит, что я могу отправлять данные на COM port.

Пользуюсь IAR workbench и меня, собственно, интересует корректность написания функции обработки этого прерывания(код ниже) :
CODE
int UART_irqCounter = 0;

bool UART_IrqHandler(void)
{
while(!((COMIID0 & 0x04) == 0x04));
if(COMSTA0 == 0x01)
{
++UART_irqCounter;
if(COMRX == 0x00 && UART_irqCounter == 2)
return true;
}
return false;
}


в мейн это вызывается так:

CODE
if(UART_IrqHandler())//interrupt occurs
{
while(!(COMSTA0 & 0x020));//output only
COMTX = 0x10;//10h
while(!(COMSTA0 & 0x020));
COMTX = 0x05;//transmit data id
for(int i=0;i<arrSize;++i)
{
for(int j=0;j<dimNumber;++j)
sendData(arrBuf[i][j], arr[i][++j]);
}
while(!(COMSTA0 & 0x020)){}
COMTX = 0x10;
while(!(COMSTA0 & 0x020)){}
COMTX = 0x03;
}


Заранее благодарен за ваши комментарии.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01326 секунд с 7
ELECTRONIX ©2004-2016