Как быстро Arduino выполняет код?

Я использую Arduino Nano Every. Возьмем этот пример, где я измеряю две вещи A и B.

Loop{// этот цикл выполняется один раз в секунду
    //Читать A,B
    //Измените что-то с помощью analogueWrite,что повлияет на значения A, B
    //Читать A,B
}

Изменились бы значения analogueWrite достаточно быстро,чтобы третья строка считывала новые и измененные значения A, B?

, 👍0

Обсуждение

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


1 ответ


3

Arduino Nano Every не имеет аналоговых выходов. Функция analogWrite() использует ШИМ как эрзац аналогового выхода. Как только функция возвращается, вы знаете, что регистры таймера, управляющие функцией ШИМ , установлены на правильный рабочий цикл. Однако таймер завершит текущий цикл ШИМ, используя предыдущие настройки. Только когда этот цикл закончится, он будет использовать обновленные настройки для следующего. Завершение текущего цикла может занять до 2 мс.

Теперь мне интересно, как цикл ШИМ может повлиять на то, что вы измеряете. Если вы ожидаете измерить что-то, что зависит от кажущегося “аналогового” значения, которое вы выводите, это может работать только в том случае, если ваша схема содержит (или ведет себя как) фильтр нижних частот. Для преобразования ШИМ в аналоговое значение постоянная времени фильтра должна быть значительно больше периода ШИМ. Это, в свою очередь, вызовет соответствующее запаздывание, поэтому вашим показаниям потребуется примерно одна постоянная времени фильтра, чтобы догнать выводимое вами значение.

Обратите внимание, что все это не имеет абсолютно никакого отношения к тому, как быстро Arduino выполняет код.

,

ШИМ устанавливает рабочий цикл на устройстве SMPS, что, в свою очередь, влияет на напряжение и токи, которые я измеряю. Я беспокоюсь,что рабочий цикл не изменится во времени, и, следовательно, это означает, что третья строка кода не будет считывать измененные значения тока и напряжения( A, B)., @fred

Я не могу найти информацию о времени, чтобы иметь возможность исследовать это или найти что-нибудь, чтобы сделать точный вывод., @fred