現在地

Z8613を動かす (その4:とりあえず動きました)


テーマ:

いろいろやっているうちに何とか動き始めました。

まずはシリアルポートです。

Z8のシリアルはちょっと変わっていてシリアルのステータスレジスタがありません。それでは受信完了などをどうやって知るのかというと、割り込み要因レジスタを読むのです。ここまではマニュアルを読んでわかっていたのですが...

マニュアルを読み直していると、たとえ割り込みを使わないでポーリング処理をする場合でも一度EI命令を実行しないと割り込み要因レジスタが有効にならないのだそうです。

ポーリングでやるつもりでマニュアルの割り込みの部分をちゃんと読んでいなかったので気付かなかったのでした。

指示通りに初期化するとあっさり動くようになりました。

パラレルの方はアセンブラが原因でした。

前回書いたようにタイマT0の設定は出来ていました。パラレルポートも試しにプルアップ・プルダウンしながら電圧を測ると出力に設定されているようです。それなのに出力すべきデータが設定できていませんでした。

何が違っているのでしょう?

タイマや入出力切り替えのレジスタはアドレス0xf0~0xffに配置されています。一方、パラレルポートのデータはアドレス0x00~0x03にあります。

ふと気になってアセンブラが吐き出すコードを調べてみると、アドレスが0x10未満の時と以上の時で違っていました。アセンブラが不正なコードを吐いていたようなのです。

0x00~0x03の場合だけ手動でコードを書いたところこれも動いてしまいました。

あとでバグ報告しておかないといけませんね。

さてそもそもの問題であったピン20なのですが、残念ながら内部で断線しているようです。このP07は外部メモリを接続する場合にはA15になるので、32kBを超えるメモリは使えないということです。

2018年7月10日 訂正:
報告前にもう一度確認したら、私がアセンブラの擬似命令の使い方を知らなかっただけでした。事前に気付いて良かった...

参考文献・関連図書: 
Z8611,Z8612,Z8613データシート, Zilog.
"Z8 CPU User Manual", UM001604-0108, Zilog.

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。