AVR を使ってみました。
いろいろと調べてかなりいろいろと試したんですが...結論は AVR では無理でした。
1チップマイコンなので、高速動作が苦手なようです。
P6 から出力される、4MHz の2.5クロック幅のnCS、nRD、nWR に対して、データを出力する事ができませんでした。
16MHz動作のAVR なので、10クロック分ぐらいしかないため、かなりきついようです。
前の書き込みの、ボーレートをS/Wから設定できる回路図は、一部間違いがありました。
D5 からLS10 に入力している信号がありますが、D6 から入力するのが正解です。
また、回路を組んだ時に併せて修正します(他に間違いがあるかも知れないので)。


設定方法は違いますが、参考にはなると思います。
akizukidenshi.com/download/kairo/%E3%83%87%E3%83%BC%E3%82%BF/%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E9%96%A2%E4%BF%82/A001_AKI-80%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89.pdf
の4ページに12.288MHz・2.4576MHzの場合が、10ページに9.8304MHzの場合が載って
います。旧版には8MHz(7.9874)の場合も載っていましたが、最終版にはないようです。
で、P6からの分周比の設定方法ですが、一応考えてみました。
ttps://box.yahoo.co.jp/guest/viewer?viewtype=detail#vt=public&lf=list&ls=1&lm=20&il=1&ds=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&du=dfc80c6a-8c9f-41a2-be43-60855c46c980&ts=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&tu=dfc80c6a-8c9f-41a2-be43-60855c46c980
74HC574(374)・74HC40103(とアドレスデコーダ他)を使えば可能です。574(374)で設定値
を保持するわけです。
ADR1にカウンタ、ADR2にプリスケーラを接続してあります。適宜アドレスデコーダに接続
して下さい。
out ADR1,0 でCoutにプリスケーラの出力がスルー出力されます。
プリスケーラは out ADR2,0 で1/1、out ADR2,1〜7 で1/2〜1/128になります。
out ADR1,0:out ADR2,0 でCLKがスルー出力されます。
ところで、AVRがダメとの事ですが、ウェイトを入れてもダメでしたか?
いちばんいいのは8253で設定する事かも知れませんが、ソフトの互換性に難がありますし...
初期のPC-98用RS-232Cボード(PC-9861)もDIP-SW設定でしたが。
いろいろと検討をありがとうございます。回路は参考にさせて頂きます。
ただ、今回の前提条件なんですが、
・P6本体には改造を加えない
・既にある RS-232C用のポートを使う
・既存ボードの上位コンパチにする
です。
ですので、アドレス線は A0 しか使えないですし、WAIT の挿入は出来ません。A0 しか使えないので、先に挙げている回路はヘンな回路が入っています。
また、WAIT 挿入が出来れば、AVR でも動作はさせられると思います。
IC を4つほど追加すれば、WAIT を挿入せずに AVR でも動きそうですが、そこまでして...って感じなので。
でした。
カウンタを単純化したものにしました。これで38400bps〜75bpsまで設定できます。
ttps://box.yahoo.co.jp/guest/viewer?sid=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&uniqid=30177e6a-c458-4da1-9575-020ee4878957&viewtype=detail#vt=public&lf=list&ls=1&lm=20&il=1&ds=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&du=30177e6a-c458-4da1-9575-020ee4878957&ts=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&tu=30177e6a-c458-4da1-9575-020ee4878957
データ幅が4ビットになる代わりにアドレスが16になりますね。
ttps://box.yahoo.co.jp/guest/viewer?sid=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&uniqid=de53c0b3-bd07-4db5-ba83-a56e7a6f91bb&viewtype=detail#vt=public&lf=list&ls=1&lm=20&il=1&ds=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&du=de53c0b3-bd07-4db5-ba83-a56e7a6f91bb&ts=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&tu=de53c0b3-bd07-4db5-ba83-a56e7a6f91bb
戻してみました。リセット後はカウンタはスルー、プリスケーラは1/128になり、
19.2kHzで1200bps(1/16)になります。初期化なしでも一応使えます。
out 80h,27h でプリスケーラをスルーします(1/1=2.4576MHz)。
out 80h,26h〜20h でプリスケーラが1/2〜1/128になります。
カウンタの設定は
out 80h,0yh
out 80h,1xh
とします。これでカウンタにxyhが設定されます(1x 0yの順でもよい)。
どうもありがとうございます。
I/O ポートですが、0x80 は Rx/Tx データの入出力用のポートのため、通常状態では使用できません。0x81 は 8251 の制御用の設定ポートです。
RS232Cボードを動かす(4) で挙げた回路では、その辺りを考慮して設計しているつもりです。一応、(1〜16)×2分周か、(1〜16)×13分周を選択できるようになっています(そのはず)。
ttps://box.yahoo.co.jp/guest/viewer?sid=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&uniqid=fed993d7-0d01-4f0d-b888-698e63d84f1d&viewtype=detail#vt=public&lf=list&ls=1&lm=20&il=1&du=fed993d7-0d01-4f0d-b888-698e63d84f1d&ds=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001&tu=fed993d7-0d01-4f0d-b888-698e63d84f1d&ts=box-l-oyhmswl4umt5bh7j6jsjlioiky-1001
よく考えたらそうですよね。両方ともダメと。
> OUT 81H,52H ; 8251 のリセット
> OUT 80H,xxx ; ボーレートの設定
> OUT 81H,4FH ; 8251 の動作モードの設定(スタートビットやパリティなどの設定)
ここがポイントですね