Beispiel #1
0
__interrupt void USCI_A3_ISR(void)
{
  char temp = 0                                                    ;
  OS_EnterInterrupt()                                              ;
  switch(__even_in_range(UCA3IV,4))
  {
  case 0:break                                                     ; 
  case 2:                                                            
      temp             = UCA3RXBUF                                 ;
      OS_PutMailCond1(&MBRX, &temp)                                ;
      break                                                        ;
  case 4:break                                                     ; 
  default: break                                                   ;  
  }  
  OS_LeaveInterrupt();
}
Beispiel #2
0
/*****************************************************************************
 * Function - RxDataReady
 * DESCRIPTION: ISR when rx trigger level reached.
 *              FIFO_TRIGGER_LEVEL bytes is now in FIFO buffer
 *
 *****************************************************************************/
static void RxDataReady(void)
{
  int fifo_indx = 0;
  char rx_byte;

  /* Empty FIFO */
  while (UART0_LINE_STATUS & 0x01)
  {
    rx_byte = RXD0;
    if ( mTestUartLoopBack == true)
    {
      fifo_indx++;
      if (mTestUartLoopBackReadyToRead == true)
      {
        if (rx_byte != 0x55)
        {
           mUartLoopBackStatus = UART_TEST_ERROR;
        }
        else
        {
           mUartLoopBackStatus = UART_TEST_OK;
        }
      }
      else
      {
       if ( fifo_indx >= FIFO_TRIGGER_LEVEL)
       {
         mTestUartLoopBackReadyToRead = true;
       }
      }
    }
    if ( isr_enabled == TRUE )
    {
      OS_PutMailCond1(&MBIobReceive, &rx_byte);
    }
  }
  /* Signal InterCom Task */
  IobComDrv::GetInstance()->SignalIobDataRxed();
}