arduinoとLM1881を使って、ビデオオーバーレイ表示を
やってみようという実験の続き (↓これの続き)
http://brown.ap.teacup.com/nekosan0/249.html
ひとまず、74HC125(バッファIC)を通すことで
シンク/ソース電流に余裕を持たせてみたんですが、
やはり上手く行ってません。
arduinoの代わりにTINY2313でやってみると、やはり
上手く動くところをみると、74HC125バッファ自体は
きちんと動作している様子なのですが…
なんか悔しいので、不具合の原因の切り分けをもう少し
キッチリやってみようと思いました。
事前の実験によってソフト側の不具合ではないことは
判ったつもりだったのですが、74HC125を通しても
やはり上手く割り込みがかからないところをみると、
本当にソフト側のバグは無いのか?と気になってしまって…
で、スケッチを以下のようにちょっと修正し、
ラインカウントをシリアルでPC宛に送信するという
処理を挟み込み、ブレッドボードで実験をして
みました。
(スケッチ中の不等号と&記号は全角に変換してあります)
// arduino video overlay sketch
// with interrupt 0 (v sync)
// and interrupt 1 (c sync)
// output video signal on digital pin 4
#define video_out 4
volatile int line_no;
volatile char bitmap[12] = {0b00011000,0b01111000,
0b00100100,0b01000100,
0b00100100,0b01111000,
0b00111100,0b01000100,
0b01000010,0b01000010,
0b01000010,0b01111100};
void v_sync()
{
line_no = 0;
}
void c_sync()
{
int disp_line;
int char_location;
char bitmap1;
char bitmap2;
int i;
int n;
boolean bit_out[] = {LOW,HIGH};
line_no ++;
if((line_no >= 40) && (line_no <= 87)){
disp_line = (line_no - 40) / 8; //line no now display
char_location = disp_line;
bitmap1 = bitmap[char_location * 2]; //left bitmap for display
bitmap2 = bitmap[char_location * 2 + 1]; //right bitmap for display
n = 0;
for (i=7;i>-1;i--){
n = (bitmap1 >> i) && 1; //pick up 1bit for display
digitalWrite(video_out,bit_out[n]); //display a bit
}
digitalWrite(video_out, LOW); //display black
n = 0;
for (i=7;i>-1;i--){
n = (bitmap2 >> i) && 1; //pick up 1bit for display
digitalWrite(video_out,bit_out[n]); //display a bit
}
}
digitalWrite(video_out,LOW);
}
void setup()
{
Serial.begin(9600);
pinMode(video_out, OUTPUT); // set digital pin4 for output video signal
digitalWrite(video_out, LOW);
line_no = 0;
attachInterrupt(0, v_sync, RISING);
attachInterrupt(1, c_sync, RISING);
}
void loop()
{
Serial.println(line_no);
}
int0が立ち上がる時にv_sync関数が呼び出されて
ラインカウントが0クリアされます。
int1が立ち上がる時にc_sync関数が呼び出されて
ラインカウントがインクリメントされます。
で、int0、int1ともに抵抗を介してVccに繋いでおき
(常時HIGHレベル入力)、適宜int0端子、int1端子を
手でGNDとショートさせます(LOWレベル入力)。
ショートさせてから離した瞬間が立ち上がり波形
の入力となり、割り込みが発生するはずです。
で、これで散々弄ってみたんですが、思ったとおりに
ラインカウントがアップしたり0クリアしたりと
想定どおりの動作をしてくれます。
ところが、このスケッチでLM1881を繋いでみると、
やはり上手く動きません。ラインカウントはずーーっと
0のままです。
そしてTINY2313に繋ぎ換えるとちゃんと動きます。
うーん、ソフトではない。回路設計ではない、
部品の故障でもない。とすると、やっぱりデジタル3ピン
に繋がったLED用電流制限抵抗(470Ω)による
電圧上昇と、それによる弁別閾電圧との相性としか
思えないんだけどなぁ…
74HC125を通しても上手く動かないということを考慮
すると、470Ωの抵抗ではどんなICをつないでも
LOWレベルを入力させられないのでは?と
思えてしまいます… (TへT)
ひとまず、スケッチをこのままMEGA8用にコンパイル
してみたらエラー無く通ったので、この間作った
シリアル版MEGA8のarduinoで一旦実験してみたい
と思います。
MEGA8でもMEGA168でも、CPUコア自体は殆ど変わりが
無いので、MEGA8のシリアル版で動くなら、reduino-nano
のボードの仕様(限界)ということになるのでしょうか。
場合によっては、470Ωの抵抗を1kΩ程度に換えちゃう
っていう手も有るかな…
(LEDは薄暗くなっちゃうけど…)
|
TINY2313でビデオのオーバーレイ表示が出来たので、
調子に乗ってarduinoでもオーバーレイが出来るだろう
と思って実験してみたんですが、意外な落とし穴が…
今回実験台に使ってみたarduinoはreduino-nano。
ブレッドボードで便利な細型タイプのほうが便利かと。
で、実際にやってみました。
TINY2313の時と同じように、LM1881のc-sync、v-syncを
int0、int1に入力するように繋いでみます。
LM1881と繋ぐ前には、スケッチがちゃんと機能するか
int0、int1に手動でパルスを入力してみてうまく動作
することの確認は出来ていたのでが、実機では上手く
動いてくれません。
ソフト側はちゃんと動いているようなので、
どうやら回路上の問題みたい…。
一生懸命回路の接続内容を見直したんですが、
おかしなところはやっぱり無し。
まてよarduinoのint1=デジタル3番にはLEDが
ボード上に載ってたなぁ、と。
Vccから抵抗を挟んでLEDがデジタル3番に
繋がっているので、言い換えればプルアップ
されているって事です。
それを踏まえてLM1881の電気特性を見直して見ます。
c-sync、h-syncの出力シンク電流は5mAと書いて
あります。ということは、あまり小さい抵抗で
たくさんの電流を流し込んでしまうと、あっという間に
LOW出力時の電圧が上昇しちゃうって事です。
繋がっている抵抗は470Ω。5V470Ωってことは、10mA
くらい流れこむわけですね…。アウトです。
そもそもLM1881の出力電圧って(バッファが入って
いないのかわかりませんが)LOW出力は高いし、
HIGH出力は低いみたい。
特にLOW側は電圧が上がりやすいみたいで、
I/F先でLOWと認識されなくなっちゃう恐れが
大きいです。
で実際、LED用の電流制限抵抗で電圧が上がって
しまい、LOWレベルと認識され無くなったようです。
上手く割り込みが発生しませんでした。
この回路をTINY2313に置き換えるとちゃんと画面に
オーバーレイされるということは、原因は
ここしか思いつかない…
だからと言って、arduinoの外部ピン割り込み
(attachInterrupt)で使えるのはint0とint1の
2つしかないし、しかもその2つとも必要になるので、
いかんともし難い状態です。
デジタル3はPWMの端子なので、reduino-nanoは
アナログ出力が標準で使えて便利だなぁと思って
いたのですが、LM1881のように出力バッファが
弱いICと繋ぐ場合にはその抵抗がプルアップ抵抗
としてはたらく事に注意が必要のようです。
うーん、この自作したシリアル版arduinoを
mega8からmega168に載せ換えて実験しなおして
みたいところ…。
もしかしたら、出力電流が大きく取れるような
バッファICでも挟めば上手く動くのかな?
スケッチはもう出来ているので、後で時間が出来たら
また挑戦してみます。
|
PIC Kit 2が秋月で4000円で販売を始めたようです。
量はそれほど多くは無さそうです。
ちなみに、赤ボタンバージョンのようです。
4000円はいいですねぇ…。
もっと早く出てくれていれば、「もどき」ではなく
本物を買っても500円くらいしか違わなかったのに…
まぁ、作ること自体は好きなので、それはそれで
いいのですが…
デバッグエクスプレス版も5800円だそうです。
「PICkit シリアルアナライザ」も同じくらいの
値段で売られていると嬉しいんですけどね。
秋月さん、是非入荷してください!! m(vv)m
|
|
|