Arduino на 20 МГц?

9

Интересно, почему Arduino не работает на частоте 20 МГц, для которой указана частота AVR. Теперь, работая на 16 МГц, мы теряем 20% производительности даром.

Я не думаю, что есть какие-то последствия, когда вы заменяете резонатор на 16 МГц типом на 20 МГц, вероятно, с единственным исключением скорости передачи в загрузчике. Или есть?

Кто-нибудь знает, почему дизайнеры Arduino выбрали 16 МГц?

Йорис Гроусман
источник
Не забудьте установить предохранители, когда вы делаете это
portforwardpodcast
1
@portforwardpodcast нет необходимости менять предохранители. Они уже настроены на «полный ход внешнего генератора».
Гербен

Ответы:

6

Нет аппаратной причины (насколько я знаю), что вы не можете запустить подходящий Arduino на 20 МГц. Вы столкнетесь с незначительными неточностями синхронизации в программном обеспечении, поскольку стандартная конфигурация Arduino, очевидно, работает лучше всего, если тактовая частота составляет 8 или 16 МГц.

Я подозреваю, что это в значительной степени по историческим причинам. Ранние платы Arduino были основаны на чипах, которые разгонялись только до 16 МГц, таких как ATmega8. Использование одинаковой конфигурации для всех чипов просто делает все немного проще и согласованнее.

Здесь есть дополнительная информация о проблемах синхронизации: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708

Питер Блумфилд
источник
1
Спасибо за Ваш ответ. Можете ли вы уточнить «точную силу 2»? Период в 1 секунду, в течение которого подсчитываются тактовые импульсы, ничего не значит для микроконтроллера, он знает только такты. Более того, 16 МГц не является точной мощностью 2, это должно быть 16,777216 МГц.
Йорис Гроусман
@JorisGroosman Извините, я не объяснил это должным образом. Речь идет о том, как ядро ​​Arduino вычисляет микросекунды по тактам. Эта тема на форуме дает гораздо лучшее объяснение, чем я мог.
Питер Блумфилд
4

Вы можете, и я делаю.

Думаю, это больше не Arduino. Я сделал свою собственную плату, замена резонатора на плате потребует некоторой тонкой пайки, но это определенно возможно.

Есть несколько ошибок: все, что связано со временем (например, millis ()), будет выполняться быстрее, чем должно - на 25% больше millis () в секунду. Кроме того, загрузчик ожидает 16 МГц, поэтому вы не сможете перепрограммировать его на этой скорости. Я купил программатор USBASP - он подключается к сетке выводов 2x3 на одной стороне платы и позволяет перепрограммировать ее без загрузчика (именно так изначально устанавливается загрузчик!). Во избежание проблем вам потребуется не менее 4,5 В при 20 МГц, по сравнению с 3,78 В при 16 МГц - это означает, что батареи будут разряжаться несколько быстрее (батареи 3x1,5 В будут разряжаться довольно быстро), и если у вас есть какие-либо двигатели или другие источники питания, батареи, 3 батареи 1,5 В, вероятно, не будут работать, даже если они свежие.

В качестве альтернативы, если двигаться в противоположном направлении, чем ниже тактовая частота, тем меньше требуется напряжение - для некоторых проектов вам может не понадобиться тактовая частота - вы можете снизить напряжение до 1,8 В при частоте 4 МГц.

AMADANON Inc.
источник