Прямоугольный входной сигнал на цифровых контактах

У меня глупый вопрос.
Сегодня я увидел функцию для arduino, которая называется pulseIn(). Поэтому, чтобы проверить, что она делает, я подал прямоугольную волну на pin, как на странице справки arduino, и она отлично заработала. На странице справки была строка, в которой говорилось:-
Работает с импульсами длительностью от 10 микросекунд до 3 минут.
Так что, как мне кажется, он будет работать до сигнала 100 кГц. Есть ли способ считывать сигналы с гораздо более высокой частотой, чем эта? Например, в диапазоне МГц или около того?

, 👍0


2 ответа


Лучший ответ:

1

Возможно чтение высокочастотных сигналов. Возможно чтение сигналов до 6 МГц или даже выше (в зависимости от тактовой частоты системы).

То есть, пока все, что вам нужно знать, — это основная частота сигнала.

Вывод 5 Arduino Uno (PD5) подключен к таймеру 1 и может быть установлен в качестве источника тактовой частоты для этого таймера. Подключив его к вашему сигналу и позволив таймеру считать от нуля, используя этот сигнал в качестве источника тактовой частоты, а затем выждав заранее определенный период времени, вы можете легко узнать, сколько тактовых импульсов поступило от вашего сигнала за это время. Из этого вы можете вычислить частоту сигнала.

Таймер/счетчик может тактироваться внутренним или внешним источником синхронизации. Источник синхронизации — выбирается логикой выбора часов, которая управляется битами выбора часов в элементе управления таймером/счетчиком Регистр B (TCCR1B.CS[2:0]).

Поскольку мы работаем только с количеством импульсов за определенный период, мы теряем любую информацию, например, о скважности сигнала.

Вам следует прочитать техническое описание раздел 20: «TC1 — 16-битный таймер/счетчик 1 с ШИМ» для получения более подробной информации о том, как можно использовать таймер для подсчета частоты сигнала.

,

0

Это зависит от процессора. Предположим, что Uno/Atmega328p на 16 МГц. Вы можете получить на порядок больше, написав функцию pulsein() на ассемблере. Выяснение этого звучит как забавный проект!

Чтобы выйти за рамки этого, вам, вероятно, понадобится аппаратная поддержка.

,