@@ -1,5 +1,10 @@ | |||
#include "DMAChannel.h" | |||
#if DMA_NUM_CHANNELS > 16 | |||
#undef DMA_NUM_CHANNELS | |||
#define DMA_NUM_CHANNELS 16 | |||
#endif | |||
// The channel allocation bitmask is accessible from "C" namespace, | |||
// so C-only code can reserve DMA channels | |||
@@ -65,7 +70,7 @@ void DMAChannel::release(void) | |||
__disable_irq(); | |||
dma_channel_allocated_mask &= ~(1 << channel); | |||
__enable_irq(); | |||
channel = 16; | |||
channel = DMA_NUM_CHANNELS; | |||
TCD = (TCD_t *)0; | |||
} | |||
@@ -86,6 +86,16 @@ class IntervalTimer { | |||
nvic_priority = n; | |||
if (PIT_enabled) NVIC_SET_PRIORITY(IRQ_PIT_CH, n); | |||
} | |||
operator IRQ_NUMBER_t() { | |||
if (PIT_enabled) { | |||
#if defined(KINETISK) | |||
return (IRQ_NUMBER_t)(IRQ_PIT_CH + PIT_id); | |||
#elif defined(KINETISL) | |||
return IRQ_PIT; | |||
#endif | |||
} | |||
return (IRQ_NUMBER_t)NVIC_NUM_INTERRUPTS; | |||
} | |||
#if defined(KINETISK) | |||
friend void pit0_isr(); | |||
friend void pit1_isr(); |