ΣSigmaStudio English

Rotary Encoder

Rotary Encoder Блок Rotary Encoder обрабатывает входные сигналы от вращающегося энкодера и выдает сигналы «вверх» и «вниз». Алгоритм также включает программный «антидребезговый» фильтр (de-bouncer) для каждого из входов.

1) Перетащите блок в схему.
2) Подключите входы к двум GPIO. Они будут соответствовать двум выходным контактам вращающегося энкодера, сдвинутым по фазе. В конфигурации оборудования установите для GPIO значение «no debounce» (без антидребезга).

Значение в поле задает постоянную времени (в сэмплах) для антидребезгового фильтра; по умолчанию — 20. Регулируйте это значение методом проб и ошибок, используя вращающийся энкодер в вашей конечной системе.

Пример иллюстрирует использование блока.

Rotary Encoder в SigmaStudio: настройка и параметры

Rotary Encoder — это специализированный блок в среде SigmaStudio, предназначенный для работы с сигналами от вращающегося энкодера. Он относится к категории GPIO Conditioning и используется в проектах на базе сигнальных процессоров ADAU семейства SigmaDSP. Основная задача алгоритма — преобразование двухфазных сигналов с механического энкодера в два логических сигнала: «вверх» и «вниз», которые удобно использовать для управления громкостью, выбора пунктов меню или других параметров в аудиосистеме. Принцип работы блока основан на анализе двух входных сигналов, которые подключаются к GPIO-выводам процессора. Эти сигналы сдвинуты по фазе относительно друг друга, что позволяет определить направление вращения ручки. Внутри алгоритма реализован программный антидребезговый фильтр (de-bouncer) для каждого входа, который подавляет ложные срабатывания из-за механических колебаний контактов. Это критически важно для стабильной работы в реальных условиях, где физический энкодер может создавать помехи при вращении. Для настройки в SigmaStudio необходимо перетащить блок Rotary Encoder в схему и подключить его входы к двум GPIO-пинам. Важно помнить, что в конфигурации оборудования для этих GPIO следует отключить аппаратный антидребезг (установить значение «no debounce»), чтобы не было конфликта с программной обработкой. Параметр блока задает постоянную времени фильтра в сэмплах; значение по умолчанию — 20. Это число определяет, сколько времени сигнал должен оставаться стабильным, прежде чем будет засчитано изменение.