Тактовая частота VS время цикла

Я рассматриваю возможность перехода с Arduino Pro Mini 5 В 16 МГц на Arduino Pro Mini 3,3 В 8 МГц для какого-то проекта, потому что я хотел бы запустить его с входным питанием 4,5 В.

Удвоит ли переключение с 16 на 8 МГц время цикла моей функции loop()?

Изменить — добавление точности: Моя функция петли проста: она считывает пару датчиков с помощью AnalogRead и устанавливает несколько контактов в HIGH или LOW. Он не использует задержку().

Спасибо.

, 👍1


2 ответа


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

3

Время выполнения вашего loop() будет немного больше, когда процессор работает на частоте 8 МГц против 16 МГц, но я не ожидаю разницы быть значительным. Функции, привязанные к ЦП, такие как digitalWrite(), будут бежать с половинной скоростью. Однако эти функции довольно быстрые. В Напротив, analogRead() работает медленно, так как требуется примерно 110 мкс для выполнения, поэтому, скорее всего, ваш loop() проводит большую часть своего времени.

Время выполнения analogRead() существенно не зависит от скорость процессора. Эта функция проводит большую часть своего времени в ожидании аналого-цифровой преобразователь для его преобразования. Когда процессор с тактовой частотой 1, 2, 4, 8 или 16 МГц, ядро Arduino устанавливает Предварительный делитель АЦП, чтобы АЦП работал на частоте 125 кГц. Это означает, что время преобразования будет одинаковым независимо от ЦП. частота.

Примечание. Вы можете просто использовать Arduino Pro Mini 5V 16MHz. Эта плата на базе микроконтроллера ATmega328P, рассчитанного на частоты до 20 МГц при напряжении питания от 4,5 до 5,5 В. Согласно datasheet (см. график freq-Vcc), он должен безопасно работать на частоте 16 МГц при любом напряжении питания от 3,78 до 5,5 В.

,

0

Это зависит.

Функция loop обрабатывается как цикл while. Это означает, что когда функция loop завершает свою работу, выполняется некоторый код фреймворка (очень маленький) и снова вызывается функция loop и т. д.

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

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

,