Программировать - это не писать "куски кода", то называется "кодирование".
Программирование сначала делается абстрактно, без привязки к какому-то языку. кроме своего родного.
Можно рисовать алгоритм в виде блок-схемы, можно описывать его словами. Делается это примерно так:
1. Старт - настройка "железа" МК: системы тактирования, портов, таймеров и прочего, что подлежит настройке.
2. Другие действия, выполняемые до входа в Главный Цикл Программы, то есть при старте системы: выдача в порты начальных значений (если это не было сделано при инициализации), присвоение начальных значений переменным, которые будут задействованы в ходе писания программы.
3. Главный Цикл Программы. В этом самом Главном Цикле прописывается всё, что МК должен делать. Сейчас раскроем это поподробнее.
Возможно, в ходе работы какие-то действия придётся делать постоянно, скажем, поллинг: опрос состояния ноги, а какие-то - строго по кванту времени, скажем, раз в миллисекунду, или там в сто микросекунд - например, вытаскивание и выдача в порт очередного значения синуса. Эти два действия распихиваем по разным местам: в начале Главного Цикла прописываем "быстрые" действия, а дальше ставим проверку некоего флажка, который будет устанавливаться (принимать значение 1) каждый квант времени. Если этот флажок установлен, то выполняем квантованные действия, ну и, конечно, сам флажок сбрасываем.
4. Прерывания - их описываем вне главного цикла. На первое время хватит одного - прерывания по таймеру каждую миллисекунду, или там сто микросекунд. В обработчике этого прерывания делается единственное действие: установка флажка, о котором мы уже говорили.
Вот, собственно, описание шкилета практически любой несложной программы для МК.
Тебе его надо:
1. понять (если сразу не поймёшь - сделай ещё несколько подходов, хотя тут вроде всё должно быть понятно);
2. дополнить его описанием (на обычном русском языке) действий, которые должна выполнять программа.
В тонкости вроде инициализации железа на этом этапе лезть не надо.
Я думаю, с этим ты справишься легко и непринуждённо и выдашь описание алгоритма работы какой-нибудь железяки. А когда выдашь - пойдём дальше. Только давай вот без этого:
Я не программист и видимо не дано.
Ты не блааандинка, я тебя видел и точно это знаю.
Значит, дано.
Что касается фильтрации: она будет простейшей при достаточно большой частоте выдачи значений. Поэтому рекомендую тут взять STM32.