PC98がBIOS標準で提供しているインタラプトタイマーの最小精度…は10mS。
Beepなど、エラー処理で音源周波数が設定されている8253タイマの分周設定もこの時設定単位で割込みコントローラ8259のタイマインタラプト信号で動いています。
テクニカルマニュアルによれば、I/O処理の後にNOP命令、いわゆる待ち時間を8253の場合、リカバリタイムが1000nS、とあります。本体メモリーアクセスはCPUクロック精度でいけるのですが、I/Oポートとのやりとりにはアクセス速度の制限(応答周波数)が存在します。
つまり、連続性してタイマ設定の変更が1mS以上の間隔を空けないとできない…という訳です。
PC内蔵タイマを単ショットカウントなど、セットリセットを繰り返すシーケンスに使うは、こうした「規格」の仕様をよく知った上でプログラムコーティングしないと、追従速度の限界を越えてセットした場合の不明な動作に悩まされることになります。
(実際、能力以上のパラメータを設定すると、案の定、フリーズしてしまいました。タイマが応答しきれない時間に再度割込み信号が…永遠ループから抜け出せない…)
インターフェイス拡張ボードとPCタイマを使って高速サンプリングのシステムを設計する際のいろいろな「勘違い」発見には、原因の深い洞察力が必要となりました。
Beepなど、エラー処理で音源周波数が設定されている8253タイマの分周設定もこの時設定単位で割込みコントローラ8259のタイマインタラプト信号で動いています。
テクニカルマニュアルによれば、I/O処理の後にNOP命令、いわゆる待ち時間を8253の場合、リカバリタイムが1000nS、とあります。本体メモリーアクセスはCPUクロック精度でいけるのですが、I/Oポートとのやりとりにはアクセス速度の制限(応答周波数)が存在します。
つまり、連続性してタイマ設定の変更が1mS以上の間隔を空けないとできない…という訳です。
PC内蔵タイマを単ショットカウントなど、セットリセットを繰り返すシーケンスに使うは、こうした「規格」の仕様をよく知った上でプログラムコーティングしないと、追従速度の限界を越えてセットした場合の不明な動作に悩まされることになります。
(実際、能力以上のパラメータを設定すると、案の定、フリーズしてしまいました。タイマが応答しきれない時間に再度割込み信号が…永遠ループから抜け出せない…)
インターフェイス拡張ボードとPCタイマを使って高速サンプリングのシステムを設計する際のいろいろな「勘違い」発見には、原因の深い洞察力が必要となりました。
PR