技術日記

ファームウェアをガンガンに書く

2018 / 06 / 16

昨日までは、ある半導体検査装置のCPU部の開発でアップアップの状態でした。そう私はアナログだけでなくデジタルもガンガンにやるのです。

今回はソースコードを5000行ぐらい書きましたね。お客様の仕様から今回は使慣れたH8系のマイコンではなく、マイクロチップ社のdsPICを採用しました。いゃーやっぱり速いよこのマイコンは。

2018-6-16blog1

さて毎度ながらデバッグでは問題の嵐。ルネサスとは色々と違うんですよねチップもコンパイラも。H8ならOKなソースもdsPICならNG。CPUが途中で固まる。通信において文字列を受け付けない。ある数値の時だけに計算ミスが出る。LEDに予期しないまばたきがある。などなど……。こんな謎の現象が次々と発生。コンパイル時のシンタックス・エラーも無いのに。

でもアナログと違ってデジタルは必ずミスを探しあてて解決する事が出来ます。なぜなら一見謎に見える現象も、全ては書いたプログラム通りマイコンは動いているからです。デジタルの場合の不具合は、結局は「記述ミス」と「論理矛盾」の2つです。今回も全てはこれでした。

2018-6-16blog2

でもアナログ回路の不具合はそう簡単ではありません。なぜなら物理法則そのもので動いているからです。ですから回路図や計算に全くミスが無くても動かないものはテコでも動きません。それだけに物理法則の壁は分厚いのです。こればかりはベテランのアナログ・エンジニアでしか解決は出来ないでしょう。

本件のもう一つの自慢はAD部の精度です。100kHzほどの高速サンプリングながら精密な電圧計測が求められているのです。例えば3Vは正確に3.000Vとしなければなりません。

このアナログ回路こそ私の腕の見せ所です。でも部品はいたって普通です。ADS8320という16BitのADC、ADR520という2.048Vのリファレンアス、OPA2188というOPアンプ、そしてRR1220という薄膜抵抗で出来ています。

では何が違うのかそれはGNDの配線です。今回はGND部も含めて差動構造にし電流を一切流さない回路にしています。その効果は大きく、信号発生器にアドバンテストのR6144、電圧計測にケースレイ2000を使って検証したところ、余裕で精度をクリアしました。