Arduinoシステムで8 MHzおよび3.3 VでATmega328Pを実行することの影響は何ですか?


8

私は3.3 Vで動作するカスタムarduinoに取り組んでいます。レギュレーターやUSBチップはありません(電力消費用)。チップを16 MHz / 3.3 Vでオーバークロックすることは一般的に問題ないと聞いていますが、とにかく仕様の範囲内に保ちたいと思います。

まず、8 MHzで実行するには、水晶を交換する必要があるだけですか?または、他に何かしなければならないことはありますか?

次に、新しい速度を反映するためにコードを変更する必要がありますか?このプロジェクトでは、NilRTOSオペレーティングシステムとミリ/遅延機能と共に、シリアル、SPI、およびI2C接続を使用しています。これらのいずれかが壊れますか?コードの実行は著しく遅くなりますか?

第三に:どのようにチップをプログラムできますか?Arduino Unoで16 MHzでプログラムしてから、カスタムarduinoに移植しても大丈夫ですか?

4番目:消費電力は8 MHzで変化しますか?

ありがとう!


2
3.3V Arduino互換ボードはたくさんありますが、Sparkfun Pro miniがその一例です。これはIDEでサポートされているため、「ボード」ドロップダウンから選択すると、すべてのクロック固有の調整が行われます。
Oleg Mazurov 2015

8MHzでは、水晶の代わりに内部発振器を使用しても大丈夫でしょう。たとえば、「Pro Mini 328p at 8MHz」を選択したときにコードに8が適用されるコードをコンパイルするときは注意してください。16MHzでコンパイルしてから移植することはお勧めしません。遅延(1000)に2秒かかる場合があります。簡単な例として。H2OhNoコードで省電力/スリープを確認してください。(シリアルアップロードに限定するのではなく、プログラマーを雇うことをお勧めする別の瞬間、「ISP」をTindieで検索してください。)
Patrick Tudor

回答:


7

式はvolt * 5.9-6.6 = mhz(1.8vと4.5vの間で有効)のようですので、3.3vでは12.8mhzになります。12.8MHzで実行している場合、3.3vを下回ると問題が発生する可能性があり(診断も非常に困難です!)、問題を回避できる場合があります。

ただし、Arduino Atmega328pチップには「電圧低下」検出が4.3vに設定されています。これを下回ると、チップはシャットダウンします。ISP(別名ICSP)を入手してヒューズを交換できます。http: //www.engbedded.com/fusecalc/にアクセスして、ヒューズの設定を確認してください。ISPを使用して現在のヒューズを読み取ったり、Arduinoボードなしで実際にチップを再プログラムしたりすることもできます。私のプロジェクトにはすべて6ピンヘッダーがあります。これを行う場合は、Arduinoボードを使用して再プログラミングする前に、「ツールメニューの」「ブートローダーを書き込む」必要があります。プログラミングは引き続きArduino IDEを介して実行できることに注意してください。

あるいは、「軽く」したい場合(そしてISPを持っている場合)は、内部の8MHzクロックを使用するようにヒューズを変更できます。これにより、2つの余分なピンも解放されます。ただし、通常の水晶では1日あたり1.7秒(20万分の20)であるのに対し、内部時計は1日あたり1.2時間(= 5%)ずれている可能性があることに注意してください。計時に使用しない場合、これはおそらく問題ではありません。

コードのタイミングを変更する必要があります-チップ/クロック速度などの正しい設定でboards.txtを追加する必要があります-ボードのエントリから設定をコピーし、名前を変更して変更できます「build.f_cpu」の設定。Arduino IDEを再起動(または起動)し、[ツール]-> [ボード]に移動して、追加したボードを選択します。

チップをボードのオン/オフに移動して再プログラミングできます([ツール]→[ボード]で選択したボードは、プログラミングボードではなく、最終ボードであることに注意してください)。プラグの抜き差しには注意してください。最終的にはピンが曲がります。または、上記のようにISP(ICSP)を使用することもできます(お勧めします)。チップが工場出荷時のデフォルトである場合、動作クロックがある限り、ISPプログラミングも機能します。

