diff options
author | Christina Quast <chrysh.ng+git@gmail.com> | 2015-04-17 18:47:34 +0200 |
---|---|---|
committer | Christina Quast <chrysh.ng+git@gmail.com> | 2015-04-17 18:50:25 +0200 |
commit | 4b8149363a74ab4480e1cfd7b2e3249b0049ac87 (patch) | |
tree | de47d4ed27d63d4fa6684b6ec8e4d5d17ef4211b /firmware | |
parent | dea1f55fb704bcde74be08f164ffdae7747a6f64 (diff) |
iso7816_4.c: CLK div differs for Master and Slave
Attention: Each init function has to enable and disable receiver and
transmitter on its own!
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/src_board/iso7816_4.c | 17 | ||||
-rw-r--r-- | firmware/src_simtrace/ccid.c | 5 | ||||
-rw-r--r-- | firmware/src_simtrace/simtrace_iso7816.c | 1 |
3 files changed, 10 insertions, 13 deletions
diff --git a/firmware/src_board/iso7816_4.c b/firmware/src_board/iso7816_4.c index 0f27657..25a1385 100644 --- a/firmware/src_board/iso7816_4.c +++ b/firmware/src_board/iso7816_4.c @@ -649,11 +649,6 @@ void ISO7816_Init( Usart_info *usart, bool master_clock ) Usart *us_base = usart->base; uint32_t us_id = usart->id; - us_base->US_CR = US_CR_RSTRX - | US_CR_RSTTX - | US_CR_RXDIS - | US_CR_TXDIS; - if (master_clock == true) { clk = US_MR_USCLKS_MCK; } else { @@ -684,16 +679,14 @@ void ISO7816_Init( Usart_info *usart, bool master_clock ) /* SCK = FIDI x BAUD = 372 x 9600 */ /* BOARD_MCK */ /* CD = MCK/(FIDI x BAUD) = 48000000 / (372x9600) = 13 */ - us_base->US_BRGR = US_BRGR_CD(1); -// us_base->US_BRGR = BOARD_MCK / (372*9150); + if (master_clock == true) { + us_base->US_BRGR = BOARD_MCK / (372*9600); + } else { + us_base->US_BRGR = US_BRGR_CD(1); + } /* Write the Timeguard Register */ // us_base->US_RTOR = 0; us_base->US_TTGR = 5; - - USART_SetTransmitterEnabled(us_base, 1); - USART_SetReceiverEnabled(us_base, 1); - - us_base->US_RHR; } diff --git a/firmware/src_simtrace/ccid.c b/firmware/src_simtrace/ccid.c index c479565..2c70eea 100644 --- a/firmware/src_simtrace/ccid.c +++ b/firmware/src_simtrace/ccid.c @@ -128,6 +128,8 @@ void CCID_configure ( void ) { void CCID_exit ( void ) { PIO_DisableIt( &pinSmartCard ) ; + USART_SetTransmitterEnabled(usart_info.base, 0); + USART_SetReceiverEnabled(usart_info.base, 0); } void CCID_init( void ) @@ -150,6 +152,9 @@ void CCID_init( void ) // PIO_Set(&pinsPower[0]); ISO7816_Init(&usart_info, CLK_MASTER); + USART_SetTransmitterEnabled(usart_info.base, 1); + USART_SetReceiverEnabled(usart_info.base, 1); + ISO7816_Set_Reset_Pin(&pinIso7816RstMC); /* Read ATR */ ISO7816_warm_reset() ; diff --git a/firmware/src_simtrace/simtrace_iso7816.c b/firmware/src_simtrace/simtrace_iso7816.c index b0f3e79..ed7e23d 100644 --- a/firmware/src_simtrace/simtrace_iso7816.c +++ b/firmware/src_simtrace/simtrace_iso7816.c @@ -117,7 +117,6 @@ void USART1_IrqHandler( void ) /* Fill char into buffer */ rbuf_write(&sim_rcv_buf, c); } else { - rbuf_write(&sim_rcv_buf, c); PR("e %x st: %x\n", c, stat); } /* else: error occured */ |