Har dock sprungit in i en vägg eller nått

Strukturen är följande.
Jag har två buffertar om 250st 16bitars tal. Sen har jag ett interrupt som sker med en frekvens om 8Khz, 125uS mellan varje. I interruprutinen samplas signalen och sparas i en av buffertarna, när den aktuella bufferten fyllts ändras adressen på en pekare så att den andra bufferten börjar fyllas och en flagga sätts så att programmet vet att det är ok att börja beräkna på värdena i den första bufferten.
Det samplade värdet läggs även i en mindre buffert om 30 poster som fylls kontinuerligt, runt runt.
Den stora bufferten blir med 250 värden ca 3.1ms lång och då dtmf-tonen kan vara upp till 100ms lång använder jag den lilla bufferten för att se när det blivit tyst så jag kan va bered på nästa ton.
Idén jag hade var att göra alla beräkningar mellan varje interrupt för att förenkla kodningen. Men som det är nu har jag en tidslucka på knappt 100uS mellan varje sampling, vilket i 16Mhz bör ge ca 1600 instruktioner om jag räknat rätt.
Redan vid detekteringen av signalen har jag nu kört fast då det tar allldeles för lång tid, bland annat så summers din lilla bufferten vilket blir 30 summeringar med 16-bitars tal. 1600 instruktioner borde väl räcka till gott och väl men det finns lite switch satser och sådant med också. Hur som helst går det åt skogen, tiden räcker inte helt enkelt (tror jag).
Den lösning jag ser just nu är att avbryta all sampling under 2-3ms och på så sätt få massa tid över för beräkningar. Vad jag förstått kan signalen va upp till 100ms lång och luckorna ca 50ms långa och då borde det gå att göra så utan att missa något men är inte helt säker på dom uppgifterna.
Ett problem dock är att jag använder en hel del libbar som sparade mig massa tid i början av projektet:
#include "uart.h" // include uart function library
#include "rprintf.h" // include printf function library
#include "a2d.h" // include A/D converter function library
#include "timer.h" // include timer function library (timing, PWM, etc)
#include "vt100.h" // include vt100 terminal support
#include "cmdline.h" // include cmdline function library
Nu verkar dom dock vara ivägen, jag kan inte sätta cli() och sei() runt min kod utan att programmet spårar ur, tror bland annat timer-libben förlitar sig på interrupts... så det lutar åt att skriva om det i en renare form, vilket känns lite tungt så här 1-2 veckor innan redovisning.
Kom just på att jag skulle kunna gå direkt på tondetektering och skippa den lilla bufferten och summeringen av den och istället se när frekvensen försvinner för att hitta tomrummen...
Tänkte ändå jag skulle fråga här innan jag skriver om allting ifall nån har något bättre förslag på strukturen i programmet?