Add GPDMA LLI function to enable interrupt after LLI operation is complete.

This commit is contained in:
Jared Boone
2013-12-08 17:49:50 -08:00
parent ca070acad0
commit 6185b67008
3 changed files with 9 additions and 2 deletions

View File

@ -44,3 +44,7 @@ void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel) {
void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel) {
GPDMA_INTERRCLR = GPDMA_INTERRCLR_INTERRCLR(1 << channel);
}
void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli) {
lli->ccontrol |= GPDMA_CCONTROL_I(1);
}

View File

@ -24,6 +24,8 @@
#include <stdint.h>
#include <libopencm3/lpc43xx/gpdma.h>
void gpdma_controller_enable();
void gpdma_channel_enable(const uint_fast8_t channel);
@ -32,4 +34,6 @@ void gpdma_channel_disable(const uint_fast8_t channel);
void gpdma_channel_interrupt_tc_clear(const uint_fast8_t channel);
void gpdma_channel_interrupt_error_clear(const uint_fast8_t channel);
void gpdma_lli_enable_interrupt(gpdma_lli_t* const lli);
#endif/*__GPDMA_H__*/

View File

@ -46,7 +46,6 @@ void sgpio_dma_configure_lli(
const uint_fast8_t source_master = direction_transmit ? 1 : 0;
const uint_fast8_t destination_master = direction_transmit ? 0 : 1;
const uint_fast8_t lli_fetch_master = direction_transmit ? 0 : 1;
const uint_fast8_t interrupt_after_this_lli = i & 1;
lli[i].csrcaddr = direction_transmit ? memory_address : peripheral_address;
lli[i].cdestaddr = direction_transmit ? peripheral_address : memory_address;
@ -64,7 +63,7 @@ void sgpio_dma_configure_lli(
GPDMA_CCONTROL_PROT1(0) |
GPDMA_CCONTROL_PROT2(0) |
GPDMA_CCONTROL_PROT3(0) |
GPDMA_CCONTROL_I(interrupt_after_this_lli)
GPDMA_CCONTROL_I(0)
;
}
}