• 締切済み

マイコンで液晶テレビに文字を送ってるのですが・・・

こんにちは。 今、AVRマイコンで液晶テレビに電気信号(映像信号)を送って画面に文字を表示しようとしています。テレビにはコンポジットの端子、RCA端子が付いているので黄色のケーブルを繋げてやっています。 ただ、実際に試したところ文字は出ているものの、画面が乱れており見るに堪えれない感じです・・・。恐らく同期信号の設定に問題があると考え、様々なサイトやNTSC信号について調べたのですが、私の理解力が足りないのか垂直同期信号と水平同期信号の認識が曖昧になっています。また、他の方の製作例を見たのですが、ほとんどがアナログテレビでやっており、液晶テレビでやっていられる方は極少数でした。 色々試したのですが、どれも画面が乱れたり文字が流れるように表示しっぱなしです・・・。 つきましては、水平同期信号と垂直同期信号のタイムチャート等を教えてもらえればと思います。(時間が入ってるもので) また、ソースコードも外部サイトに貼り付けますので、よろしければご指摘願います。 (コードがめちゃくちゃなのはご了承願います・・・) http://20.gigafile.nu/?i6e576dde2a68a594ed425915acaee797-0318 パスワードは小文字で「ntsc」です。 何かあればご指摘願います。 よろしくお願いします。 *因みに使ってるテレビは東芝のREGZAの液晶テレビです。

みんなの回答

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.3

参考にならないかも知れませんが、AVRでプログラミングしてみた感想です ビデオ信号はタイミングがシビアで、if文、for文を追加しただけでもタイミングがずれて、表示がゆがみます 割り込みで処理しようとすると、レジスタの退避復帰時間が加わる為、割り込み処理に時間がかかると次の割り込みに間に合わなくなります 綺麗に表示する為には、マシン語レベルでタイミング計算する必要があります まずはサンプルプログラムを動かし、改良することから始めてみては?

rajison
質問者

お礼

回答ありがとうございます。 サンプルプログラムで動かしてみたことはあるのですが、何故かテレビに表示すらしないのです。テレビが問題あるのか疑問に思います・・・。 また、もしかしたらマイコンのクロック自体に問題があるかと考えています。 一応、20MHzの水晶発振子を使っているのですが、出力周波数を見てみると、16kHz台だったので、今現在クロックの設定(?)について調べてます・・・。 マシン語の件も参考に入れてみますね・・・。

すると、全ての回答が全文表示されます。
  • tadys
  • ベストアンサー率40% (856/2135)
回答No.2

>ほとんどがアナログテレビでやっており、液晶テレビでやっていられる方は極少数でした。 RCA端子はアナログ入力なので、アナログTVで映るのであれば液晶TVでも映ります。 画面が乱れたり文字が流れるのであれば、同期信号が正確に出力されていないのでしょう。 ビデオ信号の波形を示してもらうことは出来ますか? 同期信号を含むビデオ出力回路を示してもらうのが良いです。 画像に色をつけるのかつけないのかで難しさが格段に異なります。 色をつける場合の水平同期信号の周波数は14.31818MHz/910=15.73426KHzです。 垂直同期信号の周波数は、水平同期信号/262.5=59.94kHzです。 色信号の基準(バースト)になる周波数は14.31818MHz/4=3.579545MHzです。 色をつけるには水平同期信号の後にバースト信号を負荷する必要が有ります。 信号の振幅は75Ω負荷に対して1Vp-pで、この1Vを-40~+100の140に分けて-40~0を同期信号に、0~+100を画像に使用します。NTSC信号の詳細はこちらを参考にしてください。 http://elm-chan.org/docs/rs170a/spec_j.html https://www.jstage.jst.go.jp/article/itej1978/44/2/44_2_169/_pdf 画像に色をつけないのであれば同期信号の周波数やパルス幅はそれほど厳密である必要は有りません。 また、垂直解像度を半分にすれば水平同期信号と垂直同期信号の関係を1/262.5ではなく1/262(または1/263)にすることが出来るので処理が簡単になります。 まずはこちらから始めるのが良いでしょう。

rajison
質問者

お礼

回答ありがとうございます。 >>ビデオ信号の波形を示してもらうことは出来ますか? 申し訳ないですが、ロジックアナライザ等は所持してないので、正確な波形は分からないです・・・。ただ、オシロから計測した波形でよければ、下のURLからダウンロード願います。 http://21.gigafile.nu/?e5c1d0d0f9cdbb21941f403415c1b6812-0319 http://21.gigafile.nu/?cfcf2feb80db1b8e1c3955eac462c9793-0319 (波形が歪んでるのでご了承願います・・・) passwordは「ntsc」です。 また、出力回路に関してはPB0に2kΩ、PB1に1kΩで、コンポジット端子に接続してます。 後はPB6とPB7に20MHzの水晶発振子と、22pFのコンデンサ二つを付けてるくらいです。 それと、カラーではなくモノクロで試しているところです。 プログラムも少し変えてみたので、よろしければご覧願います。 http://21.gigafile.nu/?c60b111093096e60c1f14f58266f5ab1c-0319 passwordは「ntsc」です。 試していて考えたのですが、プログラムの実行で時間が掛かってるため、同期信号がズレてる可能性はあるのでしょうか?それでfor文からwhile文に変えたりしたのですが・・・。 (結果はあまり変わらなかったです。) また、テスターですが出力部の周波数を測定したところ、16kHzと少しズレてたので、もしかするとクリスタルの設定がおかしいのでしょうか・・・。 ご指摘願います。

すると、全ての回答が全文表示されます。
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

_delay_us(57.3) が原因かも知れません 参照1)に、”delay時間[max] = 768us÷CPUクロック”の記述があり、768us / 20(MHz) = 38.4us(MAX)とあり 参照2)では、” _delay_us(48); _delay_us(3.6);” と分割して設定されています 参照1) http://morokyuu.way-nifty.com/blog/2012/12/avr-60ed.html 参照2) http://kousaku-kousaku.blogspot.jp/2008/06/arduino_29.html arduinoでは、”Arduino TVout Library”で文字表示ができます http://blog.livedoor.jp/hardyboy/archives/5492614.html

rajison
質問者

お礼

早速の回答ありがとうございます。 参照のURLで試したところ、上手くいきませんでした。 また、参照2で記載されていたソースコードを試したところ、 砂嵐になってしまいました・・・。 何がダメなのでしょうか・・・。 *参照したコードはこちらです。 http://kousaku-kousaku.blogspot.jp/2008/06/arduino_26.html この一番下のコードです。

すると、全ての回答が全文表示されます。

関連するQ&A