復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第262回]
●バックアップ電流を測定してみました
前回は、データシートで確認したIS61C5128ASのバックアップ電流の推測値が意外に大きい値なので、ボタン電池では無理だと判断し、単三乾電池でバックアップすることにしました、と書きました。
そうしましたら。
以前にND80ZVをご購入いただいたお客様からメールをいただきました。
「カタログデータに比べて実測値がずいぶん小さいということを経験していますから、実際に測定してみることをおすすめします。」
なるほど。
確かに実際の値も確かめてみるとよいかもしれませんね。
さっそく測定してみました。
おお。
47.7μAです。
データシートから推測した電流値0.3mAの1/6です。
これでもND80ZV(ND80Z3.5)に搭載しておりますLY62256のバックアップ電流は1μAですから、それに比べればまだまだ大きいのですが、それでもデータシートから求めた値の1/6ということになれば、電池の寿命も大幅に伸びることになります。
今回の測定値を元に、約50μAとして単三アルカリ乾電池(容量2000mAH)でのバックアップ可能時間を、前回と同様にして計算してみました。
2000/0.05=40000(時間)ですから
40000/24≒1667(日)になります。
なんと4年以上持つという計算結果になりました。
実際は乾電池の自己放電によってもっと早くだめになってしまうと思いますが、とにかくこれだけ持てば言うことはありませんでしょう。
いまどき乾電池でのバックアップなどというと、スマートではない、という印象を持たれるかもしれませんが、こうしてみると乾電池も捨てたものではないな、とあらためて思います。
●CPUクロック
[第258回]で、開発コードE−80プロジェクトについて初めて紹介いたしましたときに、
「このボードのクロックは10MHz、5MHz、2MHzの3通りです」
と書きました。
実は、Y様と打ち合わせをすすめてきましたE−80ボードのクロックは、10MHz、5MHz、2MHzではなくて、10MHz、4MHz、2MHzでした。
それがどうして4MHzから5MHzになってしまったかといいますと、お恥ずかしい私のうっかりミスがもとになっておりました。
試作基板がやっと組みあがって、あちこちの誤配線も直して、いよいよテストプログラムの実行を、という段階で、
「さて何を実行してみようか?」
そこで思いつきましたのが、MYCPU80にもND80ZV(ND80Z3.5)にも応用プログラムとして付属しております電子オルゴールプログラムでした。
このE−80ボードにも小型のスピーカーを接続してそこにパルス出力することでピー音を鳴らすことができる回路がついています。
I/Oアドレスこそ違いますが、MYCPU80やND80ZV(ND80Z3.5)とほぼ同じ回路です。
ですからI/Oアドレスさえ合わせれば、そのまま実行できるはず、と考えました。
最初のテストプログラムとしては最適です。
実はこのプログラムをどのようにしてE−80ボードに読み込ませるか、というところにつきましても、ぜひともご紹介さしあげたいのでありますが、お話の流れとしまして、それにつきましては今はちょいと横においておくことにいたします。
ともかく。
電子オルゴールプログラムと楽譜データとをE−80ボードにロードしまして、いよいよ実行してみましたところ。
なんと。
信じられないとんでもない事態が発生してしまい、2日3日ほども四苦八苦して悩むことになりました。
あ。
でも、そのお話もちょいと横においておくことにいたします。
で。
もう一度、ともかく。
そのとんでもない事態もやっとのことで解決いたしまして、いよいよ実行してみましたら。
なんと。
めっちゃめちゃ遅いじゃありませんか。
電子オルゴールプログラムは音階も音の長さも命令の実行時間をもとにして決めています。
当然CPUクロックが変われば音の高さも音の長さも変わってしまいます。
もとよりそれは承知の上で、それはあとからクロックに合わせて補正すればよいこと、と考えていました。
ND80ZV(ND80Z3.5)はCPUクロックが6MHzですから、たとえばE−80ボードのクロックを4MHzにして、ND80ZV(ND80Z3.5)用の電子オルゴールプログラムをそのまま実行すれば、そこそこ遅くなるな、という認識はありました。
しかし。
実際はそんなものじゃありませんでした。
とにかく。めっちゃ遅いのです。
むむむ。
なぜだ?
前にも書きましたが、Z8S180は日立の64180のセカンドソースとしてZilogが生産しているものです。
そこで。
Y様から送っていただいた64180の解説書をあらためて調べてみましたら、リセット後は命令の各マシンサイクルに3クロックずつウェイトが挿入されることがわかりました。
たとえばJP命令は3マシンサイクル9クロックですが(Z80では10クロック)、その各マシンサイクルにそれぞれ3クロックのウェイトが挿入されるということになりますと、クロック数はなんと18クロックになってしまいます。
これでは遅くなってしまう道理です。
ところでリセット後に必ず挿入されてしまうこの3クロックのウェイトなのですが、CPUに内蔵されているI/Oコントロールレジスタの設定値をソフトウェアで書き換えることによって、3〜0ウェイトにすることができます(リセットするとまた3ウェイトに戻ってしまいます)。
そこで、さっそく電子オルゴールプログラムの先頭で内蔵I/Oコントロールレジスタを書き換えて、ノンウェイトにしてみたのですけれど、それでもやっぱり遅いのですよねえ。
とにかく、遅い。
いくらなんでも遅過ぎる。
ということで、あらためてじっくりと64180の解説書を読んでみましたら。
とんでもない間違いをしていたことに気がつきました。
うむむ。
てっきりZ80と同じだとばかり思っていたら。
とんでもない早とちりでありました。
あ。
そのことについて説明をするためには、回路図等があるとよいのですけれど(ええ。もちろんありますけれど)、ちょっとまだ書き込みだらけのぐちゃぐちゃで、お見せすることができるほどには整理がついておりません。
ですので、本日のところはここまでとさせていただきます。
ワンボードマイコンでCP/Mを![第262回]
2012.12.5upload
2012.12.6一部を書き換えました
前へ
次へ
ホームページトップへ戻る