@defragster
Think this one is above my pay grade so Kurt you want to give it a try
I hear you, we are all at a pretty cheap pay grade
I am not sure which interrupt we are talking about? I don't believe we are using any flexIO interrupts.
There are two others that I know of:
First off we use an interrupt for detecting the VSYNC.
Code:
while ((*_vsyncPort & _vsyncMask) != 0);
attachInterrupt(VSYNC_PIN, &frameStartInterruptFlexIO, RISING);
return true;
This is using the standard attachinterrupt code. So all of these interrupts funnel through one ISR
Code:
attachInterruptVector(IRQ_GPIO6789, &irq_gpio6789);
NVIC_ENABLE_IRQ(IRQ_GPIO6789);
So one could do: NVIC_SET_PRIORITY(IRQ_GPIO6789, 192); // 255 = lowest priority
Or some such thing to see if it helps.
OR: I experimented with finding out which pin/port this is, switch that pin back to normal mode PORTS1-5, and then use the appropriate ISR for the pin. I believe each of these ports have
2 IRQs one for lower 16 pins and another upper 16 pins... And you can setup direct so you have to scan...
Second: DMA... We have:
Code:
dma_flexio.interruptAtCompletion();
dma_flexio.attachInterrupt(dmaInterruptFlexIO);
And as such there is an interrupt. Been awhile since I looked how some of these work. There are IRQ numbers for these:
Code:
enum IRQ_NUMBER_t {
IRQ_DMA_CH0 = 0,
IRQ_DMA_CH1 = 1,
IRQ_DMA_CH2 = 2,
IRQ_DMA_CH3 = 3,
IRQ_DMA_CH4 = 4,
IRQ_DMA_CH5 = 5,
IRQ_DMA_CH6 = 6,
IRQ_DMA_CH7 = 7,
IRQ_DMA_CH8 = 8,
IRQ_DMA_CH9 = 9,
IRQ_DMA_CH10 = 10,
IRQ_DMA_CH11 = 11,
IRQ_DMA_CH12 = 12,
IRQ_DMA_CH13 = 13,
IRQ_DMA_CH14 = 14,
IRQ_DMA_CH15 = 15,
IRQ_DMA_ERROR = 16,
...
I don't remember every doing enable on these, but probably built in somewhere.
But I think one can get the channel number as we do in an error condition: Serial.printf(" DMA channel #%u\n", dma_flexio.channel);
So then need to map this to the DMA IRQ (note these ISRS double up)
Code:
0 eDMA OR eDMA Channel 0 Transfer Complete
eDMA Channel 16 Transfer Complete
1 OR eDMA Channel 1 Transfer Complete
eDMA Channel 17 Transfer Complete
So simply mask to low nibble. and then one can probably set the priority of that one...
Now back to maybe nothing