Как стать автором
Обновить

Комментарии 14

А это разводка Топора там, на плате, в самом верху?
Ага =)
Но только шины данных и адреса для NOR flash и OLED
Жуткая АЧХ — ниже 2,5 кГц бузер практически не пищит.
Хотя пищалка, конечно…
Круто было-бы реализовать вывод «аналогового» звука — через ШИМ на сотню килогерц или поболе, хотя вопрос потянет ли это процессор.
А «просто» пищать меандром — не так интересно.
Любопытно, а в чём конкретно _ужас_ аппаратного обработчика энкодера? У меня в добром десятке проектов на STM32 он использован и всё работает без замечаний, считает каждый тик как… часы, простите за каламбур :)
У меня он работал очень плохо, без преувеличесний. Много ложных срабатываний. Ради интереса покажу позже код инициализации и то, как это работает.

А серия тоже f103? Может, в старших камнях исправили?
Серии я использовал разные: F103, F4xx, F7xx. Не думаю, что у них сильная разница в реализации. Встроенный обработчик хорош как раз тем, что обладает настраиваемым фильтром, позволяющим эффективно бороться с дребезгом. Хотя, может быть у Вас такой энкодер трещащий, конечно…
Разводка радует :) Сразу вспоминается, «там на неведомых дорожках, следы невиданных зверей»
Ммм… о какой переносимости вы говорите? вот если бы у BuzzerConfig(void) были параметры ввиде вывода GPIO, таймера и номера его канала тогда не придётся весь код заново перелопачивать.
О хорошей переносимости между программами, использующими FreeRTOS. Точнее даже, о сложной переносимости самодельных способов синхронизации между задачами. Мне лично проще потратить двадцать минут и исправить конфигурацию функций инициализации руками, чем создавать полностью универсальные функции.

ST уже пробовали так сделать и что вышло? Ага, SPL. Не то, что бы совсем плохо, но ругаться есть на что. Каждый сам выбирает себе эту грань, главное не вдаваться в крайности.
Кстати, в отдельном файле у меня все же есть макросы BUZZER_PIN, BUZZER_PORT, BUZZER_CLK_PINS (BuzzerConfig(void)). Туда же, при желании, можно записать таймер:

#define BUZZER_TIM TIM2
#define BUZZER_CH  CH1
А есть у этих МК аппаратная возможность управлять мощным пьезопреобразователем?
Нужна автоподстройка частоты.
Если честно, не очень понял, о чем речь. Скорее всего, нету, но вы можете проверить сами!
Спасибо за даташит, изучаю.
У AVR есть механизм zero-crossing, который позволяет сделать настройку на резонанс.
Разрабатываю управление мощным пьезопреобразователем 1-2 кВт.
А сам проект, ультразвуковая обработка молока.
Проще же сделать это на внешних компонентах, а МК использовать любой, который удобно программировать.
К примеру, я когда-то делал Zero-crossing на компаратор + аналоговый мультиплексор (Low Capacitance, Low Charge Injection)

image

Нужно было измерять только положительную полуволну синуса микроконтроллером (сигнал симметричен был). В схеме компаратор кроме того, что детектирует переход через 0, так еще и переключает мультиплексор так, что бы в положительную полуволну сигнал шел на АЦП МК, а в отрицательную выдавал 0.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Публикации

Истории