JR-100のNTSC信号を標準化(4)

JR-100のビデオ出力信号をNTSC規格になるべく従うよう整形すべく、PICマイコンを使って何とかしようという企画の4回目。前回までで開発環境とデバッグ用のプログラムを作るところまではできました。今回はいよいよPICのプログラムを作っていきます。かなり正確な時間のパルス幅を作る必要があるのと、PICのMIPS値が最大でも8MIPSと余裕がなさそうなことから、アセンブラで記述しています。

まずプログラムに行く前に回路図を少し修正します。

修正のポイントは、PICのインサーキットデバッグをするために、同期信号の入力ピンをRA0からRA2に変更したことと、PICkit3の接続用のポートを設けたところ、最後の加算回路に計算用に入れておいた75Ωの抵抗を削除したことです。インサーキットデバッグについてはShigehiro Kimuraさんの記事(⇒MPLABXとPICKit3でPICをデバッグしてみる)を参考にさせていただきました。PIC16F1705の場合のPICkit3との接続は以下のようにします。

PICkit3のピン番号 PIC16F1705のピン番号 ピンの意味
1 4 RA3/MCLR
2 1 VDD
3 14 GND
4 13 RA0/ICSPDAT
5 12 RA1/ICSPCLK
6 使わない 使わない

RA0をデバッグ用に使うため、同期信号の入力を空いているRA2に変更しました。

さてプログラムですがJR-100のNTSC信号を標準化(2)で考えたアルゴリズムをそのまま実装しています。外付け水晶発振子を3.579545MHzのものと8MHzのもので試すため、パラメータのいずれかをコメントアウトして使います。

当初はタイマー2,4,6割り込みをフル活用して同期信号の開始時点を決定していたのですが、割り込み発生時の振り分け処理に多くの命令サイクルを消費してしまうのが厳しいことと、割り込みが発生してから割り込み処理ルーチンに飛んでくるまでの時間(命令サイクル数)が不確定であることから、すべてループを使って適当な時間の待ち時間を発生させるようにしています。なお同期信号を生成している時間以外は何もすることがないので、メインループはただの無限ループです。

 

いきなり実機で実行したくなる気持ちを抑え、まずはこのプログラムをMPLAB X IDEのシミュレータ機能を使ってデバッグをしてみます。(続く)


関連記事一覧

投稿者: けむしろう

プログラミング、サーバ構築、電子工作、旅行が好きです。

コメントを残す

メールアドレスが公開されることはありません。