Решил скрестить Диджиспарку (Аттини85, 16.5МГц) с алгоритмом Гёрцеля (АГ). Скачал библу Goertzel (Sebastian Westerhold (AI5GW)). При симуляции на Протеусе заметил странность - алгоритм выделяет частоту примерно на 90 герц выше заданной. Задавал и подавал (виртуально ессно) частоты ДТМФ. Выделялась всегда следующая (и только она) над заданной. Очевидно присутствует ошибка в формуле расчета, но не пойму какая. С уважением. ПС. Рассчитал и задавал недостающие (635 и 1095) комплементарные частоты. Та же странность. Но - коль система сохраняется - это уже можно обойти. !!! ПСС. Первая библиотека АГ, которая хоть как-то работает.
Понимая, что штатные частоты ДТМФ наверняка подчиняются какой-то системе - поступил по-другому : Задал 2 полинома для существующих "квартетов" частот, и рассчитал интерполяцией недостающие нижние частоты. Оказались - то что надо. ПС. Очень соответствует теме "впихнуть невпихуемое". Компил с Герцелем с запасом помещается в объем АТтини85 !)))
Проблема в том - как определить пришедшую в данный момент частоту (ессно из списка штатных частот) ? Логика простая - перебирайте частоты "гетеродина", и ловите максимум магнитуды. Для этого надо строчку задания частот занести в тело цикла. Но не получается их "перебирать". Код продолжает работать только с первой заданной частотой.