SLRCONレジスタ

PIC16F1778のコンフィグをしていたら初めて見る名前のレジスタがありました。

SLew Rate CONtrolレジスタ。その名の通りスルーレートを制御できるレジスタです。

ちなみにスルーレートは波形の立ち上がり、立ち下がり速さのことです。

使ってみよう

各端子一つずつ設定できます。AポートならSLRCONAレジスタで設定します。

1だとスルーレートに制限がかかり、0だと最大速度になります。

デフォルト(リセット後)は1で制限がかかった状態です。

邪魔なのでプログラムは一番下に載せておきます。

波形を重ね合わせて比較してみました。確かになまっていますね。

左が最高速度設定、右が通常速度設定です

スルーレートが低いことのメリット

スルーレートが低い(遅い)ことのデメリットはよく知られていますが、メリットはあまり知られていません。

スルーレートが低いと以下のメリットがあります。

  • デジタル信号の高調波成分が減る
  • オーバーシュートやリンギングが抑制される
  • 応答性の高い電源が必要でなくなる
  • 低速通信の場合ノイズが抑制できる

デフォルトではスルーレートが制限された状態になるので無理に制限を外さないほうが良いかもしれません。

プログラム

#pragma config FOSC = INTOSC    
#pragma config WDTE = OFF   
#pragma config PWRTE = OFF   
#pragma config MCLRE = ON   
#pragma config CP = OFF   
#pragma config BOREN = ON    
#pragma config CLKOUTEN = OFF  
#pragma config IESO = ON  
#pragma config FCMEN = ON   
#pragma config WRT = OFF   
#pragma config PPS1WAY = ON   
#pragma config ZCD = OFF    
#pragma config PLLEN = ON  
#pragma config STVREN = ON    
#pragma config BORV = LO   
#pragma config LPBOR = OFF    
#pragma config LVP = OFF    

#include <xc.h>

#define _XTAL_FREQ  32000000

void main(void) {
    TRISA = 0x00;
    SLRCONA = 0x02;
    while(1){
        PORTA = 0x00;
        __delay_us(0.1);
        PORTA = 0xFF;
        __delay_us(0.1);
    }
    return;
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です