Может ли Arduino поддерживать таймер на 500 mu?
Мне нужно вывести последовательное сообщение с интервалом 500 микросекунд (10 байт), может быть немного медленнее, но не более 1 миллисекунды между сообщениями.
Можно ли это сделать с помощью Arduino? Я знаю, что есть delayMicro(), но не уверен, что у него есть разрешение.
@user1957413, 👍1
Обсуждение1 ответ
Это связано не с delayMicro, а с максимальной скоростью драйвера Serial/UART, которая не задокументирована, но, по некоторым данным, может достигать 500 кбит/с.
Однако 10 байтов, каждые 500 мкс (2000 Гц), означают 10 * 11 (включая стоповый/стартовый бит) * 2000 = 220 000 бит, так что у вас еще есть запас. Возможно, есть также некоторые накладные расходы времени.
В любом случае, вероятно, единственный выход — использовать прерывание, и ожидать, что Uno не сможет сделать ничего другого.
Лучшим вариантом может быть отправка меньшего объема или более разумного (т.е. не 10 байтов, а, возможно, какой-либо сжатой/двоичной формы, если об этом еще не думали).
«но, по некоторым данным, она может достигать 500 кбит/с». Вы можете сделать лучше, чем это. Согласно техническому описанию, может быть достигнута скорость 2 мегабита в секунду. Таблица 24-7. Примеры настроек UBRRn для часто используемых частот генератора показывают 2 Мбит/с как максимальную скорость, достижимую при тактовой частоте 16 МГц. IDE достигает только 115 200, поэтому вам нужно будет использовать другую последовательную программу, чтобы увидеть эти данные. Самое быстрое, с чем я тестировал, это Serial.begin(250000);, @CrossRoads
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
- Очень простая операция Arduino Uno Serial.readString()
- AT-команда не отвечает на последовательный монитор
Предполагая последовательную передачу данных на ПК, требуется ~700 микросекунд для отправки 10 байтов (т.е. 80 бит) со скоростью 115200 бод. Проверьте свои номера! Если вам нужна более быстрая передача данных, попробуйте SPI или Ethernet., @MichaelT