Freescale MC68HC908Q
「HC908Qオートキャリブレータ」の製作 3/12/2005
これは 2005年 3月に書いた内容を 2005年 9月に更新したものです。
CQ出版社「トランジスタ技術」誌のワンチップ・マイコン・デザイン・コンテスト 2005 に出品しました。全作品がトランジスタ技術 2006年 4月号CD-ROMに収録されましたから、本品も収録されました。

フリースケールセミコンダクタ社の少ピン簡単マイコン HC908Q用のオートキャリブレータを作りましたので紹介します。
● 概要
HC908Qマイコンの内蔵発振器の精度は、無調整のとき使用電圧および使用温度の全範囲で
±25%以下となっており、個別のマイコンに固有の
TRIM値を設定することで ±5%以下に抑えることができます。さらに特定の電源電圧および温度における最適な
TRIM値を求めて設定すれば、もっと正確に調整することも可能です。このオートキャリブレータは、そのような特定の状況における最適な
TRIM値を自動的に見つけ出すツールです。
測定対象デバイスは次の通りです (それぞれのDIPパッケージ品)。Aサフィックス品も含む。
MC68HC908QT1/QT2/QT4/QY1/QY2/QY4 (従来品)
MC68HLC908QT1/QT2/QT4/QY1/QY2/QY4 (低電圧品)
MC908QB4/QB8/QY8 (2005年6月発表の新製品)
● 回路図
こちらをクリックしてください。
● 使い方
今回製作したオートキャリブレータは、内蔵オシレータに関する2つの測定機能を持っています。使い方は次の通りです。
(1) HC908Qプログラマ などを使って本品のプログラムを測定対象のマイコンに書き込みます。
(2) 測定対象のマイコンを本品のソケットに取り付けます。(写真のように8ピンデバイスの場合はソケットの上側に詰めて、16ピンデバイスの場合は下側に詰めて挿入します。)
(3) 本品のミノムシクリップを目的の電源に接続します。
(4) MODEスイッチを 「TRIM値測定(2進表示)」 または 「周波数誤差(10進表示)」 にして、表示された結果を読み取ります。常に発振器の出力が Fosc端子から出ているので周波数カウンタで確認することができます。
● 設計のポイント
全てのデバイスに対して1種類のプログラムで対応しています。最も小さい
QT1/QY1 などでも使えるように 1.5KBに収めるよう気を遣いました。回路的には8ピンデバイスでも使えるように少ないポートでやり繰りしています。
【 TRIM値測定(2進表示) 】 機能 切り替えスイッチを下側に倒して使います。

・この機能を使うと、自動的に発振周波数を調整してそのときの電源電圧で使用
する場合の最適な TRIM 値を瞬時に表示させることができます。
・調整は3秒毎に行われ、その間隔ごとに結果を保持します。
・Foscチェックピンからは内蔵発振器の源発振が出力されます。調整した結果が
出力されるのでほぼ12.8MHz(低電圧デバイスの場合は4MHz)になっています。
(3秒毎に実施される測定のタイミングで、一瞬だけ周波数が乱れることに注意して
ください。)
・電源電圧を2.7V〜5.5V(低電圧デバイスの場合は2.2V〜3.6V)の範囲で
変化させると測定結果が変化して常に最適値を表示します。
・表示は2進数でLEDに直接表示されます。
例) 〇●●〇〇〇〇〇 その電源電圧のとき最適なTRIM値は $60
例) ●〇〇〇●●〇〇 その電源電圧のとき最適なTRIM値は $8C
【 周波数誤差(10進表示) 】 機能 切り替えスイッチを上側に倒して使います。

