18F14k50(タイマー0の設定)e-work - E-Work Education

PIRO4DによるPixabayからの画像

タイマー0について

 18F14K50は、タイマーが4つあります。タイマー0からタイマー3です。今回は、タイマー0の設定について記載していきます。機能が一部異なるだけで基本的に動作は

タイマー0の特徴

 下記の特徴があります。設定することで下記の仕様を利用することができます。T0CON レジスタで設定することが可能です。

• 8/16 ビットモードのタイマまたはカウンタ動作をソフトウェアによって選択可能
• 読み書き可能なレジスタ
• 選択可能なクロック源 ( 内部または外部 )
• 専用の 8 ビット ソフトウェア プログラマブルプリスケーラ

T0CON レジスタ

各ビットの説明は、下記のとおりです。データシートは、101ページに記載してあります。PIC18F14K50は、8ビットマイコンのため16ビットを扱えるといっても、8ビットをずつ2つに分けて制御しています。24Fシリーズから16ビットになるため、下図のような工夫をして16ビットの動作をしています。

 TMR0ON: Timer0 ON/OFF 制御ビット
 T08BIT: Timer0 8 ビット /16 ビット制御ビット
 T0CS: Timer0 クロック源選択ビット
 T0SE: Timer0 ソースエッジ選択ビット
 PSA: Timer0 プリスケーラ割り当てビット
 T0PS<2:0>: Timer0 プリスケーラ選択ビット

INTCONレジスタ

 INTCON は、各種割り込みの許可、優先度、フラグビットを格納する読み書き可能なレジスタです。タイマー0では、bit2である「TMR0IF」のフラグを確認するプログラムとなります。

計算方法

 1命令の計算方法
  <条件>48MHz 16ビット 内部クロック LOW→High プリスケールON プリスケーラ4

 PICマイコンは、4クロックで1命令になります。したがって、48÷4=12MHzのスピードで動作していることになります。

  1命令の時間:1÷12MHz=8.33333e-8(秒)
 
 プリスケーラは、設定分命令されると1回動作するものです。ゆえに、
 
  プリスケーラを含む1命令の時間:8.33333e-8 × 4 = 3.33333e-7(秒)

 16ビットは2の16乗で計算できるため、65536となる。オーバーフローするには、さきの65536回処理するとフラグが立ちます。

  1回の時間:3.33333e-7(秒)×65536 = 0.02184(秒) = 21.84(ミリ秒)

 下図は、動作させたときの波形になります。計算通り、21.84(ミリ秒)となっています。


  

プログラム

#include <xc.h>
#define _XTAL_FREQ 48000000

void main(void) {
//ポートセット 出力のみであれば、全て『0』を設定する
    TRISA = 0b00000000;          //LEDの接続されているポートを出力に設定
    TRISB = 0b00000000;          //LEDの接続されているポートを出力に設定
    TRISC = 0b00000000;          //LEDの接続されているポートを出力に設定
     
    LATA = 0;                    //PortAのすべてのビットを「0」
    LATB = 0;                    //PortBのすべてのビットを「0」
    LATC = 0;                    //PortCのすべてのビットを「0」 
//Timer0 設定 TimerON 16ビット 内部クロック LOW→High プリスケールON ぷり4
//P101に詳細
//P69にINTCONレジスタ オーバーフローするとbit2が1になる
//65536  833us 
    T0CON = 0b10000001;
    
    while(1){
        while(INTCONbits.TMR0IF == 1){
            INTCONbits.TMR0IF = 0;
            LATCbits.LC1 = !LATCbits.LC1;
            
        }    
    }
    return;
}

まとめ

 タイマーの機能は、マイコンで活用する場合に割り込みで利用することが多いです。今回は、高速のLED点滅(Lチカ)です。動作だけみると高速点灯のため「???」の状態になるかもしれませんが、基本構文を学習するには最適なプログラムだと思います。オシロスコープがあれば、時間を変更しながら色々を学習へつなげていってください。

Follow me!

18F14k50(タイマー0の設定)e-work - E-Work Education” に対して1件のコメントがあります。

コメントを残す

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