Разрешение micros() для Portenta H7
Есть ли способ узнать разрешение micros() для Arduino Portenta H7. Я проверил другие платы, например, Nano, которая упоминается как 4 uS. Однако я не смог найти ни одного для Portenta H7.
Есть ли какой-нибудь способ измерить или найти это
@Basit Ali, 👍3
Обсуждение1 ответ
Ссылка на язык micros() гласит: "[Функция micros ()] возвращает количество микросекунд с тех пор, как плата Arduino начала выполнять текущую программу. Это число переполнится (вернется к нулю) примерно через 70 минут. На платах семейства Arduino Portenta эта функция имеет разрешение в одну микросекунду на всех ядрах. На платах Arduino 16 МГц (например, Duemilanove и Nano) эта функция имеет разрешение четыре микросекунды (т. Е. возвращаемое значение всегда кратно четырем). На платах Arduino с частотой 8 МГц (например, LilyPad) эта функция имеет разрешение восемь микросекунд.
Вполне вероятно, что документ был обновлен через некоторое время после того, как ОП опубликовал этот вопрос.
- Выводы Portenta для АЦП
- Хранение данных в SDRAM Arduino Portenta H7
- Stm32 Blue Pill Внутренняя Конфигурация Опорного напряжения АЦП
- Чтение сигнала 4-20 мА на ардуино
- Проблема при попытке ограничить скорость двигателя определенным числом оборотов в минуту с помощью модуля триггерного переключателя MOSFET
- Arduino против 12-битного АЦП
- Почему я получаю разные результаты при компиляции одного и того же кода с разными ide?
- Использование 1,1 Вf для считывания стабильного напряжения батареи и напряжения датчика
Может быть, захватить значение в узком цикле и вычислить самую короткую разницу, которую вы найдете?, @PMF
@PMF: Это даст только верхнюю границу: разрешение может быть меньше времени, затраченного на итерацию цикла., @Edgar Bonet
Я согласен, но это был бы первый намек., @PMF
Protenta полностью отличается от стандартного AVR Arduino. Он построен с двухъядерным ARM mcu M7/M4, работающим на частоте 480/240 МГц. На плате также установлена ОС (mbed OS). Скетчи выполняются поверх этой ОС. Я не знаю фактического статуса, но ~2015 (?) Я следил за дискуссией об использовании разрешения 'millis()' 50μs Arduino_mbed core. Невероятно, я знаю, но причина была в следующем: ОС запускает задачи, а таймер irq с частотой вызова МГц замедляет работу планировщика и задач., @Peter Paul Kiefer
Таким образом, дискуссия была серьезно о разрешении 50 мкм, которое приводит к ИК-сигналам таймера 20 кГц. Я не уверен, что это все еще правда. Но если они все еще используют разрешение 50 мкм, вы можете следовать идее @PMF и посмотреть, можно ли разделить разницу между двумя вызовами micros () на 50, 30 или что-то еще., @Peter Paul Kiefer
Сегодня я сделал кое-какие замеры. Я использовал цифровые контакты платы для включения и выключения во время каждого аналогового вызова АЦП. Затем эти цифровые контакты подключаются к осциллографу. Кроме того, я использовал micro() до и после analogRead в своем скетче, чтобы измерить время с платы. Я получил примерно 4uS времени, которое требуется для выполнения одной analogRead (), используя осциллограф. Однако функция micros() платы не могла дать мне такого значения. Таким образом, он показывал одно и то же время до и после вызова analogRead., @Basit Ali
Затем я несколько раз вызывал analogRead, чтобы увеличить время выполнения, и обнаружил, что максимальное разрешение, которое я мог получить с помощью micros (), составляет около 32uS. Это уступает даже обычной плате Arduino., @Basit Ali
Вопрос был отправлен на форум Arduino, где пользователь sbhklr утверждал, что разрешение было 1uS без каких-либо аргументов или ссылок. https://forum.arduino.cc/t/micros-resolution-for-arduino-portenta-h7/697386, @RowanP
Вопрос был кросс - отправлен на форум Arduino for STM32 с некоторым успехом. https://www.stm32duino.com/viewtopic.php?t=934 Пользователь edogaldo процитировал Arduino doco в поддержку ответа 1uS. https://www.arduino.cc/reference/en/language/functions/time/micros/, @RowanP