・この機能を使うと、発振周波数を補正しない状態で、どれだけ周波数誤差が
あるかを自動的に測定して瞬時に表示させることができます。
・Foscチェックピンからは補正をしない発振周波数
12.8MHz前後 (低電圧
デバイスの場合は4MHz前後)が出力されます。
・電源電圧を2.7V〜5.5V(低電圧デバイスの場合は2.2V〜3.6V)の範囲で
変化させると測定結果が刻々と変化して常にそのときの周波数誤差を表示します。
Foscチェックピンから出力される発振周波数は電源電圧によって変化します
(補正をしていないので)。
・表示は10進数(正しくは2進化10進数)でLEDに表示されます。ただし、左端の
LEDが点灯したときはマイナスであることを表しています。
例) ●〇〇〇〇●●〇 周波数誤差は −6%
例) ●〇〇●〇〇●● 周波数誤差は −13%
例) 〇〇●〇〇●〇● 周波数誤差は +25%
2つの機能はいつでも切り替えが可能です。また、Foscチェックピンからは常に内蔵オシレータの源発振が出力されていますので周波数カウンタやオシロスコープで確認してみるのも楽しいかもしれません。
● ソフトウェア
電源を与える前に、測定するマイコンには下記のプログラムをVTSTモニタモード
(Normal Monitor Mode) で書き込んでおく必要があります。すでに紹介済みの
HC908Qプログラマ
などを使って書き込んでください。書き込む内容はサポートするデバイスのどれを使う場合でも同じです。(ROMの少ないQT1/QY1などでも動きます。) 本品では
CodeWarrior の project は、どのデバイスでも同一のものを使います。(ソースファイルでは
MC68HC908QY1 を選んでいますので、このソースコードを使って新たに
project を作る際は MC68HC908QY1 を選んでください。) 実際に書き込むときに、デバッガ画面の
PEDebug メニュー下の Device: は、これから書き込もうとする実際のデバイスを選択する必要があるので、そこだけ間違えないようにしてください。
autocal1_4.lzh for "Metrowerks Codewarrior Development Studio for HC(S)08 Special Edition V.3.1"
圧縮ファイルの中の autocal\Souces\main.c がプログラムソースファイルです。
● 最後に
QT/QY/QB は良く考えられていて、電源電圧を2.7Vから5.5Vまで変化させると発振周波数は徐々に上がっていって途中から下がり始めます(低電圧デバイスを除く)。そうして、3Vと5Vのときの発振周波数がほぼ同じになるように作られているのです。3Vまたは5Vで測定したTRIM値をマイコンそのもののパッケージに鉛筆で書いておくと便利です。
QT/QY/QB の動作電圧は3V±10%および5V±10%となっていますので(低電圧デバイスを除く)、その範囲から外れている3.3V〜4.5Vでは補正なしの発振周波数が12.8MHz±25%に入らない物があるかもしれません。その場合でも補正をすると使える物が多いのではないかと思います。
◆ 注意! HC908QT/QY/QB の電源電圧(VDD)は、絶対最大定格が6.0Vです。デバイスが破壊されますので絶対にこれ以上の電圧を与えないでください。
● そして・・・実際の使用例です
@電源電圧 [V] A補正なし発振周波数
[MHz] B補正なしのときの周波数誤差
[%]
C補正用 TRIM 値 D補正後の発振周波数
[MHz] E補正後の周波数誤差
[%]
なお、B と C はいずれもオートキャリブレータのLED表示によるものです。
サンプル1 (QT4)
| @ | 2.7 |
3.0 |
3.3 |
3.7 |
4.0 |
4.5 |
5.0 |
5.3 |
5.5 |
| A | 11.99 |
12.11 |
12.25 |
12.25 |
12.25 |
12.14 |
12.11 |
11.99 |
11.99 |
| B | -7 |
-6 |
-5 |
-4 |
-5 |
-6 |
-6 |
-7 |
-7 |
| C | $4D |
$54 |
$5D |
$61 |
$61 |
$5D |
$58 |
$52 |
$50 |
| D | 12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
| E | -0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
サンプル2 (QY4)
| @ | 2.7 |
3.0 |
3.3 |
3.7 |
4.0 |
4.5 |
5.0 |
5.3 |
5.5 |
| A | 12.44 |
12.47 |
12.66 |
12.76 |
12.79 |
12.76 |
12.63 |
12.53 |
12.44 |
| B | -3 |
-2 |
-1 |
0 |
0 |
0 |
-2 |
-2 |
-3 |
| C | $6E |
$71 |
$79 |
$7E |
$7E |
$7D |
$75 |
$71 |
$70 |
| D | 12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
12.79 |
| E | -0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
-0.1 |
こんなデータが半自動で取れました。全体的に良く補正できています。なお周波数の測定は周波数カウンタではなくデジタルオシロで測定しましたので、4桁は信用しない方が良いです。他の測定器だと補正後の周波数は 12.8MHz ちょうどと示されるかもしれません。
このホームページで紹介した内容を実施する場合は全て自己責任において行っていただきますようお願いします。
不明点や質問、感想などはこのホームページの掲示板へお願いします。