CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

ADC実装

NSC800ボードに8ビット16チャンネルA/DコンバータADC0817を実装しました。ファミリではありませんがCPUバスに直結できます。

f:id:O3I:20211214093211j:plain



 

NSC800Z80とソフトウェアコンパチなのでCコンパイラSDCCがそのまま使えます。例えばこんなバッチでSRAM領域にロードするプログラムを作れます

 

sdcc  %1.c -mz80 --code-loc 0x8000 --data-loc 0x8800 --no-std-crt0 -V

ロードされる領域は全面SRAMですが仮想的に0x8000-をROM(codeセグメント)、0x8800-をRAM(data/bssセグメント)と見做しています

A/Dコンバータのドライバもこのように簡単に記述できました。変換終了EOCNSC810Aの汎用ポートでポーリングしています

f:id:O3I:20211214092457j:plain

 

今回、ADC0817の動作クロックにはCPU原振の1/2:2.1MHzを8分周した約260kHzを入力しています。このときの変換速度(EOCがLの期間)を見てみると約430uS。サンプリングレートにしたら約2kHzですからかなりのんびりした変換です。

f:id:O3I:20211214092611j:plain

ADC0817のクロック入力は640kHztypとされているので分周カウンタのタップを1個上にしておけばよかったのですが、手で回すボリウムの位置や温度センサを読んだりするぶんには十分でしょう。

 

アナログ入力ポートに電源電圧を分圧するボリウムを接続しAD値を7セグ表示してみました。ノイズで1LSB程度バタつきますがほとんど問題ありません。ボード上に各チャンネル毎のCRフィルタを置けばさらに良かったかもです。

f:id:O3I:20211214092434j:plain