16ビットマイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第76回]
●AM188CPUボード直結RS232CIF(4)
AM188CPUボードにRS232Cレベル変換ボードを接続している写真を撮りました。
ついでにND80KL/86マイコンボードの写真も撮りました。
[第63回]と、KL5C80A12マイコンボードの製作[第30回]に追加しましたのでご覧ください。
AM188CPUボードにRS232Cレベル変換ボードを接続しているところです。
CPUボードの部分を拡大しました。
さていよいよRS232C割込み受信プログラムの作成です。
送信割込みの機能もあるのですが、ZB3BASIC、ZBKV3BASICでは送信については割込みは使いません。
232C通信の送信、受信割込みについてはSerial Port Control Register(SPCT)のビット10がRXIE(受信割込可)、ビット11がTXIE(送信割込可)であることが[第74回]で引用した説明文に記載されています。
それでそのSPCTのビット10を1にしてみたのですが、受信割込みは発生しませんでした。
割込みはすべて00000〜の割込テーブルに割込み処理プログラムのアドレスを記入するのですが、もちろんそのようにしました。
[第74回]に少し書きましたようにRS232Cの割込みはTYPE 14の割込みになります。
後でまた説明しますがTYPE 14の割込みは割込みテーブルの0050〜0053に割込み処理プログラムのアドレスを書き込みます。
そのようにしたのですが、受信割込みは発生しませんでした。
これにはかなり悩んでしまいました。
マニュアルのRS232C(Asynchronous Serial Port)のところを何回読み直しても割込みについてはそれ以上のことは書いてありませんから、打つ手がありません。
あれこれ試行錯誤を行なった末に、どうやら割込みについてはほかにまだ設定すべきことがあるのではないか?という考えに至りました。
なにしろずっと忙しかったものですから、マニュアルもいい加減に飛ばし読みをしていたのがいけなかったようです。
あらためてマニュアルをじっくり確認してみましたところ、まだいくつか設定しなければならないところがあることがわかりました。
INTERRUPT CONTROL UNITの説明です。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
そうだったのでした。
割込みについては、やっぱりここのところを読むべきだったのでした。
Interrupt Control Unit全般の説明の続きです。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
RS232Cの割込みはMaskable Interrupt(マスク可能割込み)です。
Maskable InterruptはフラグレジスタのIFビットを1にしなければ、割込みを受け付けられません。
IFビットはSTI命令を実行するとセットされます。
7.1.1.5のInterrupt Mask Bitはこの時点では意味不明でした。
Interrupt Control Unit全般の説明の続きです。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
Table 7−1にAsynchronous Serial Port Interruptがあります。
Type 14Hで割込みテーブルアドレスが0050です。
Interrupt Control Unit全般の説明の続きです。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
7.1.2.4と7.1.2.5の説明で、割込みプログラムが実行される直前にフラグレジスタがスタックにPUSHされると同時に、IFビットはクリアされること(重ねて割込みが受け付けられないようにするため)、割込みプログラムの最後にIRETを実行するとフラグレジスタがPOPされるとともにIFビットが再び1にセットされることがわかります。
Interrupt Control Unit全般の説明の続きです。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
またこんなところに重要なレジスタの説明が出てきました。
7.2.5 End−of−Interrupt Write to the EOI Registerです。
どうやら割込みプログラムの最後にEOI Registerのin−serviceビットをリセットする必要があるようです。
Interrupt Control Unit全般の説明の続きです。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
やっとここで割込みに必要なレジスタの一覧が出てきました。
RS232C(Asynchronous Serial Port)に必要なレジスタはアドレス44(FF44)のSPICONとアドレス22(FF22)のEOIのようです。
説明が長くなりましたので、この続きは次回にすることにいたします。
16ビットマイコンボードの製作[第76回]
2018.8.25upload
前へ
次へ
ホームページトップへ戻る