2012年11月03日

RS232Cボードを動かす(5)

  AVR を使ってみました。

  いろいろと調べてかなりいろいろと試したんですが...結論は AVR では無理でした。
  1チップマイコンなので、高速動作が苦手なようです。

  P6 から出力される、4MHz の2.5クロック幅のnCS、nRD、nWR に対して、データを出力する事ができませんでした。

  16MHz動作のAVR なので、10クロック分ぐらいしかないため、かなりきついようです。



  前の書き込みの、ボーレートをS/Wから設定できる回路図は、一部間違いがありました。

  D5 からLS10 に入力している信号がありますが、D6 から入力するのが正解です。

  また、回路を組んだ時に併せて修正します(他に間違いがあるかも知れないので)。


posted by えすび at 08:42| Comment(7) | HW:RS232Cボード | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
分周比ですが、秋月電子で完売したAKI-80ゴールド/シルバーの説明書に載っています。
設定方法は違いますが、参考にはなると思います。
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設定でしたが。
Posted by かかっくん at 2012年11月04日 10:27
>かかっくんさん

 いろいろと検討をありがとうございます。回路は参考にさせて頂きます。

 ただ、今回の前提条件なんですが、

・P6本体には改造を加えない
・既にある RS-232C用のポートを使う
・既存ボードの上位コンパチにする

 です。


 ですので、アドレス線は A0 しか使えないですし、WAIT の挿入は出来ません。A0 しか使えないので、先に挙げている回路はヘンな回路が入っています。

 また、WAIT 挿入が出来れば、AVR でも動作はさせられると思います。

 IC を4つほど追加すれば、WAIT を挿入せずに AVR でも動きそうですが、そこまでして...って感じなので。


Posted by えすび at 2012年11月04日 12:12
載せてから気付きましたが、アドレスはCSとA0しかなかったので凝った事はできません
でした。
カウンタを単純化したものにしました。これで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
Posted by かかっくん at 2012年11月04日 12:55
また考えました。自由に使えるのが8ビットしかないなら4+4ビットとすれば
データ幅が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の順でもよい)。
Posted by かかっくん at 2012年11月04日 15:08
>かかっくんさん

 どうもありがとうございます。

 I/O ポートですが、0x80 は Rx/Tx データの入出力用のポートのため、通常状態では使用できません。0x81 は 8251 の制御用の設定ポートです。

 RS232Cボードを動かす(4) で挙げた回路では、その辺りを考慮して設計しているつもりです。一応、(1〜16)×2分周か、(1〜16)×13分周を選択できるようになっています(そのはず)。



 
Posted by えすび at 2012年11月04日 15:36
カウンタを単純化したものを訂正します。
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
Posted by かかっくん at 2012年11月04日 15:51
> I/O ポートですが、0x80 は Rx/Tx データの入出力用のポートのため、通常状態では使用できません。0x81 は 8251 の制御用の設定ポートです。

よく考えたらそうですよね。両方ともダメと。

> OUT 81H,52H ; 8251 のリセット
> OUT 80H,xxx ; ボーレートの設定
> OUT 81H,4FH ; 8251 の動作モードの設定(スタートビットやパリティなどの設定)

ここがポイントですね
Posted by かかっくん at 2012年11月04日 16:54
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。