Тактовая частота VS время цикла
Я рассматриваю возможность перехода с Arduino Pro Mini 5 В 16 МГц на Arduino Pro Mini 3,3 В 8 МГц для какого-то проекта, потому что я хотел бы запустить его с входным питанием 4,5 В.
Удвоит ли переключение с 16 на 8 МГц время цикла моей функции loop()?
Изменить — добавление точности: Моя функция петли проста: она считывает пару датчиков с помощью AnalogRead и устанавливает несколько контактов в HIGH или LOW. Он не использует задержку().
Спасибо.
@Altaris, 👍1
2 ответа
Лучший ответ:
Время выполнения вашего 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 В.
Это зависит.
Функция loop
обрабатывается как цикл while. Это означает, что когда функция loop
завершает свою работу, выполняется некоторый код фреймворка (очень маленький) и снова вызывается функция loop
и т. д.
Тем не менее, есть некоторые вызовы, которые не зависят от тактовой частоты, лучшим примером является функция delay
, а также если вы сделали свою собственную проверку, используя, например, millis
скорее всего это не будет зависеть от тактовой частоты.
Кроме того, могут быть периферийные вызовы, которые не связаны с тактовой частотой (хотя внутри библиотек используются функции синхронизации, как указано выше), но вы не видите их при использовании из библиотеки.
- Установите частоту ШИМ на 25 кГц.
- avrdude: stk500_getsync(): not in sync: resp=0x00
- Максимальная частота цифрового сигнала в Arduino Uno?
- Постоянный выход тактовой частоты Arduino
- Ошибка "avrdude:stk500_recv(): programmer is not responding" при загрузке скетча в Arduino Pro Mini
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Сторожевой таймер застрял в цикле перезапуска? (мигает зеленый светодиод)
- Arduino Pro Mini (версия 3.3 V) диапазон входного напряжения / допуск