ArduinoがAVRが指定されている周波数である20 MHzで動作しないのはなぜですか。現在、16 MHzで実行しているため、20%のパフォーマンスを無駄にすることはありません。
ブートローダーのボーレートの唯一の例外を除いて、16 MHzの共振器を20 MHzのタイプに置き換えても何の影響もないと思います。またはありますか?
Arduinoの設計者が16 MHzを選択した理由を誰かが知っていますか?
ArduinoがAVRが指定されている周波数である20 MHzで動作しないのはなぜですか。現在、16 MHzで実行しているため、20%のパフォーマンスを無駄にすることはありません。
ブートローダーのボーレートの唯一の例外を除いて、16 MHzの共振器を20 MHzのタイプに置き換えても何の影響もないと思います。またはありますか?
Arduinoの設計者が16 MHzを選択した理由を誰かが知っていますか?
回答:
20 MHzで適切なArduinoを実行できなかったというハードウェア上の理由はありません(私が知る限り)。ただし、標準のArduino構成は明らかにクロック速度が8 MHzまたは16 MHzの場合に最もよく機能するため、ソフトウェアではわずかなタイミングの不正確さが発生します。
これは主に歴史的な理由によるものだと思います。初期のArduinoボードは、などの16 MHzまでしか機能しないチップに基づいていましたATmega8
。すべてのチップに同じ構成を使用すると、すべてが少し単純で一貫性が保たれます。
タイミングの問題について詳しくは、こちらをご覧ください:http : //forum.arduino.cc/index.php?topic=158223.0#msg_1186708
あなたはできる、そして私はそうする。
技術的にはもはやArduinoではないでしょうね。私は自分でボードを作りました。ボードのレゾネーターを交換するには、細かいはんだ付けが必要ですが、それは確かに可能です。
いくつかの落とし穴があります。時間に関連するもの(たとえばmillis())は、本来よりも高速に実行されます-1秒あたりのmillis()が25%増えます。また、ブートローダーは16MHzを想定しているため、この速度で再プログラムすることはできません。私はUSBASPプログラマを購入しました。これは、ボードの片側にある2x3ピングリッドにフックし、ブートローダーなしでプログラムを再プログラムできるようにします(これが、最初にブートローダーが置かれる方法です!)。問題を回避するには、20 MHzで少なくとも4.5ボルトが必要です。これは、16 MHzの3.78ボルトと比較してです。これは、電池の消耗がやや速く(3x1.5v電池はかなり早く消耗します)、モーターやその他のドローがある場合バッテリー、3個の1.5vバッテリーは、新品の場合でも動作しない可能性があります。
または、まったく逆の方向に行くと、クロック速度が低いほど必要な電圧が少なくなります。プロジェクトによっては、クロック速度が不要な場合もあります。4MHzで動作する1.8 vまで下げることができます。