Почему Arduinos поставляет кристалл с 16 МГц вместо 20 МГц?

33

Почему платы Arduino поставляются с кристаллом 16 МГц вместо 20 МГц? В конце концов, они предназначены для работы на частоте 20 МГц.

Я предполагаю, что есть несколько преимуществ для более медленной работы (более низкое энергопотребление, более длительный срок службы), но я должен что-то упустить.

JellicleCat
источник
1
Об этом также спрашивали на старом форуме Arduino: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311
vicatcu
3
Обратите внимание, что при правильном программировании этот разрыв в скорости приложения может быть многократно увеличен во много раз. Тем не менее, я стараюсь держаться подальше от крайних пределов любых микросхем.
Tyblu

Ответы:

29

Я бы купил ответ на форуме Arduino:

Оригинальная ATmega8 Arduino работала на частоте 16 МГц, что было максимальной номинальной тактовой частотой для используемого процессора ATmega8. При «обновлении» до ATmega168 (с максимальной частотой процессора 20 МГц) тактовая частота оставалась равной 16 МГц (вероятно), потому что дизайнеры думали, что больше людей / кода будут иметь проблемы обратной совместимости с новой тактовой частотой, чем выиграют от дополнительных 25 % производительности процессора. Я конечно думаю, что они были правы ...

vicatcu
источник
6

На самом деле, одна из лучших причин, которые я слышал, заключается в том, что UART может идеально соответствовать частотам 1 Мбит и 2 Мбит при работе на 16 МГц, но не при работе на 20 МГц. Существует ряд устройств с входами UART на 1 и 2 Мбит, таких как линейка роботизированных сервоприводов Dynamixel.

Джон Ватт
источник
5

Третий момент заключается в том, что маломощный кристаллический генератор ATmega168 и ATmega328 не работает выше 16 МГц. Поэтому, если у вас есть кристалл 20 МГц, подключенный к контактам XTAL, вы должны использовать Full Swing Crystal Oscillator, который будет потреблять больше энергии (или вообще не использовать кристалл).

Паскаль канифоль
источник