マイクロコントローラを任意の低いクロック周波数で実行できますか?


103

たとえば、ATTiny13Aのデータシートには、最小周波数0 MHzが記載されています。これは、クロックを悪影響なしで任意の低周波数で実行できることを意味しますか?私はそれが低いクロック速度でより低い電流を引き込むと仮定していますか?0 MHzはクロックを完全に停止できることを意味しますか?また、電力が供給されている限り、その状態を無期限に記憶しますか?


34
追加したいのですが、これは素晴らしい質問です。ほとんどのシニアEEは、実際にデータシートを読んだり考えたりするのに時間がかかりません。
コルトゥク2009

(さまざまな省電力オプションを使用して)特に指示しない限り、内部RCオシレーターがシャットダウンするかどうかはわかりません。それが何に使用されているのかはわかりませんが、少なくともEEPROMとおそらくADCに使用されます。
ジッピー

1
@jippieあなたが言っている内部RCは何ですか?たとえば、ATMegaXには、システムクロック用の内部RC(通常は8Mhz、オプションのdiv 8プリスケーラーがあります)、ウォッチドッグオシレーターがあります。システムクロックはヒューズが選択されており、外部クロックを使用している場合はおそらくオフになっています。あなたが言ったように、他のものは省電力モードによって無効にされるかもしれませんが、私はシステムクロックで止まるとは思いません。
ディエゴCナシメント

回答:


73

はい。データシートに「完全に静的な動作」と記載されている場合は、0 Hzでも任意の速度でクロックできます。「ダイナミック」チップは、特定のレートでクロックを保持する必要があります。そうしないと、状態が失われます。


1
これを可能にするマイクロの例はありますか?
MrEvil 09

4
オンチップフラッシュを含むマイクロコントローラーは、フラッシュへの書き込み時に最小(および最大)フラッシュクロック速度を指定できます。ただし、フラッシュから読み取る場合、これは適用されません。
スティーブメルニコフ09

8
ほとんどすべてのAtmel AVRチップと思うので、質問で言及されたAtmel AVR ATtinyシリーズのMrEvilは完全に静的です。そして、MicrochipのほとんどすべてのPICマイクロコントローラーだと思います。
todbot

7
実際、ATTiny13AのADCは低周波数では動作しないと思います。サンプルホールドコンデンサの減衰が原因でしょうか?「デフォルトでは、逐次比較回路は最大分解能を得るために50 kHz〜200 kHzの入力クロック周波数を必要とします。...ADCモジュールには、100 kHzを超えるCPU周波数から許容可能なADCクロック周波数を生成するプリスケーラが含まれます。
エンドリス

8
エンドリス-私は同意します、ADCは通常低周波数では機能しません。私の知る限り、事実上すべての最新のマイクロコントローラーのその他のすべては、「0 Hz」、つまり「無期限に一時停止」までずっと正常に動作し続けます。特に、多くのマイクロコントローラには、「低電力スリープ」モードがあり、何か(通常はボタンを押す人)が目を覚まし、中断したところから再開するまで、すべてのクロックを停止します。en.wikipedia.org/wiki/Static_logic_(digital_logic)–
davidcary

23

最後の質問が以前に回答されなかったという理由だけで、別の回答を投稿しています。

Todbotは完全に正しいです。また、低速では消費電力が少なくなります。また、別のプロセッサからクロックを供給する場合、たとえば、任意の時点でクロックの供給を停止し、後でクロックを開始できることを意味します。最大速度より速くならない限り、問題ありません。

私が持っているチップは、32768Hz発振器と1MHz発振器の間で大きさの変化があります。スピードを必要としないアプリケーションがありましたが、基本的なデータ処理を行う小さな男が必要でした。

お役に立てれば。


