2009年1月7日水曜日

TinyでPONG!(ハードウェア)

長らくのお待たせでした。PONG復活です。今回は回路図の公開とハードウェアの解説をしましょう。

例によって秋葉原の某所(ほとんど秋月ですが…)で入手しやすくできるだけ安価な部品ばかり集めています。基板を除けば千円でお釣りがくるくらいです。

Tiny2313は約8MHzのRC内蔵発振器を持っていますが、わざわざセラロックを用いているのは周波数の安定性が重要になるからです。もちろん水晶発振子でもかまいません。ためしに内蔵発振器を使って画面出力をしてみたところ、絵がゆらゆら、ばらばらでとても見られたものではありませんでした。温度係数もやたら大きくて、温めたり冷やしたりすると揺れ具合も大きく変化します。

映像出力はPB7、同期信号出力OC1A(=PB3)で、これらはダイオードとRを使って混ぜてコンポジット出力としています。実は映像出力がポートの最上位ビットであることと、同じポートの他のビットに出力が割り当てられていないことがとても重要なのです。(PB3が出力として使っているように見えますが、これはあくまでもOC1A出力として使っているので影響ありません。)

音声出力はPD6から出しています。出力コンデンサを省略していますが、心配ならば100uF程度のアルミ電解を直列につなぐと良いでしょう。

パドル入力用の簡易ADCにはコンデンサーへの充放電を制御する出力PD4、PD5と放電時間を計測するための入力PD0、PD1を使います。PD4またはPD5をHにしてダイオードを経由して急速に充電したのちLに切り替えます。放電はボリュームの抵抗を通って徐々に行われます。コンデンサの端子電圧がVILまで下がったことをPD0またはPD1でセンスし、それまでの時間をボリュームの抵抗値=パドルの位置として求めるのです。

ありがたいことにTiny2313は旧製品の90S2313と違って3Vで動作しますので、電源は単三乾電池2本でOKです。この回路では電源スイッチはありませんが、ソフトウェアスイッチ(サーブスイッチSW2を長押し)でパワーダウンモードに入ります。この時の消費電流は極めて低くて1μA未満です。

(2009.2.12 回路図のTYNY2313のシンボルマークを修正。)

0 件のコメント: