Мне нужно прослушивать 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;
}
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;
}
{
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;
}
Заранее благодарен за ваши комментарии.