2006/09/18(月)自転車用フラッシャー

自転車用フラッシャー

20060918_0.gif

昭和50年代の初歩のラジオかラジオの製作に載っていた自転車用フラッシャーを組んでみた。多分こんな回路図だろうという記憶を頼りに再現すべく取り組む。

確か乾電池1本で一年間光り続けるという内容だったと思う。1.5VでLEDを光らせるためにコンデンサーによるチャージポンプ回路が入っている。そしてそのチャージポンプを発振回路でON-OFFする。この発振回路でまたしても深みにはまって丸一日を費やす。

PNPとNPNトランジスタでPUTを模倣したよくある発振回路であるが、定数が本当にシビアだ。R1とR2は単にバイアスを与えているハズであるが、低い値で設定しないと発振しない。幾つかの雑誌記事に載っている回路ではどれも1Kと470である。これを10Kと4.7Kでは全く動かない。R2を1K固定にしてR1をバリオームで振って見るが動作範囲は非常に狭い。点滅周期は約1HzでLEDが光るのは一瞬である。それ以外のタイミングではこのR1とR2の抵抗が電流を無駄に消費している訳である。あー当時の記事が読みたい。

LM3909ディスコン

元を辿れば、インターネットの話題でLM3909(LEDフラッシャー)のICがディスコンだという話を読んで、そういえばトランジスタでも簡単に作れるだろうと思いついたのが事の始まり。簡単な回路ほど奥が深いのがアナログの世界である。

2006/08/02(水)UART PC16550(PC16550DN)によるシリアルインターフェース

トランジスタ技術の2006年5月号から6502を使ったマイコンボードの連載が始まっていた。興味を引いたのはシリアルポートにナショセミの16550を使っている事だ。

PC16550DN

80系でUARTのチップといえば8251が定番であるが、ボーレートジェネレータを内蔵していないのでチップ数を減らす場合には不利だろう。この記事に触発されて最初にした事はこのチップの入手であるが、DIP品種となるとなかなか見つからない。

しかし鼻が利くのかこれまたスンナリと入手。さてこのチップの情報はマイコンで調べるよりもPC互換機には大量に使われているので、その上で走るオープンソース系のOSを調べたほうが早い。

その上、デバイスドライバーのソースコードだけではなく、貴重な説明資料も豊富に見つかる(その上日本語で)。

もちろんこのチップを扱うのは初めてだけれど、データシートも英語だけれどそんなに難しくはないし、実際の

FreeBSD2.8のドライバーのソースなんかも大変参考になるだろう。Cが得意でなくてもinb()とoutb()周りだけ読めればそれでも大抵理解できる。また、現在の物よりも古いソースの方が単純で明快だ。

さて、問題は何に繋ぐかだ。やっぱりここは8048の出番だろうか。PICやAVRではUARTのポートなんて当たり前の事なんだが。

2006/07/30(日)DRAMテスターその後

Z80

[Z80]なんとか成功にたどり着く

Z80では計算上、確かにREFRESHサイクルが間に合わず、テスト出来ないのですが、その後実はタイミングの出し方が悪かった事が判明。書き込み時にRASを出した後にデータを一旦セットしてからWEとCASを出さなければ書き込みが失敗する事が判明。またREFRESHタイミングが足りない部分は、1アドレスについて読み書きする度にREFRESH信号を加えてセルフリフレッシュさせる事で、ALL1,ALL0,ランダムデータ書き込みテストがパスするようになりました。

REFRESHサイクル

連続して読み書きするのならば、連続する下位アドレスをRAS側に出してやる事でセルフREFRESHさせる部分を取り除いてもテストが通る事が確認されました。実際計算すると2ms/128をかなりオーバーしているんですが・・・・こんななんちゃってでも動作するんだなぁ。凄いなぁ民生品のレベルは。

2006/07/29(土)TMS9918 VDP ビデオボード

Z80

TMS9918

既に1年以上経っているが心の隅につっかえている

TMS9918を使ってみたいという想いだが、これを扱うには2つの大きな課題がある。

1つ目は、TMS9918は16KのD-RAM 4116を8本も必要なのだが、このチップは3電源(-5V +5V +12V)も必要なのである。家にある1982年のメモリIC規格表にはピンコンパチで単一電源の4816という物が載っているが現在はとうにディスコンで入手は諦めていたが、

最近になってやっとHM4816AP-4というチップを8本入手できた(1本350円で8本で2800円もしました)

2つめは、8本ものDRAMをハンダ付けするのがイヤでたまらない。昔はサンハヤトからICB-015というD-RAM増設基板があったらしいのだが、これも既にディスコン。方々に探し回っていたが、こればっかりは見つからず、夏休みに全精力を投入してUEW配線を行うか、はたまた片面基板でバス配線だけでもしてしまおうかと悩んでいたが、サトー電気さんに在庫があるという知らせで、ギリギリ入手が出来た(現在は無いそうです)

さて、全ての問題がクリアしたので早速製作に取り掛かるとしよう。でも、直ぐに思い立った事があってそれは、実は昔からマイコンに携わってはいるがD-RAMを扱ったことは一度もないのである。

[Z80]DRAMテスター

このZ80ボードのI/Oポート経由でDRAMテスターを作ってみようと思い立ち、16PINのソケットをハンダ付け。そして8255のポートへとUEW線で接続して簡単なバラックを起こした。

最初に全ビットを0にして読み出しテストをするとOK。しかし、全ビットを1にして読み出しテストをすると最初のアドレスで既にNG。データシート片手に何度かRAS・CAS・WR信号のタイミングを変えてみるもやはり1が書き込めない。

そこで、各アドレスに0や1を書いては読み出しテストをすると全アドレスがOKとなる事が判った。これはREFRESHのタイミングが間に合わないのでは無いかという考察に(やっと)たどり着く。DRAMはREFRESHしなくても連続して読み出し・書き込みをすればREFRESHは不要なハズである。ではREFRESHに必要なサイクルとはどの位なのかと計算してみる。必要な時間は2msの間に128アドレスについて操作しなければならず、1アドレス当り15.6usである。え゛?この時間だと例えば2.5MHzのZ80ではIN/OUT命令だけでも4.4us掛かる訳でRAS・CAS・WRのタイミングで夫々OUT命令が必要でそれらをLOWにしてHIGHにするので最低でもOUT命令だけで6つは必要。これだけで26.4usとなる。当然間に合っていない訳です。

AVRとかではどうなんでしょうか。20MHzで1サイクルとすると1命令は50nsという計算で312命令が使える訳です。再びAVRを取り出すべきだろうか。

2006/07/02(日)リモコンのデータフォーマット

赤外線リモコン RM-SE770

RM-SE770

就職してから直ぐに買った物の中に、オーディオコンポがあった。ビクターのロボットコンポというやつでレコードプレイヤー・チューナー・タイマー・スペアナ・グライコ・ダブルカセット・CDプレイヤー、そしてアンプとスピーカーがセットになっていた物で総額30万円くらいだったと思う。それを確かローンを組んで買ったと記憶している。で、これは全部お払い箱で現在はそのスピーカーとリモコンだけが何故か手元に残っている。

[Z80]データフォーマット PL-IRM0101使用

解析結果はご覧の通り割と単純ですね。ちなみに一昨年のこの日記を書いて以降ずーっと今日まで机の上にZ80のボードが放置されていた。どうりで片付かない訳だ。

RM-SE770 データフォーマット