mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-22 16:28:32 +03:00
Receiver interrupt enabled
Serial smartcard reader sends data which should be processed. In the USART1 IRQ a status variable is set to show that data has arrived, which should be checked for in the main function.
This commit is contained in:
@@ -113,9 +113,7 @@ static char rcvdChar = 0;
|
|||||||
void USART1_IrqHandler( void )
|
void USART1_IrqHandler( void )
|
||||||
{
|
{
|
||||||
uint32_t stat;
|
uint32_t stat;
|
||||||
// printf(":>");
|
|
||||||
char_stat = 0;
|
char_stat = 0;
|
||||||
return;
|
|
||||||
// Rcv buf full
|
// Rcv buf full
|
||||||
/* if((stat & US_CSR_RXBUFF) == US_CSR_RXBUFF) {
|
/* if((stat & US_CSR_RXBUFF) == US_CSR_RXBUFF) {
|
||||||
TRACE_DEBUG("Rcv buf full");
|
TRACE_DEBUG("Rcv buf full");
|
||||||
@@ -124,19 +122,22 @@ void USART1_IrqHandler( void )
|
|||||||
*/
|
*/
|
||||||
uint32_t csr = USART_PHONE->US_CSR;
|
uint32_t csr = USART_PHONE->US_CSR;
|
||||||
|
|
||||||
|
// printf(".\n\r");
|
||||||
|
|
||||||
if (csr & US_CSR_TXRDY) {
|
if (csr & US_CSR_TXRDY) {
|
||||||
/* transmit buffer empty, nothing to transmit */
|
/* transmit buffer empty, nothing to transmit */
|
||||||
}
|
}
|
||||||
|
if (csr & US_CSR_RXRDY) {
|
||||||
|
stat = (csr&(US_CSR_OVRE|US_CSR_FRAME|
|
||||||
|
US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|
|
||||||
|
(1<<10)));
|
||||||
|
|
||||||
stat = (csr&(US_CSR_OVRE|US_CSR_FRAME|
|
if (stat == 0 ) {
|
||||||
US_CSR_PARE|US_CSR_TIMEOUT|US_CSR_NACK|
|
/* Get a char */
|
||||||
(1<<10)));
|
rcvdChar = ((USART_PHONE->US_RHR) & 0xFF);
|
||||||
|
} /* else: error occured */
|
||||||
if (stat == 0 ) {
|
char_stat = stat;
|
||||||
/* Get a char */
|
}
|
||||||
rcvdChar = ((USART_PHONE->US_RHR) & 0xFF);
|
|
||||||
} /* else: error occured */
|
|
||||||
char_stat = stat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ISR_PhoneRST( const Pin *pPin)
|
static void ISR_PhoneRST( const Pin *pPin)
|
||||||
@@ -283,14 +284,15 @@ void _ISO7816_Init( const Pin pPinIso7816RstMC )
|
|||||||
/* Configure USART */
|
/* Configure USART */
|
||||||
PMC_EnablePeripheral(ID_USART_PHONE);
|
PMC_EnablePeripheral(ID_USART_PHONE);
|
||||||
|
|
||||||
// USART_EnableIt( USART1, US_IER_RXRDY|US_IER_TXRDY) ;
|
USART1->US_IDR = 0xffffffff;
|
||||||
|
USART_EnableIt( USART1, US_IER_RXRDY) ;
|
||||||
/* enable USART1 interrupt */
|
/* enable USART1 interrupt */
|
||||||
//NVIC_EnableIRQ( USART1_IRQn ) ;
|
NVIC_EnableIRQ( USART1_IRQn ) ;
|
||||||
|
|
||||||
// USART_PHONE->US_IER = US_IER_RXRDY | US_IER_OVRE | US_IER_FRAME | US_IER_PARE | US_IER_NACK | US_IER_ITER;
|
// USART_PHONE->US_IER = US_IER_RXRDY | US_IER_OVRE | US_IER_FRAME | US_IER_PARE | US_IER_NACK | US_IER_ITER;
|
||||||
|
|
||||||
USART_SetTransmitterEnabled(USART_PHONE, 1);
|
USART_SetTransmitterEnabled(USART_PHONE, 1);
|
||||||
//USART_SetReceiverEnabled(USART_PHONE, 1);
|
USART_SetReceiverEnabled(USART_PHONE, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -377,7 +379,8 @@ extern int main( void )
|
|||||||
// printf("Nothing to do\n\r");
|
// printf("Nothing to do\n\r");
|
||||||
}
|
}
|
||||||
if (rcvdChar != 0) {
|
if (rcvdChar != 0) {
|
||||||
printf("Received _%x_ ", rcvdChar);
|
printf("Received _%x_ \n\r", rcvdChar);
|
||||||
|
rcvdChar = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0 ;
|
return 0 ;
|
||||||
|
|||||||
Reference in New Issue
Block a user