体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

ポケコン PC-G850Vで電子回路工作(3/22)

前回はタイミングチャートの説明をしたが、
最初はあんなに詳しく一から考えたわけじゃない。
まずなんでデータAがCLKとずれてるのかな?じゃあCLKの立上がりの前で1かな?続けて1かな?
じゃあ次のCLKの準備だから立下りで1かな?おーうまくいった。じゃあこれを1CLK毎に繰返せばいいのか~
でも本当にそれでいいのかな?理屈は?という風にあとから詳細はついてきたのだ。

なんかひどく難しくなってしまっていたが、要はそういう事だ。

で今回は出来上がったデータを表にしてきれいにまとめた。
a0034780_16545097.png
上のうすい青の表が数字1~0までのDATA文。4,6,4,6,...と続いている。下の濃い青の表が各数字毎をビットで現したもの。数字1だけ5pin、6pinを表示しているが、それ以降は4pinだけを表示。
一番下にgoogleシートでの関数の式をメモしてある。

今度はそれを実際のタイミングチャートにするとどうなるか示している。
a0034780_17334662.png

最初の表と横に揃えた方が分かり易かったのだが、ちょっと幅が窮屈なのでこうして縦に分けた。
上のLED表示はそれぞれの1片がa~hで、隣は数字の1の場合、2の場合を示している。ここでhは使われていない。
そして列10~12は、LEDの場所と相当するICの出力ピンを示している。ちょうどその下のタイミングチャートとも縦を揃えている。
そして列13以降がタイミングチャートで、0(Low)を灰色にして1(Hi)を目立たせるようにしている。
1の場合、LEDのcとbに相当するQFとQGのピンがONになるようにCLKの立上がり前から立上った後まで(立下り直後から立下り後直前まで)を1(Hi)にしている。以下同様。最後に式もメモ。(ダミーはどこに行ったって?最初のCLKの2回分DATA(A)がLOWになっている所がダミー。8回CLKで送ることで、7セグで必要な7つのデータからはみ出して使われない。)

やっぱり最初からこうやって考えたわけでなく、うまくいったから、じゃあ信号はどうなの?って考えてまとめたらこうなっていたというわけ。あとづけ。でも前のもそうだけど、ここに備忘録として残しておけば、次に考える時には、まずこの表から考えてデータを作れるから、1.どの出力ピンがどのLEDを光らせるのか、2.そのLEDは数字のどの部分に当たるのか、3.そして出力ピンはシフトレジスタでどの順番のデータに当たるのか、という風に整理し1、2、3の順で当てはめて考えればいい。まめにメモ取ることは頭の整理になるだけでなく、後から忘れた事を思い出す手助けになるのだから。

【Cプログラム】

main() {
char a[190]={
4,6,4,6,4,6,4,6,4,6,4,6,5,7,5,7,98
4,6,5,7,4,6,5,7,5,7,5,7,4,6,5,7,98
4,6,5,7,4,6,5,7,4,6,5,7,5,7,5,7,98
4,6,4,6,5,7,5,7,4,6,4,6,5,7,5,7,98
4,6,5,7,5,7,5,7,4,6,5,7,5,7,4,6,98
4,6,5,7,5,7,5,7,5,7,5,7,5,7,4,6,98
4,6,5,7,4,6,4,6,4,6,4,6,5,7,5,7,98
4,6,5,7,5,7,5,7,5,7,5,7,5,7,5,7,98
4,6,5,7,5,7,5,7,4,6,5,7,5,7,5,7,98
4,6,5,7,5,7,4,6,5,7,5,7,5,7,5,7,98,99
};
int p;

foqen("pio","a+");
pioset(0);
p=0;
read:
if(a[p] == 98){
wait(3000);
}
else if(a[p] == 99){
p=0;
goto read;
}
pioput(a[p++]);
goto read;
}
wait(t) {
for(;t>0;t--);
}

[PR]
by k1segawa | 2015-03-22 17:14 | ポケコン | Comments(0)