そういえば、最近ずっとオペアンプばかり…
というか、負電源ばかりやってましたが、
まだ背景表示器のスクロール、テストが
終ってませんでした。
忘れてませんよ。ちゃんと完成させます。
さらには応用アプリの構想も一応あります。
大昔の「あの」ゲームです。背景が
スクロールして、シンプルだけど爽快な
シューティング。(さてなんでしょうか?)
それとは別に、いまやりたいなぁと思って
いることがもう一つ。
ビデオオーバーレイです。
既にAVRで実現している人がいるのですが…
http://garydion.com/projects/videoverlay/
↑こことか、
http://www.viennawireless.org/balloon/hardware/overlay/index.php
↑こことか。
が、アナログに弱い私にはイマイチ回路の意味が
理解できず、永いことほったらかしになってました。
それを今日しばらく眺めていたら、ようやく意味が
解りました。特に、後者をプログラムと併せて
読むと解ってきます。
外部から映像信号を入力しつつ、SPIを使って
MOSI端子から8ビット連続の映像データを
合成したり、RB0から背景を暗くする信号
(英語では「dimming」というようです)
を合成したりしてるんですが、
・元の映像(シンクロ含む)
・オーバーレイ信号
・dimming信号
をどうやってアナログ回路上で混ぜているのか。
それが理解できませんでした。
特に、オーバーレイ信号やdimming信号
が出ていない時になぜオリジナルの信号が
綺麗に出るのか… (´へ`)
でも今日、プログラムと回路をよーく読んで
いたら、ようやく解りました。 (≧v≦)σ
そのポイントとなるのは、
(1)MOSIに繋がっているダイオード
(2)RB0のDDRBレジスタの設定
の2点です。この意味さえ解ってしまえば!
(1)(2)ともそれぞれ、「信号出力」と
「HIGH-Z」の状態をうまく切り替えて
いることがポイントです。
片やダイオード、片やDDRBを使っている
んですが、その理由はシンプル。
輝度の高い信号(電圧の高い信号)を出力するか、
それとも輝度の低い信号(電圧の低い信号)を
出力するかという違いがあるので、信号を出力
しない状態(HIGH-Zの状態)の作り方
が異なることに起因します。
もう説明は不要でしょう。
原理が解ってしまえば、DDRBを使わなくても
外付けダイオード(MOSIと逆方向に)が1個
あれば同じ動作をさせられることなども解って
きます。
マルチプレクサとかオペアンプとか使わないと
出来ないものかと思ってましたが、こういう
シンプルな回路でも実現できるんですね!!!
すばらしい!
(ちなみに、2つのサイトで回路を見たときに、
一番大きな違いは、シンクロ信号の抽出について
片やディスクリートで、片やLM1881で
取り出していることくらいでしょうか。)
というわけで、これを真似してオーバレイの
プログラム(と回路)を作ろうかと思っています。
シンクロ信号は、ディスクリートだと調整が大変
だと思うので、LM1881使おうと思います。
…実は、LM1881を使っちゃうとプログラム
自体は背景表示器のがそのまま使えちゃうん
ですよねぇ。仕組み上…。
もちろん、UARTから表示キャラクターの
コードを入力しないと何も表示されませんが、
映像出力方法やシンクロの方法などの仕組みは
全く同じです。
垂直同期信号で割り込みかけてラインカウントを
ゼロクリアしつつ、水平同期信号でラインカウント
を1ラインずつカウントアップ。
そしてその数えたライン数に合わせた映像を表示するだけ。
(もちろん、dimming信号はありませんけど)
ということで、実現はかなり簡単そうです。
仕組みは簡単なんだけど、さて、どんな応用アプリ
に仕上げようかなぁ…
やっぱ、そこそこ遊べて、応用範囲の広いものが
いいですねぇ。
汎用で使える「ビデオタイトラー」みたいのが
いいかな?
定型の文字を表示するのか、それともドット絵を
オーバーレイする方が面白いのか…
どうせならやっぱメモリの大きいマイコンが
いいなぁ。2313みたいにRAM128バイト
しか搭載していないと、制約がきつすぎるので…
|