500Гц не получится, минимум 800Гц - об этом нам Котельников и Найквист говорит. Но в вашем случае и этого маловато будет. Может дальше очевидные вещи будут, но всё же напишу, раз уж настроение есть и время ;-)
Нарисовал наглядно. Пунктир - предыдущий период, циферки - сколько выборок на период. Зелёным - это когда максимум попал между сэмплов. Обратите внимание, что частота "зелёных" выше 1/8 периода, то есть даже 16 выборок на период - маловато. Когда частота будет на верхнем пороге границы, то период уменьшится, а значит - и частоту выборок надо смотреть для этого, наихудшего, случая. Ну и если возможен уход частоты больше, чем в 2 раза вверх, то тоже весело может быть: начнём пропускать пики сигнала.
AWDT можно запустить непрерывно молотить, а прерывание или событие дёргать только в случае обновления минимума или максимума. В обработчике же устанавливать новые значения.
Среднюю(FIR?) можно взять как AVG = (X+3*AVG)/4, или вида AVG = (n*X+(p-n)*AVG)/p где p - 2^N для деления через сдвиги.
Набросал в экселе файлик для просмотра переходной характеристики. При долгом сигнале не дотягивает до него из-за ошибки округления. Можно перед делением-сдвигом добавлять константу, чтобы исправить это.