9
私はいつも、プッシュボタンでマイクロコントローラーのクロックラインを動かしたいと思っていました。人間を時計にしましょう。:)深刻な注意点として、これらの静的デザインの本当に素晴らしい点は、消費電力がクロック速度に比例することです。つまり、クロックを遅くし、消費電力を減らします。これは本当に便利です。
todbot 09

5
はい。ただし、消費電力は、特に駆動される出力がある場合でも、クロックがなくても電力を消費するオフセットを伴う線形関数です。私は仕事で新しいインターンを獲得しました。プッシュボタンを使用して、何が起こるかを確認することをお勧めします。
コルトゥク2009

13
@todbotいいアイデア。:-)しかし、プッシュボタンをデバウンスしてください。
スターブルー09

4
「グラインドクランク」(Jargonの意味:jargon.net/jargonfile/g/grindcrank.html)で試してください: - ))(そして、はい、何年も前にTurbo Pascalを使用していたときにコードをステップスルーするコードを作成しました学校で:-)
Axeman

@todbotおおまかな抽象化を受け入れることができれば、それはそれほど大げさでも難しいことでもありません。このようなガジェットを使用してコンピューターの動作を教える人々の例がいくつかあります。(ないコンピュータプロジェクトのためにかかわらず)Myke Predkoは本当に良い本を持っており、それもPCB類が付属しています:amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/...
ルー

17

ほとんどの最新のマイクロコントローラ設計は、クロック入力のどのパターンでも動作します。ただし、高パルスが特定の最小長を下回っていない、低パルスが特定の最小長を下回っていない、および低-高-低または高-低-高パルスペアが特定の長さ未満です。基本的に、チップが特定のクロックエッジに関連するすべてのアクションを実行した後、チップは次のクロックエッジを待機する以外は何もしない状態になります。次のクロックエッジが10日間届かない場合(チップに外部ウォッチドッグがない限り)、チップは、チップの準備ができた瞬間にエッジが到着した場合と同じ状態になります。

一般に、マイクロコントローラでクロックを一時停止すると、消費電流が大幅に削減されますが、「スリープ」機能を使用する場合ほどではありません。「実行」モードでのほとんどのマイクロコントローラーの消費電流は、一定の静止電流に加えて、サイクル/秒あたりの一定量の電流(より自然にサイクルあたりの充電として表される場合があります)として十分に推定できます。たとえば、チップの静止電流は10uAで、電流は0.1mA / MHz(100pC /サイクル)です。このようなチップを10MHzで実行すると、1.01mAの電流が発生します。1MHzで実行すると、0.11mAになります。100KHzで実行すると、0.02mAになります。1Hzで実行すると、0.0100001mAになります。一方、チップは1uAのスリープ電流を提供する場合があります。一般的に、スリープモードに入ると、チップがスリープしている間は何の役にも立たないチップの領域の電源が完全にオフになり、そのような領域のリーク電流が回避されます。また、場合によっては、レジスタファイルなどの領域への電圧を、レジスタファイルがその内容を保持できるレベルまで低下させますが、非常に迅速にはアクセスしません(アクセスされないため、アクセス速度は重要ではありません) 。

一部の古いマイクロプロセッサ、マイクロコントローラ、およびその他のデバイスには、最大のクロックHigh時間および/またはクロックLow時間がありました。そのようなプロセッサは、回路を節約するためにダイナミックロジックを利用しました。ダイナミックロジックの例として、シフトレジスタを考えてみましょう。典型的なスタティックレジスタビットは値を保持するために2トランジスタ回路を必要とし、ダイナミックレジスタビットは読み出しトランジスタのゲートに値を保持します。2フェーズクロックのダイナミックシフトレジスタは、4ビットのNFETと1ビットあたり2つの抵抗を使用してNMOSで実現できます。スタティックシフトレジスタには、ビットあたり8つのNFETと4つの抵抗が必要です。ダイナミックロジックアプローチは、今日ではそれほど一般的ではありません。1970年代に戻って、ゲート容量はかなり大きく、それを取り除くことはありませんでした。したがって、それを利用しない特別な理由はありませんでした。今日、ゲート容量は一般的にずっと低く、チップメーカーは積極的にそれをさらに削減しようとしています。ダイナミックロジックを確実に機能させるには、多くの場合、ゲート容量を増やすために意図的に作業する必要があります。ほとんどの場合、静電容量を増加させるために必要な追加のチップ領域は、静電容量を不要にするためにトランジスタを追加するのと同じくらい効果的に使用できます。


