先日のμPD71037とともにμPD71054も出てきましたので、今回はこれを取り上げたいと思います。8253の改良版の8254をVシリーズ向けにCMOS化したものになります。「-10」が付いていないところをみると8MHz版のようですね。Commandが追加されたことの2点でした。Commandはカウント値・ステータスをまとめて読み出すためのものです。この手のカウンタ・タイマにおいてカウンタ値を読み出すのは意外と厄介なことなのです。CTCのような例外もありますが)バス幅よりもカウンタのビット長の方が長いので読み出しは複数回に分けて行なわれます。すると次のような問題が発生します。8ビットバスでカウンタが16ビットあるとします。カウンタ値は8ビットずつ2回に分けて読むことになります。カウンタ値が255でL→Hの順に読み出すとすると、まず下8ビットの255が読まれ続いて上8ビットの0が読まれます。これを合わせて255という正しいカウンタ値が読み出されます。下8ビットは既に255を読んでいます。続いて上8ビットを読むときにはカウンタ値は256になっているので1が読まれます。これをあわせると511になってしまいます。カウント直前の255になるか直後の256になるかは目を瞑るとしても、511は受け入れられません。この問題を解決するためにいくつかの方法が考えられ、以下の方法がよく使われます。読み出す瞬間だけカウントを止める読み出すたびにカウントしそこなうリスクがあるので、それが許容される場合に使われます。8253のデータシートにも1つの方法として提示されています。読み出す直前にカウンタ値をラッチする8253のように明示的にラッチコマンドを出す必要があるもの、下8ビットを読み出すと同時に自動的に上8ビットをラッチする(あるいは逆)もの等があります。Commandでは複数のカウンタを同時にラッチ可能になり、カウンタを複数つなげて長いカウンタを作るのが容易になりました。Clock)などでは以下のような方法もありました。更新ビットを使うRTCによってはカウントが発生すると立つビットが用意されているものもありました。これをリセットしておいてから読み出しを実行します。読み出し終了後にこのビットを確認し、立っていたら正しく読めなかった可能性があるので再度読み出します。カウントが発生したら次は1秒後なので2度目の読み出しは成功します。2回読み出す2回読んで値が等しければ正しく読み出せています。異なった場合はもう一度読み直します。textHTMLタグは利用できません。ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。行と段落は自動的に折り返されます。コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。