| @@ -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(); | |||