diff options
-rw-r--r-- | openpicc/application/ssc_picc.c | 6 | ||||
-rw-r--r-- | openpicc/application/tc_cdiv.c | 8 | ||||
-rw-r--r-- | openpicc/application/tc_cdiv_sync.c | 2 | ||||
-rw-r--r-- | openpicc/config/board.h | 4 |
4 files changed, 15 insertions, 5 deletions
diff --git a/openpicc/application/ssc_picc.c b/openpicc/application/ssc_picc.c index ab3f2e9..d92c7bc 100644 --- a/openpicc/application/ssc_picc.c +++ b/openpicc/application/ssc_picc.c @@ -441,6 +441,9 @@ void ssc_tx_start(ssc_dma_tx_buffer_t *buf) AT91F_SSC_EnableTx(AT91C_BASE_SSC); #else ssc_tx_pending = 1; +#ifdef OPENPICC_USE_SSC_DATA_GATING + ssc_set_data_gate(0); +#endif pio_irq_enable(OPENPICC_SSC_TF); if(AT91F_PIO_IsInputSet(AT91C_BASE_PIOA, OPENPICC_SSC_TF)) { /* TF was probably already high when we enabled the PIO change interrupt for it. */ @@ -590,6 +593,9 @@ static void __ramfunc ssc_irq(void) DEBUGP("TXSYN "); if(ssc_sr & AT91C_SSC_ENDTX) { +#ifdef OPENPICC_USE_SSC_DATA_GATING + ssc_set_data_gate(1); +#endif //usb_print_string_f("ENDTX ", 0); if(ssc_tx_buffer.state == PENDING) { ssc_tx_buffer.state = FREE; diff --git a/openpicc/application/tc_cdiv.c b/openpicc/application/tc_cdiv.c index eb8484c..226abbe 100644 --- a/openpicc/application/tc_cdiv.c +++ b/openpicc/application/tc_cdiv.c @@ -45,7 +45,7 @@ void __ramfunc tc_cdiv_set_divider(u_int16_t div) * zero modulo the new RC.*/ /*tc_cdiv_phase_add(tcb->TCB_TC0.TC_RC-(tcb->TCB_TC0.TC_CV%tcb->TCB_TC0.TC_RC));*/ if(tcb->TCB_TC0.TC_CV > div -#ifdef OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_USE_CLOCK_GATING /* Don't spin if FRAME_BURST is clear, the clock is stopped in this case */ && !(!AT91F_PIO_IsInputSet(AT91C_BASE_PIOA, OPENPICC_PIO_FRAME_BURST)) #endif @@ -81,7 +81,7 @@ void tc_cdiv_init(void) OPENPICC_PIO_CARRIER_DIV_OUT | OPENPICC_PIO_CDIV_HELP_OUT | OPENPICC_PIO_CDIV_HELP_IN -#ifdef OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_USE_CLOCK_GATING | OPENPICC_PIO_FRAME_BURST #endif ); @@ -95,7 +95,7 @@ void tc_cdiv_init(void) /* Connect TCLK1 to XC1, TCLK2 to XC2 */ tcb->TCB_BMR &= ~(AT91C_TCB_TC1XC1S | AT91C_TCB_TC2XC2S); tcb->TCB_BMR |= (AT91C_TCB_TC1XC1S_TCLK1 | AT91C_TCB_TC2XC2S_TCLK2); -#ifdef OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_USE_CLOCK_GATING /* Connect TCLK0 to XC0 */ tcb->TCB_BMR &= ~(AT91C_TCB_TC0XC0S); tcb->TCB_BMR |= (AT91C_TCB_TC0XC0S_TCLK0); @@ -112,7 +112,7 @@ void tc_cdiv_init(void) AT91C_TC_BEEVT_SET | AT91C_TC_BCPB_CLEAR | AT91C_TC_EEVT_XC2 | AT91C_TC_ETRGEDG_RISING | AT91C_TC_BSWTRG_CLEAR | AT91C_TC_ASWTRG_CLEAR -#ifdef OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_USE_CLOCK_GATING | AT91C_TC_BURST_XC0 #endif ; diff --git a/openpicc/application/tc_cdiv_sync.c b/openpicc/application/tc_cdiv_sync.c index c6d3f47..dbaf3f7 100644 --- a/openpicc/application/tc_cdiv_sync.c +++ b/openpicc/application/tc_cdiv_sync.c @@ -46,7 +46,7 @@ void tc_cdiv_sync_reset(void) for (i = 0; i < 0xff; i++) ; AT91F_PIO_SetOutput(AT91C_BASE_PIOA, OPENPICC_PIO_SSC_DATA_CONTROL); -#ifdef OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_USE_CLOCK_GATING /* reset tc_cdiv counter, the cleared frame signal stopped the tc_cdiv clock */ tc_cdiv_reset(); #endif diff --git a/openpicc/config/board.h b/openpicc/config/board.h index e332b17..0cfc9a5 100644 --- a/openpicc/config/board.h +++ b/openpicc/config/board.h @@ -55,6 +55,10 @@ /* Modified board, routing PLL_LOCK to PA5 and a copy of FRAME to PA4, enabling the use of the T/C BURST feature. */ #define OPENPICC_MODIFIED_BOARD +#ifdef OPENPICC_MODIFIED_BOARD +#define OPENPICC_USE_SSC_DATA_GATING +#define OPENPICC_USE_CLOCK_GATING +#endif /*-----------------*/ /* Pins */ |