diff options
author | henryk <henryk@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2007-12-05 16:30:04 +0000 |
---|---|---|
committer | henryk <henryk@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2007-12-05 16:30:04 +0000 |
commit | ace500869d1f5e54c3b7605c81f1321d5523c3d9 (patch) | |
tree | 1d66fe78b4939574b17c668a1232efd9b98d68b3 /openpicc/application/ssc_picc.c | |
parent | ba63352b4b915e46bc44fbd98c6e0e837477005d (diff) |
Add a kludge to make repetitive sends working. For some obscure reason the first transfer of subsequent transmissions (32 sample-bits, equalling 2 data-bits) gets lost. It does work if I just give
the same TX buffer to the PDC twice (once after starting the TX PDC).
git-svn-id: https://svn.openpcd.org:2342/trunk@374 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'openpicc/application/ssc_picc.c')
-rw-r--r-- | openpicc/application/ssc_picc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/openpicc/application/ssc_picc.c b/openpicc/application/ssc_picc.c index 7e02ec6..1332905 100644 --- a/openpicc/application/ssc_picc.c +++ b/openpicc/application/ssc_picc.c @@ -289,6 +289,7 @@ void ssc_tx_start(ssc_dma_tx_buffer_t *buf) u_int32_t start_cond; /* disable Tx */ + AT91F_PDC_DisableTx(tx_pdc); AT91F_SSC_DisableTx(AT91C_BASE_SSC); /* disable all Tx related interrupt sources */ @@ -315,6 +316,7 @@ void ssc_tx_start(ssc_dma_tx_buffer_t *buf) AT91F_SSC_EnableIt(ssc, AT91C_SSC_ENDTX); /* Enable DMA */ AT91F_PDC_EnableTx(tx_pdc); + AT91F_PDC_SetTx(tx_pdc, buf->data, num_data); /* Start Transmission */ #ifndef USE_SSC_TX_TF_WORKAROUND AT91F_SSC_EnableTx(AT91C_BASE_SSC); |