その他部品

CPUに取り付けた水晶振動子が発振しない時

実際に仕事であったことなんですが、CPUに取り付けている水晶振動子が発振しません。

たしかにマッチング前なので水晶振動子についているコンデンサの容量などは最適ではありません。

しかし、全く動かないというのも奇妙です。

不安定でも不安定なりに動きそうなものですが、うんともすんともいいません。

 

1,電源は正常

2,CPUはこわれていない

3,CPUのリセットはきちんと解除されている

 

これで水晶振動子が発振しないという状況で、原因が特定できたらなかなか凄い!

 

しばらく考えてみましょう

 

・・・

 

・・・

 

・・・

 

・・・

 

・・・

 

ここで大ヒントです。

 

「水晶振動子が動いていないのにプログラムは動いている」

 

これでわかりませんか?

 

・・・

 

・・・

 

・・・

 

・・・

 

はい、タイムアップ。

 

プログラムが動いているということは、なにかクロックが存在しているということです。

しかし、クロック源として回路設計で取り付けた水晶振動子は動いていない。

となると、クロック源は「内蔵発振器」ということになります。

 

そう、最近のCPUは精度はいまいちなものの単体で動作する内蔵発振器がついています。

水晶振動子がなくても動作しちゃうんです。

そして、たいてい内蔵発振器があるCPUはデフォルトで内蔵発振器を使うようになっています。

つまり、ソフトウェアで適切に設定をしないと、外部の水晶振動子を活用してくれないのです。

 

ということで、正解は「内蔵発振器で動いてしまっている」でした。

水晶振動子がうんともすんとも言わないときはこれを疑ってみましょう。

 

以上、小田切でした。

RTC(Real Time Clock)とはなんぞや?

電子回路の設計をしていると「RTC」という言葉に結構出会います。

RTCとはなんでしょうか。

 

RTCは「リアルタイムクロック」のことです。

現在の時間をカウントしている機能です。

 

これはCPUに内蔵されている場合もあれば、外付けICの場合もあります。

 

なんでこんなものが必要なんでしょうか?

そもそもCPUは高精度な水晶振動子で駆動されていて、色々なタイマー機能が入っているので、こんなものがなくても起動してからの時間はカウントできます。

ということで、実はCPUが常に駆動し続けている状況ではRTCなんて機能はなくてもなんとかなるんです。

起動後に外から時間を設定してもらうorネットワーク経由で時間を取得してから、後はCPUで1秒毎にカウントアップしていけば良いのです。

 

これが必要になるのは、「CPUがOFFの時にも時間を計測し続ける必要がある」場合です。

例えば、パソコン(PC)・スマホ・ゲーム機です。

こういった機器のCPUは数十ワットの電力を消費しますので、電源を切る時にCPUの電源は当然落ちます。

すると、RTCがないと毎回時間がリセットされてしまうわけです。

ずっと電源を付けている機器なら良いですが、こういう電源を入り切りする機器では不便で仕方ありません。

 

RTCはCPU内臓の場合もICの場合も、どちらも非常に低消費電力です。

時計用の遅い水晶振動子を駆動させて、1秒間に一回カウントアップするだけの機能なので、そもそも電気を食わないのです。

ということで、電力大食いCPUは電源OFF時に止めないといけませんが、これぐらいなら電源ONのままでも対して問題ないのです。

(ボタン電池で数年動き続けられるレベルの消費電力なので)

 

とまぁ、こんな雰囲気であります。

 

以上、小田切でした。