nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

PIC12F675 ソフトUART 

ずぼらをして出来合いのルーチン借りてきて作ろうとしているのがまずのかもしれません。まだPICマイコンさんとかコンパイラさんの仕様とか癖がわからないのも一因かな。・・と愚痴前置きはこれぐらいで。
何をやりたいのかですが、
1.とりあえず2400ボーなので417μ秒単位でASCIIコードのビットを送り出したい。
2.受信はスタートビットのリーディングエッジで受信モードに入り、417/2の208μ秒でサンプリング、その後417μ秒単位で8ビットをサンプリングしてASCIIコードにしたいということになります。
HITTEC社からおまけのシリアル.シーに入っているプッチャゲッチャのタイミングがどうなっているかを見てみることにします。











項目



計算






               ボーレート→
4MHz
発振


とする 

単位


2400 9600 ボー
1 ビットタイム BIT=1000000/(BAUDT RATE)  μS 416.7 104.2 μS
2 マシンサイクル

スウ


MC=BIT/(MHz/
発振
ハッシン



周波数
シュウハスウ


/4) サイクル
417 104 サイクル
3 ITIME ITIME=4*SCALER/XTAL 10 10  
4 DLY 3 1250 312.5 μS
5 TX_OHEAD 13 5417 1354 μS
6 RX_OHEAD 12 5000 1250 μS
7 putch dly dly=(((SCALER/BRATE)-(TX_OHEAD*ITIME))/DLY*ITIME)) 135 30  
8 getch dly start dly=(((SCALER/BRATE)-(3*ITIME))/DLY*ITIME))/2 69 17  
9 getch dly loop dly=(((SCALER/BRATE)-(RX_OHEAD*ITIME))/DLY*ITIME)) 135 31  

                                               
図 BIT-BANGINGデバッグ
計算書



ということでコンパイラが3インストラクション+若干オーバーヘッドでループしているかどうかで調べないとね。・・・れれれ、何でふぉんとがちいさくなるんだろー・・・。