static void timerHandler(GPTDriver *gptp) { (void)gptp; #ifdef DEBUG_MB tmStopMeasurement (&tm); palSetPad (BOARD_LED2_P, BOARD_LED2); #endif chSysLockFromIsr(); { vMBPortSetWithinException (TRUE) ; if (pxMBPortCBTimerExpired () == TRUE) rescheduleJbus485FromIsr(); vMBPortSetWithinException (FALSE) ; } chSysUnlockFromIsr(); }
void TCX_IRQHANDLER( void ) { uint32_t xTCX_IMRX = TCX->TC_CHANNEL[TCCHANNEL].TC_IMR; uint32_t xTCX_SRX = TCX->TC_CHANNEL[TCCHANNEL].TC_SR; uint32_t uiSRMasked = xTCX_SRX & xTCX_IMRX; BOOL bTaskWoken = FALSE; vMBPortSetWithinException( TRUE ); if( ( uiSRMasked & TC_SRX_CPAS ) > 0 ) { #if MB_TIMER_DEBUG == 1 PIO_Clear( &xTimerDebugPins[0] ); #endif ( void )pxMBPortCBTimerExpired( ); } vMBPortSetWithinException( FALSE ); portEND_SWITCHING_ISR( bTaskWoken ? pdTRUE : pdFALSE ); }
void vUSARTHandler( void ) { uint32_t uiCSR; uint32_t uiIMR; BOOL bTaskWoken = FALSE; vMBPortSetWithinException( TRUE ); uiCSR = xUSARTHWMappings[ucUsedPort].pUsart->US_CSR; uiIMR = xUSARTHWMappings[ucUsedPort].pUsart->US_IMR; uint32_t uiCSRMasked = uiCSR & uiIMR; if( uiCSRMasked & US_CSR_RXRDY ) { bTaskWoken = pxMBFrameCBByteReceived( ); } if( uiCSRMasked & US_CSR_TXRDY ) { bTaskWoken = pxMBFrameCBTransmitterEmpty( ); } if( uiCSRMasked & US_CSR_TXEMPTY ) { if( NULL != xUSARTHWMappings[ucUsedPort].USARTDEPin ) { PIO_Clear( xUSARTHWMappings[ucUsedPort].USARTDEPin ); } if( NULL != xUSARTHWMappings[ucUsedPort].USARTNotREPin ) { PIO_Clear( xUSARTHWMappings[ucUsedPort].USARTNotREPin ); } USART_DisableIt( xUSARTHWMappings[ucUsedPort].pUsart, US_IER_TXEMPTY ); } vMBPortSetWithinException( FALSE ); portEND_SWITCHING_ISR( bTaskWoken ? pdTRUE : pdFALSE ); }