SVX日記
2005-04-03(Sun) わーい、プロッタがプロッた!!
がばっ!! と、起き抜けに工作開始である。実は夢の中である事実に気づいてしまったのだ。コレはもしかすると祝氏からのお告げだったのであろうか? それは「PICのクロックの精度は大丈夫なのかいな?」というコトである。
オイラは新たにPICで開発を始める際、手始めにてきとーなポートを利用してLEDをチカチカさせるコードを動かすトコロから始める。その中でチカチカする間隔を作り出すのが、オイラがPICでプログラムを始めた頃にあみだした「秘伝の0.1秒×n-αループルーチン」だ。このルーチンは実に簡単にキリのいい時間を作り出すスグれモノなのであるが、今回nに10を指定して1秒間隔でチカチカしたにもかかわらず、微妙に速かった……いや、微妙でなく明らかに速かったのを思い出したのだ。デジタル時計の秒きざみとLEDの点滅が、ズンズンとズレていくのである。
PICにはオシレータ内蔵のタイプが多く存在し、この機能の利用を選択すると外部に水晶を取り付ける必要がなくなる。PICの種類によって選択できるクロック速度は異なるが、今回のPIC16F648Aは4MHzの内蔵オシレータ搭載だ。これを使うと、水晶が取り付けられるハズだった2つのピンはその呪縛から解き放たれ、I/Oポートとして使えるようになるのだ。特別な理由がない限り、これを利用しないテはないのである。
しかしながら問題もある。内蔵オシレータはいわゆるRC発信回路(抵抗とコンデンサで組まれた発信回路)で構成されており、果てしなく正確な時を刻む水晶に比べて精度がイマイチという特性があるのである。そして、どうやら今回用いるPIC16F648Aはかなり速めの発振を行う個体らしいのである。
「クロックが速ければ、処理が速くてええやん、ナチュラルオーバークロックやん」と思えばさにあらず。今回はPIC内蔵のシリアル通信(USART)機能を用いるのであるから、ボーレートまで速くなってしまうのは困りモノなのである。マニュアルの推奨設定値によれば「CPU動作クロック4MHzで通信速度9600bpsを望む場合、高速モード(BRGH=1)でSPBRGに25を設定すべし」とあったのだが、そもそも4MHzが正確でないならばこの値も変わってくるのである。あな恐ろしいや。そーいや昨日、PIC→PCへのUSB経由の通信が成功したと書いたものの、思い返せばデータがときどき化けて受信されていたのもコレが原因っぽい。
理由がわかったトコロで対処である。「秘伝の0.1秒×n-αループルーチン」を利用し、4MHzのCPUがキッカリと10秒間隔でLED点滅を繰り返すコードを書き込み、その時間をストップウォッチで計測、実際のCPUクロックを逆算してしまえばいいのである。
実測秒数 | サイクル数 | 理論値で20秒の実測秒数 |
---|---|---|
18.77s | x1 | 18.77s |
56.18s | x3 | 18.727s |
112.39s | x6 | 18.732s |
168.46s | x9 | 18.718s |
281.23s | x15 | 18.749s |
281.15s | x15 | 18.743s |
20.00s / 18.74s = 1.0672倍
4MHz * 1.0672倍 = 4.2688MHz
BaudRate = Fosc / (16 * (x + 1))
x = ((Fosc / BaudRate) / 16) - 1
x = 26.79 ≒ 27
というワケで、SPBRGには推奨値の25ではなく、27を利用しなければならないコトが判明した。ちなみに、PICの仕様書を見ると、電源電圧5Vで通常の温度条件下では誤差は±2%と書いてある。±2%でも上記の校正作業は行うに越したコトはないと思うが、今回の+7%って……このPIC不良なんじゃねーか!?
で、対策コードを書き込んで動かしてみるが、まだ動かん……いいかげんメゲる寸前である。オシロで出力波形をモニタしながら……って、波形が出てねーじゃん!! そーか、Rubyのputcがバファリングしてしまっているんだ。おーちゃくしないで1バイトずつ出しなさいッ!! 「serial.sync = 1」を指定してどうだッ!!
うわー、懐かしいカチャカチャ感だ。このプロッタの動きや音!! かなり面白いのでゼヒこのムービーで体感していただきたい。ちょっと画質が悪いが、その雰囲気は伝わるハズだ。というワケで、これにて「ハ号作戦」の完遂である。今回のI/Fの完成は祝氏からのお告げのおかげである(と信じて疑わない)。命日から一日遅れてしまいはしたが、このI/Fの完成を祝氏に捧げさせていただく。
さて、完成したらパッケージングである。バラしは極力避けようと思っていたが、必要に迫られて、すっかりバラすことになってしまった。例の供締め予定箇所に基板をあてがってみたトコロ、意外と余裕がないことが判明したのだ。基板の端は既存のコンデンサと干渉するため、ギジギジとニッパでカジり取ってなんとかなったが、高さ方向はUSBのBコネクタの高さギリギリであり、現在のように基板をピンヘッダで結合する方式では裏ブタが閉まりそうもない感じである。どうやらピンヘッダとPICを直ハンダしないと解決が難しそうだ。
2011-04-03(Sun) 台を青に塗る
新築する際「書斎」というか「工房」を作り、部屋の1/3を土間にし、その端に流しを作った。切ったり削ったりした後の洗浄や、作業の合間に手を洗ったりするためである。正直、これは大正解であった。
2016-04-03(Sun) 遅ればせながら、戦車道、観戦します!
実は、先日、通常版のガールズアンドパンツァーは観ているのだが、デキが良かっただけに4DX版で観たくなってしまったのであった。映画を劇場で2回も観るのは2回目だ。前回、アバターの2回目をIMAXで観て以来。あれもIMAXという付加価値付きで、もう一度、観てみたかったという経緯で、状況は今回とよく似てはいる。
映画本編は、かなり「思い切っている」と思う。「オマエラが観たいのはコレだろッ!!」といわんばかりの砲撃戦、砲撃戦、砲撃戦、砲撃戦。途中、わずかばかり、入浴シーンと伏線が入るくらい。あとは、コネタ。キャラを生かしてクスッと笑わせるセリフを挟んでくる。それがすべて。
要するに、砲撃戦、コネタ、砲撃戦、コネタ、入浴シーン、伏線、砲撃戦、コネタ、砲撃戦、コネタ、砲撃戦、コネタ、砲撃戦、コネタ、砲撃戦、砲撃戦、砲撃戦、砲撃戦、砲撃戦、コネタ、伏線回収、エンディング、って感じ。
で、席に着いて驚いた。「一番前のド真ん中」という思い切った席を選んだのだが、なんと4列目だ。前3列分、通常の席が並んでいるのだ。4DXでない上映用らしく、そこは空席。実は、一番前ってのもちょっとマズったかな、と思っていたので、中川コロナの4DXに関しては、ベストな席だったといえよう。ちなみに、延長上映なのに、席は7割以上は入っていた感じだった。そら、上映期間を延長するわ。
で、心配だったのは、4DX用に後付けされた動きだけに、ミスマッチがあるのではないか、というところだが、ほとんど問題なし。最初から最後まで、ちゃんとキッチリとシンクロして、違和感はほぼなし。エンジンの振動、戦車のサスの効き、砲撃の振動、着弾の衝撃、砲弾が切り裂く空気、そして、なんといっても、丘を駆け抜ける風! 基本的には扇風機なんだろうけど、一方向からじゃなく、方向も強弱も複雑に渦を巻いて、自然に吹いている風を感じさせるのがいい。扇風機の風の不自然さに不満のあるオイラとしては、感動モノだった。家庭用に欲しいなぁ。