20 MHzのArduino?


9

ArduinoがAVRが指定されている周波数である20 MHzで動作しないのはなぜですか。現在、16 MHzで実行しているため、20%のパフォーマンスを無駄にすることはありません。

ブートローダーのボーレートの唯一の例外を除いて、16 MHzの共振器を20 MHzのタイプに置き換えても何の影響もないと思います。またはありますか?

Arduinoの設計者が16 MHzを選択した理由を誰かが知っていますか?


これを行うときは、ヒューズを設定することを忘れないでください
portforwardpodcast '12年

1
@portforwardpodcastはヒューズを変更する必要はありません。すでに「フルスイング外部発振器」に設定されています。
Gerben

回答:


6

20 MHzで適切なArduinoを実行できなかったというハードウェア上の理由はありません(私が知る限り)。ただし、標準のArduino構成は明らかにクロック速度が8 MHzまたは16 MHzの場合に最もよく機能するため、ソフトウェアではわずかなタイミングの不正確さが発生します。

これは主に歴史的な理由によるものだと思います。初期のArduinoボードは、などの16 MHzまでしか機能しないチップに基づいていましたATmega8。すべてのチップに同じ構成を使用すると、すべてが少し単純で一貫性が保たれます。

タイミングの問題について詳しくは、こちらをご覧ください:http : //forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
ご回答有難うございます。「正確な2のべき乗」について詳しく教えてください。クロックパルスがカウントされる1秒間は、マイクロコントローラーにとって何の意味もありません。さらに、16 MHzは2の正確な電力ではなく、16.777216 MHzでなければなりません。
Joris Groosman、2015年

@JorisGroosman申し訳ありませんが、適切に説明していません。これは、Arduinoコアがクロック刻みからマイクロ秒を計算する方法についてです。このフォーラムのトピックは、私よりもはるかに優れた説明を提供します。
Peter Bloomfield、2015年

4

あなたはできる、そして私はそうする。

技術的にはもはや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まで下げることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.