Как часто надо опрашивать 74HC165, если мы хотим обнаруживать нажатия кнопок?

Я собираюсь либо связать 4 регистра сдвига, либо подключить 4 регистра сдвига к ESP32, который подключен к компьютеру через Bluetooth.

Я так понимаю, при напряжении 3,3 вольта 74HC165 может работать на тактовой частоте до 18 МГц. (5 МГц при 2 В, 25 МГц при 4 В).

Что является нормальным для отслеживания событий в сдвиговых регистрах? Это нормально бесконечно опрашивать сдвиговые регистры? Или возможна и/или желательна короткая задержка между каждым чтением?

Я не могу представить себе причину проверки "событий" (нажатия кнопок и т. д.) 1 миллион раз в секунду. Мы могли бы, я думаю, я просто не знаю, должны ли мы это делать.

(Я новичок в ESP32, поэтому не знаю, как поддержка Bluetooth-соединения влияет на ситуацию)

, 👍0

Обсуждение

на ваш вопрос можно легко ответить, запустив тестовый код и нажимая кнопки... это не вопрос об Arduino, поэтому здесь он не по теме... вопросы об оптимальных интервалах выборки относятся к https://electronics.stackexchange.com /вопросы, @jsotola

Я собирался спросить, почему за это проголосовали отрицательно (я действительно не понимаю, почему), но потом я посмотрел на вкладку «Главные вопросы» и увидел, что большинство вопросов заминусовано ‍♂️, @Jay

за него, вероятно, проголосовали, потому что Arduino не имеет отношения к вашему вопросу ... вы можете использовать чип PIC, ПК, Raspberry Pi или любую из многих плат для разработки, и ваш вопрос не изменится., @jsotola

@jsotola Я не уверен, правда ли это? Я не думал, что задаю вопрос об электронике, потому что я не уверен, как Bluetooth и другие действия на ESP32 влияют или не влияют на чтение с чипа. (Например, я не знаю, прерывается ли чтение с кнопок событиями bluetooth? Может быть, да? Может быть, нет? Я просто не знаю, чего еще не знаю о программировании этих вещей.), @Jay


2 ответа


3

Для этого вы можете использовать теорию Найквиста-Шеннона для дискретизации сигналов.

Вкратце говорится, что "для выборки сигнала с частотой X требуется как минимум 2x X выборок в секунду".

Таким образом, если вы знаете, как долго кнопка будет нажата (или отпущена, в зависимости от того, что быстрее, т. е. "самый высокочастотный интересующий компонент"), то вы знаете, что вам нужно выполнить выборку с интервалом не более половины этого времени.

Таким образом, для кнопки, которую вы можете нажимать в течение 100 мс, вы знаете, что вам нужно производить выборку не чаще, чем каждые 50 мс, а желательно быстрее.

,

Благодарю вас! это дает мне логический способ думать о числах. Единственное, что неясно, с точки зрения электроники (расход батареи, ЭМП и т. д.), люди склонны семплировать как можно реже, или ESP32/74HC165 в любом случае будут потреблять в основном одинаковую мощность? (Извините, если это основные вопросы, я в первую очередь кодер, мне нравится изучать создание основных электронных устройств), @Jay

@ Джей, большинство людей не задумываются об этом, если они не делают что-то, работающее от батареи, в спящих режимах. Пока вы делаете это достаточно быстро, просто делайте то, что имеет смысл для вашей программы. Это не имеет значения с точки зрения энергопотребления, если вы не спите., @Majenko


1

Да, это вполне нормально бесконечно опрашивать кнопки. Даже оригинальный контроллер NES делал это именно так, его протокол работает точно так же, как если бы вы разговаривали со сдвиговым регистром. Маженко уже дал ответ о хорошей частоте опроса, вот дополнительное оборудование, которое вам понадобится для работы с прерываниями вместо опроса:

Вам потребуется добавить несколько логических элементов ИЛИ (или логических элементов И, если ваши кнопки перемещаются вниз, а не вверх) в "параллельном" к вашим регистрам сдвига, так что у вас есть один сигнал с семантикой "(по крайней мере) одна из кнопок была нажата".

Затем этот сигнал может быть подключен к входу SH/LD ваших сдвиговых регистров, запуская сдвиговые регистры для загрузки (т.е. выборки и сохранения) входных данных. Кроме того, он должен быть подключен к одному GPIO вашего Arduino/ESP, к которому вы подключаете обработчик прерываний на стороне программного обеспечения. Затем этот обработчик прерываний опрашивает регистр сдвига один раз (или устанавливает флаг, который заставляет ваш основной цикл опрашивать его). Вам может понадобиться дополнительный шлюз и GPIO, чтобы процедура опроса могла поддерживать SH/LD ВЫСОКИМ во время опроса, в зависимости от вашего варианта использования и того, насколько упругими являются ваши кнопки.

Вы даже можете использовать этот сигнал, чтобы вывести ESP из глубокого сна, один раз опросить кнопки, сделать все, что нужно сделать в ответ на эту кнопку, а затем вернуться в глубокий сон.

В заключение: бесконечный опрос — это в основном путь из-за накладных расходов на аппаратное обеспечение для реализации решения по прерыванию.

,