スパイス  組み込み制御装置の受注製作

モニタプログラムを移植する
平成26年4月 4日

初期動作の確認
 昨日の新規プロジェクトの作成では、メインとなるIO.cのリストを載せ忘れていました。下記になります。
#include <stdio.h>
#include "myint.h"

uchar inp(void);

void main(void)
{
   volatile uchar c;
   for(;;){
       c=inp();
   }
}
 myint.hの中味はunsined型の数値型をuint, ucharのように省略した書き方にしてあるだけです。それぞれunsigned int, unsigned charと同じです。このプログラムではメイン関数を void main(void)と宣言してあります。これで問題ないようです。組み込みではメイン関数が引数を取ることはないのですが、OS向けのCコンパイラとの整合性からint main(int argc, char *argv)とするものもあるので注意が必要です。プログラムの動作としてはinp()関数の戻り値をメモリに書き込むという作業を繰り返します。inp()関数はIOアドレス0番地の読み値を返します。これはオシロスコープを使って/IO-RQ信号と/WR信号を観測するために繰り返し波形となるようにしてあります。

ハードの準備(その2)
 動作検証用のプログラムが出来たので実際にSuperAKI-80にROMを実装する準備を行います。
最初は基板の外観チェックからです。基板としては完成していますが、抵抗やコンデンサなどのリード線の処理が雑で
裏面の基板パターンとショートしそうな所が何箇所かありました。リードを短く切りなおして必要なら半田ごてを当て直してショートしないことを確認しておきます。
 つぎにROM/RAMの選択ジャンパーを半田とリード線を使って接続します。接続先はSuperAKI-80の説明書に従います。
最後に電源接続用の電線とオシロスコープを接続するためのGNDポイントを取り付けします。今回はオシロで写真を取るために/IO-RQ, /WRの各信号にも接続用のリード線を追加します。作業途中の基板写真です。


 EPROMを接続し、確認のためにVccとGND間の抵抗値を測定します。このような小型の基板なら数MΩ以上の抵抗値になります。この値が数十Ω以下なら何処かでショートしていないか慎重に目視確認します。

 次には使用する電源を確認します。特に小型のACアダプタを使用する場合は無負荷時の出力電圧が高すぎることがあるので、最初は負荷となるSuperAKI-80を接続せずに電源単体での出力電圧を測定しておきます。この電圧が20Vを超えるようだと故障の心配が出てきます。ちなみに、私が実験に使用したACアダプタは7.5V/700mAの仕様ですが、SuperAKI-80の消費電力が少ないために実際の出力電圧は12V近くありました(完全な無負荷では12.5V程度)。

 これでやっと電源投入の準備が出来ました。が、ここで少し休憩する位の心の余裕が必要です。作業の抜けやミスがないか再度作業内容を確認します。

動作確認
 ハードの準備が出来たので電源を入れてみます。ここで焦げ臭い匂いがしたり、基板上のLSIを触ってみて熱いと感じるようなら直ちに電源を切ります。最初の確認は、電源電圧です。入力電圧が使用している電源の仕様に一致していることを確認します。次に基板内部の電源電圧である+5V電圧を測定します。ほぼ5Vある筈です。

 以上の確認が終わったら、CPUの出力信号を確認します。プログラムではIOアドレス0番地をリードして、その読み値をメモリに保存することを繰り返しています。このため定期的に/IO-RQ信号が出力されている筈です。下記が/IO-RQ信号をオシロで測定した写真です。期待通り、定期的に信号が出力されています。


 次に/WR信号の写真です。こちらは出力が2回と1回に分かれて出力されています。1回だけの出力は0番地の読み値をメモリに書き込む時のものです。2回の出力はプログラムinp()関数のサブルーチン呼び出しによるプログラムカウンタPCの値をスタックに書き出しているものです。プログラムを追うと確かにこのような順番で/WR信号が出力されることが分かります。


 今回はあっさりと動作しましたが、簡単に動作しないことも多々あります。
 動作しなかった場合には、(プログラムは動作の確認が出来ているので)ハードウェアを疑います。可能性としては
 ・SuperAKI-80基板へ供給している電源の不良(ACアダプタなど他の電源に変えてみる)
 ・電源への配線不良または配線箇所の誤り
 ・SuperAKI-80基板自体の不良(予備の基板があるなら交換してみる)
 ・EPROMの不具合

 EPROMの不具合の可能性は更に細かく分けると下記のような可能性が出てきます。
 ・EPROMのスピード不足(100ns以下が要求されています。実験とはいえ少なくとも120ns以下のEPROMを使用します)
 ・EPROMの書き込み不良(EPROMライタで再度ベリファイ確認します)
 ・EPROMの逆挿し(逆挿ししてしまったEPROMは足を折り曲げて捨てます。二次災害防止のため)
 ・ROM/RAMのジャンパの作業ミス

 以上で初期の動作確認は終了です。

次はモニタが使用するシリアルポートのプログラム部分を検討します。


 ページ先頭へ 前へ 次へ ページ末尾へ