AVRを使ったボードの設計をしていて、クロックの供給方法がいくつかあり、どういう違いがあるのかまとめてみた。
ATMEL 8-BIT MICROCONTROLLER WITH 4/8/16/32KBYTES IN-SYSTEM PROGRAMMABLE FLASH DATASHEETを元にしています。
使用するクロックのデバイスごとに、以下のように設定を行う。
デバイスに対応する設定値は、データシートのTable 9-1を参照。
- Low Power Crystal Oscillator
- 外部の水晶発振子を接続。消費電力が少ない代わりに、外部のデバイスにクロックを供給したり、ノイズが多い環境では使えない
- Full Swing Crystal Oscillator
- 外部の水晶発振子を接続。消費電力が多分、上記の問題が解消される
- Low Frequency Crystal Oscillator
- 時計のクロック(32.768kHz)を使用する場合
- Internal 128kHz RC Oscillator
- 内部のRC発振回路を使用する場合。電圧、温度などにより変化する(この場合、キャリブレーションできないため、3V、25度で128KHzとなる)
- Calibrated Internal RC Oscillator
- 内部のRC発振回路を使用する場合。電圧、温度などにより変化する。キャリブレーションすることで、適切なクロックを得ることができる
- External Clock
- 外部の水晶発振器を接続する。この場合は、外部端子はXTAL1のみを使用する
ちなみに、水晶発振器、水晶発振子は違いがややこしい。
前者は発振回路を含んだパッケージになっているもの。製品によっては温度補償などもあるみたい。
後者はコンデンサなどを含む回路を接続する必要がある(マイコンの中に入っているものもある)。
AVRの場合は、Figure 9-2.にあるようにコンデンサを付ける必要がある。
上の表に戻って、上から3種類に関しては、さらにCKSEL[9]、SUT[0]、SUT[1]のそれぞれのビットで動作が変わる。
設定値で変わるのは、以下の2点。要はクロックが供給開始するタイミングからのdelay時間を規定している。
- Start-up times from Power-down and Power-save
- Power-down, Power-saveからの起動時間。(ここがあまり自身がなくて、おそらく、この時間までにクロックを安定させて欲しい、ってことだと思う)
- Additional Delay from Reset
- 外部のリセットからシステム内部のリセット(Internal Reset)の遅延時間。Figure 11-2.のT_TOUTに相当する
まとめは以上のとおり。
結局、どれが良いのか?という話になるけど、コストとかも考えると Low Power Crystal Oscillatorが 良いんだろうな。