NMOSとIIRCに言及しますが、ダイナミックロジックの人気と、まだ利用できない相補型MOS(CMOS)の間には関連性があります。
jpc

@jpc:さまざまなNMOSチップの回路図を検討しました-天才の本当の作品であるAtari 2600 TIAを含むいくつかは非常に詳細です-30年後、人々はまだそれと関係する新しいことを見つけています。設計の利便性の観点から、NMOS対CMOSの利点の1つは、「シュートスルー」(ハイサイドとローサイドのドライブの偶発的な同時起動)が要因ではないことですが、理由についていくらか好奇心を認めますがCMOSは、入力のクロスオーバーポイントが両方のアクティブ化ではなく、ハイサイドとローサイドのドライバーをオフのままにするのに十分な低電圧で動作しません。
-supercat

@jpc:NMOSでは、入力が十分に「強い」場合、2つのトランジスタと2つの抵抗でXORゲートを実装できます。インバータを両方の入力に追加する必要がある場合でも、4トランジスタ4抵抗xorゲートは他の多くのアプローチよりも優れています。ただし、1978年頃にBJTを使用して同様の回路を設計したにもかかわらず、使用されたアプローチを見たことはありません(設計コンセプトはMOSFETでうまく機能しますが、それらについては何も知りませんでした)。
-supercat

2
+1-あなたがここで言及した本当の宝石は、より低いクロック速度は電力を節約するが、節電を最適化するために特別に設計されたスリープモードほどではないということだと思う。私の腸は、スリープモードの賢明な使用と組み合わされた高速発振器を実行することで、本当に低い周波数で常に実行するよりも多くの電力を節約できることを教えてくれます。
ジョエルB

@JoelB:それは多くの要因に依存します。多くのプロセッサでは、高速クロックをオンにしてから実際に使用できるようになるまでに遅延があります。この間、人は電力を浪費します。たとえば、100x /秒でウェイクアップする必要がある場合、絶えず開始および停止するよりも、ゆっくりと連続して実行する方が良い場合があります。一方、高速クロックを開始および停止する場合は、追加のエネルギーを無駄にせずに実行できる範囲で実行時間を最小限に抑えることをお勧めします。たとえば
...-supercat

12

はい。クロックを完全に停止し、後で問題なく再起動できます。クロックをプッシュボタンに置​​き換えて、プログラムを文字通り段階的に実行することもできます(周波数:約0.1 Hz)。

電力は周波数に対してほぼ線形です。10MHzでは、マイクロコントローラーは1 MHzの10倍の電力を消費します。ただし、0 Hzで消費が完全にゼロになるわけではありません。静電気の散逸は常にありますが、それは非常に低く、通常は1 uA以下です。

PS:ADCには最小動作周波数があることに注意してください。周波数が低すぎると、電圧を測定するコンデンサの放電が多くなり、測定が間違ってしまいます。


ボタンを押す?デバウンスはどうですか?
ピーターモーテンセン

1
デバウンスが必要です。
Vovanium

10

この質問に遅れて来て、それは私がしばらく前に見たプロジェクトを思い出させました。

これは、ほとんどの時間、ゼロHzで動作するPICを使用するコウモリ検出器であり、検出しているまさにその信号によってクロックされます。

http://www.micro-examples.com/public/microex-navig/doc/077-picobat.html


5
、このプロジェクト信号はクロックの両方でのチップへとパワー。:)
エンドリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.