はじめまして。るーでるという者です。
質問についてなのですが、表題の通りSH7262内臓のVDC3の使い方についてです。
動きのある絵を表示させる場合の画面書き換えタイミングで悩んでおります。
具体的には下記の通りです。
現状では解像度分のVRAM(私の環境では320*240のLCDを使っています)を2面用意しダブルバッファにします。
わかりやすくする為、バッファのVRAM領域をA面B面とすると、
A面←表示中
B面←次に表示させる絵を準備
次の画面の準備ができたらA面とB面のアドレスをVSYNCを待って入れ替える。
ここまではレジスタの操作で問題ないのですが、プログラム側がLCDにB面が反映されたかどうかをプログラムが検出できないので、VSYNCを待たずしてA面の書き換えを行ってしまう。
現状での解決方法として下記を考えました。
1:タイマー割込みを利用して1フレーム+αの時間で割込みを掛け、画面の反映を検出する。
2:VSYNCの信号をPINTに取り込んで割込みを掛け、画面の反映を検出する。
方法1だとフレームレートを上げるのがむつかしいでしょうし、方法2では現状で出来上がっているハードを手直ししないといけない。
皆さんはどのように制御されていますか?
ご教授の程、よろしくお願いいたします。
わわいです ライン割り込みあるぢゃん。 それでVsyncのタイミングだろーと表示期間終了のタイミングだろーと自由に割り込みがかけれます。 割り込みルーチンでどっかのポートをON/OFFさせてオシロででも見てみましょう
>※「画面全体を白で塗りつぶす処理」は正しく動作することを確認しております。おおかた塗りつぶしたあと通常の描画処理に入って上書きされてるだけなよかん。。
わわいです ルネサスでVDC3のサンプルプログラムが公開されてます。 それでライン割り込みも実装してると思いますんで、それを走らせてみましょう
追記:割り込み許可した後、SGINTCNT.LINE_STATUSを0にしてみよう