Dlaczego Arduinos dostarczają kryształ 16 MHz zamiast 20 MHz?

33

Dlaczego płyty Arduino są dostarczane z kryształem 16 MHz zamiast 20 MHz? W końcu są przeznaczone do pracy z częstotliwością 20 MHz.

Myślę, że jest kilka zalet wolniejszej pracy (niższe zużycie energii, dłuższa żywotność), ale czegoś mi brakuje.

JellicleCat
źródło
1
Pytanie
zadawano
3
Należy pamiętać, że ta 25% różnica prędkości aplikacji może być wielokrotnie zwiększona przy odpowiednim programowaniu. Staram się jednak trzymać z dala od ekstremalnych limitów IC.
tyblu

Odpowiedzi:

29

Kupiłbym odpowiedź na forum Arduino:

Oryginalna karta ATmega8 Arduino działała z częstotliwością 16 MHz, co było najwyżej ocenianą częstotliwością zegara dla używanego procesora ATmega8. Po „uaktualnieniu” do ATmega168 (z maksymalną szybkością procesora 20 MHz) zegar pozostawiono na 16 MHz (prawdopodobnie), ponieważ projektanci sądzili, że więcej osób / kodu będzie miało problemy z kompatybilnością wsteczną z nową częstotliwością zegara, niż skorzystałoby z dodatkowych 25 % wydajności procesora. Z pewnością uważam, że mieli rację ...

vicatcu
źródło
6

Właściwie jednym z najlepszych powodów, jakie słyszałem, jest to, że UART może idealnie pasować do prędkości 1 Mbit i 2 Mbit przy częstotliwości 16 MHz, ale nie przy prędkości 20 MHz. Istnieje wiele urządzeń, które mają wejścia UART 1 i 2 Mbit, takie jak linia serwomechanizmów robotów Dynamixel.

Jon Watte
źródło
5

Trzecią kwestią jest to, że oscylator kwarcowy niskiej mocy ATmega168 i ATmega328 nie działa powyżej 16 MHz. Więc jeśli masz kryształ 20 MHz podłączony do pinów XTAL, musisz użyć Full Swing Crystal Oscillator, który zużywa więcej energii (lub nie używa w ogóle kryształu).

Pascal Rosin
źródło