チップがどれだけの電力を使用するかは、それを使って何をするかに大きく依存します-クロック速度、クロックソースなどだけでなく、スリープモードも。よく眠っている場合、実行速度が遅い場合よりも高速である場合の方が描画が少なくなる可能性があります。ほとんどすべての時間がスリープ状態である場合、クロックが半分の速度である場合、電力消費は秒単位ではなくクロックサイクルごとにカウントされます。電流が半分の場合、命令ごとに同じ電流を引き出します。残りの時間は眠っているので、何のメリットもありません。電力使用量の非常に優れた内訳、電力を節約する方法のヒントなどについては、http://www.gammon.com.au/powerを参照してください

クロックの速度を下げすぎると、シリアルとi2cの信頼性が低下する可能性があります(速度を落とさない限り)。ただし、これが問題になる前に1MHzまで下げることができると予想されます-1MHzのチップが9600bpsを試みます転送されるデータのビットごとに104の命令があります。i2cは100kHzで実行されるため、ビットあたり10命令(1MHzで)を取得します-プッシュする可能性があります。8MHzで大丈夫です。テスト、テスト、テスト。

更新:電圧低下検出には3つの可能な設定があります-AtMega328pには3つの可能な値があります:無効、1.8v、2.7v、および4.3v。Arduinosは通常4.3vに設定されているという印象(上記)にありました。明らかにそうではありません(以下のコメントを参照)。どこかで電圧低下が検出されたことを思い出しました。これは、Arduinoがリセットされた場合、特にバッテリーに大きな負荷をかけている場合(モーター、複数のLEDなど)に注意する必要があります。


この応答をありがとう!電圧低下検出器が4.3 V未満でシャットダウンすることについて、あなたが言ったことに少し困惑しています。3.7Vで実行していますが、正常に動作します。ヒューズを変更する必要はありませんでした。
バルカン

@ user40、私の投稿の下部にある「更新」セクションを参照してください。
アマダノン株式会社2015

4

まず、8 MHzで実行するには、水晶を交換する必要があるだけですか?または、他に何かしなければならないことはありますか?

いいえ、AMADANON Inc.の提案に従って内部発振器で実行します。

または、「クロックを8分周する」ヒューズ(16 MHzクリスタルから2 MHzで実行する)を設定し、コードで分周を2に戻します。

#include <avr/power.h>

void setup ()
  {
  // slow clock to divide by 2
  clock_prescale_set (clock_div_2);
  } // end of setup

または、別のUnoでプログラミングする場合は、ヒューズをそのままにし、16 MHzでプログラムしてから、ターゲットチップでクロックをドロップし、3.3Vで最初の命令を実行するのに十分長く機能することを期待します。最も安全なのは、ターゲットボードに8 MHzクリスタルまたは共振器をインストールすることです。ただし、タイミングが重要でない場合は、内部発振器を使用して実行します。

次に、新しい速度を反映するためにコードを変更する必要がありますか?このプロジェクトでは、NilRTOSオペレーティングシステムとミリ/遅延機能と共に、シリアル、SPI、およびI2C接続を使用しています。

IDEに8 MHzプロセッサ(Lilypadなど)を搭載していると伝えると、遅延やボーレートの計算などを適切に調整する必要があります。

これらのいずれかが壊れますか?

I2CとSPIはセルフクロックです。さまざまな速度で実行できます。何か問題があるとは思いません。シリアルに関しては、計算が正しく行われていれば、幅広いボーレートがまだ利用可能であるはずです。

コードの実行は著しく遅くなりますか?

そうですね、16 MHzと比較して半分の速度で動作します。

第三に:どのようにチップをプログラムできますか?Arduino Unoで16 MHzでプログラムしてから、カスタムarduinoに移植しても大丈夫ですか?

出来るよ。または、ICSPヘッダーまたはFTDIヘッダーを接続して、その場でプログラムすることもできます。

ここに例:http : //www.gammon.com.au/breadboard

4番目:消費電力は8 MHzで変化しますか?

はい、多少減少します。

http://www.gammon.com.au/powerで説明されており、AMADANON Inc.によって参照されている他の手法を使用することで、さらに大幅に減らすことができます


ありがとう、ニック!私は実際にあなたのウェブサイトを以前に読んだことがあり、それは私の消費電力を根本的に削減するのに役立ちました。その結果、AAとAAAがこのデバイスの実行可能な電源になりました。これは、重量が重要であるため、非常に重要です。だから、そのウェブサイトにも感謝します-それはコミュニティにとって大きなサービスであり、私のような人々にとって本当に役に立ちます。
バルカン2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.