Wenn man das mit dem Mega8 machen will, wrid man zumindestens den AD wandler ziehmlich häufig, wohl wenigstens jede 2 te oder 3 te Wandlung, brauchen. An einen AD port kommt ein Mikrofon mit Vorverstärkung. Der AD wandler läuft in nontinuierlichen Mode (ca. 2-10 kHz), In der AD ISR läft die Routine zur Tonerkennung. Wenn man noch andere AD kanäle absfragen will (Bumper, Linienerkennung etc.) wird es etwas komlizierter, dann muß man die nämlich noch abwechseln dazwischens schieben. Den Namen für den Tonerkennungsabgorithmus habe ich leider wieder Vergessen. Im prinzip geht es aber so: vom AD wert wird der mittelwert abgezogen. Die dannwerden fortlaufend 2 Variablen jeweils neu berechnet als:
V1_neu = a1*V1_alt + a2 * v2_alt + ADC
V2_neu = a3*V1_alt + a4 * v2_alt
mit Konstanten a1...a4. Die Konstanten bestimen die Frequnz und Anprechzeit. Wenn dann der passende Ton vorhanden ist werden die Werte bei V1 und/oder v2 relativ groß und man kann reagieren wenn eine Schranke überschritten wird.

Die Tonerkennung sieht also realtiv einfach und schnell aus und könnte im wesenlichen in der ISR laufen. Trotzdem kann das schon 10-20% der Rechenzeit für jede zu überwachende Frequenz kosten.