緑の中に

緑の中に
国立天文台

10/24/2021

伝送スピードの高速化

                 伝送スピードの高速化

Data loggerの現在のボーレートは2400bpsです。

このボーレートを9600bpsで送信するように、ハードおよびソフトを変更しています。

PIC12F675において、外部発振子(コンデンサー内臓セラミック発振子)8MHzを取り付けました。

PIC12F675においては内部発振子が存在しており,その最高振動数が4MHzです。そこで、伝送スピードを上げるにはシステムクロックの振動数さらに上げてあげる必要があります。

そこで、外部発振子を取り付けて対応します。PIC12F675の2pin,3pinに取り付けます。

発振子には3本端子がありますが、左から数えて2番目の端子はGNDへ接続します。1番目と3番目の端子をPIC12F675の2番、3番へ接続しました。

以下、プログラムの関連する部分を抜き書きしました。


-----------  関連するプログラムの部分 -------外部振動子の使用---


// CONFIG

#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN)

#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = ON       // Power-Up Timer Enable bit (PWRT enabled)

#pragma config MCLRE = OFF      // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)

#pragma config BOREN = ON       // Brown-out Detect Enable bit (BOD enabled)

#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)

#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

 

------------ 関連するプログラムの部分 --- 外部振動子8MHz ------------

#define _XTAL_FREQ 8000000    //



--------- 関連するプログラムの部分 ----- 時間タイミング -------------------

void func (unsigned short  tx_byte ) //  [型] 関数名 ([型と仮引数並び])

{

int i; //関数内変数の宣言


    GPIO2=1;   // スタートビット   


__delay_ms(10);


    GPIO2=0;    // スタートビット 

 

for (i=0;i<10;i++){     //1ビット分のスターとビットと2ビット分のストップビット 合計10ビット分。?

    

__delay_us(85);  

                    //★ __delay_us(345); を変更する-> __delay_us(85); ◎  TeraTerm 9600で 0000-A  0000-A  0000-A

 

     GPIO2=(tx_byte & 0x01);     //<5p> データビット  &はビットのAND .これにより0ビット目だけを取出している

     

tx_byte>>=1;     //tx_byte の内容を1ビット右へシフト。次のビットを送る準備

tx_byte  |=  0x80;     //ストップビットを作っておく。 ORしてtx_byte に書く。都度,8bitを”1”に入れ換える。

 

}

--------------------------------------------------------------------------

///////////////////////////// 確認方法 /////////////////////////

受信ターミナルソフト Tera Termを起動して、受信します。

このとき、Tera Termに  設定-->シリアルポート-->スピード  とあります。

スピードを2400から9600へセットします。

これにより、意図する受信が確認できればまずはOKです。

PIC12F675のプログラムでは、A/D変換はまだ行わないようにしています。

数値として4桁の「0000」を送信します。よって、受信プログラムでこの数値が再現されれば伝送スピードに同期したと考えます。もっと、シビアな確認方法も現在検討中です。

0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A  0000-A

Tera Termの画面をCopyしました。