0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ボーレートジェネレート

Last updated at Posted at 2024-11-20

8080やZ80で使われていたシリアル通信用のチップの8251はボーレートに合わせたクロックが必要です。

クロックは1倍、16倍、64倍のいずれかです。

たとえば9600の通信の通信の場合、9600,153.6K,614.4kのいずれかになります。16倍がよく使われます。

このクロックは以下の方法で作ります。

  • 専用のクロックチップを使う
  • CPUクロックを分周する
  • 74HC4060に水晶をつけて作る
  • PICなどのマイコンで作る

最近はシリアルはUSBのCDCで変換して使うことが多いです。

PIC16F1455はCDCが実装でき、他の機能を付けることも出来ます。これで作ってみます。

CDCのコードはこちらのページのコードを利用させてもらいました。

PICでクロックを発生させるにはPWMを使うのが良さそうです。PWMについては以下のページが参考になりました。

タイマーや割り込みを使って、ソフトウエアでクロック出力を作る事もできますが、USBの処理に干渉する可能性もあり、ハードで処理するPWMが一般的なのかと思われます。

TRISCのRC3を出力にして初期化に以下を追加します。

    T2CON = 0b00000100;
    PR2 = 0x4d;
    PWM2CON = 0b11000000;
    PWM2DCH = 0x20;

RC3の出力は以下のようになりました。

IMG_20241120_082450.jpg

誤差は1%以下です。

Z80を6MHzで動かすつもりなので、8251にはクロックをそのままは入れられないので、8251のCLKもPICで作ってみます。TRISAのRA4をOUTにして、

   CLKRCON = 0xd4;

image.png

を設定すると、CLKRのRA4から3MHzが出力されます。48MHzの16分周です。

PIC16F1455には他にCLKOUTの機能もあり、これを使うと12MHzが出力されます。

すでに同じようにやっている方がいるようです。

組み立ててみて、残念ながらうまく動作しません。気長に調べるつもりです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?