This questions seems to be a little strange but bear with me.
I have an application that needs a digital filter to be implemented in a microcontroller.
What I want to do
I want to use the DMA to get the data from the ADC every 300us (approximately). and store it in a buffer and I'm using FreeRTOS. I want to have a task check the DMA for half transfer completion and whenever it does reach that point, then the microcontroller would execute the LP filter on half the array, while the DMA keeps on filling the rest of the buffer. Due to my microcontroller's specs I'm sure I can run this filter in those points way before it has filled the other end of the buffer.
After this it would go to a waiting mode until it finishes the later half and when it's done it will execute the filter on the second half.
Does this make sense?
What I have done in the past
Program an interruption , when the interruption occurs put the data in a FIFO and keep filling the buffer until you reach its limit while doijg the calculations
Is "what I want to do" ? Of course it can be done, but will it actually be a proper filter? It sounds strange in my head when I think about it, but it somehow makes sense (ever get that feeling?). Or do I have to do it the way I've done it in the past?
Another option would be to do it in a mixture kind of way? Fill the buffer with DMA and execute FreeRTOS every milissecond and do the filter the same way I used to do it (fill FIFO, do calculations, etc)?
Thank you @Ben for your response. I'm adding the same info I put as a comment here in the edit so it can be better visualized.
Desired filter - IIR filter initially
Sampling rate- 10kHz. An ADC acquisition every 100us (waaay above the Nyquist frequency, but it's necessary for what I want .. a power meter)
Tap - between 2 and 10, it doesn't need to be a high order filter
Acceptable latency- Well I'd need to use the output to do al the calculations related to power and then store it and send it to storage somewhere, so the latency can be high