タイマー1/3/5

PIC18F46K22ではTimer1/3/5が同様に使用できる。
PIC18F14K50ではTimer1/3が同様に使用できる。
カウントレジスタ:16bitアップカウント
PIC18F46K22はクロック源:FOSC/4及びFOSC及び外部クロックピンまたはCPUクロックとは独立した水晶振動子用の内臓クロック発振回路を選択可能
PIC18F14K50はクロック源:FOSC/4及び外部クロックピンまたはCPUクロックとは独立した水晶振動子用の内臓クロック発振回路を選択可能
CPUのクロックとして使用可能。またはCPUと独立した水晶振動子用の発振回路を内臓
カウント値がオーバーフローすると割り込み発生可能
プリスケーラ: 2 4 8
カウント値はTMR1L,TMR1Hレジスタに書き込むことにより設定
スリープモード時もカウント動作可能
カウント値を0~0xffff以外で周期動作させるにはオーバーフロー発生時にカウント値をソフトウェアで設定する必要がある。
OpenTimer1はTCON1とTGCON1の設定を行う。なおTimer1は拡張周辺機器なので割り込みを有効にするためにINTCONのPEIEを1にしなければならない。
PIC18F46K22にはゲート機能がある。ゲート機能とはクロックの入力を他のカウンタや外部信号により有効か無効かを制御できる機能である。
CCPモジュールによりカウント値と値が一致した場合にカウンタをクリアし割り込みを発生させることができる。この機能によりソフトウェアでカウンタ値を設定せずに自動的に機能の周期で割り込みを発生することができる。また値が一致した時に外部ピンにHまたはLまたは反転等を出力できる。反転を使用すればデューティ50%の方形波を出力できる。
CCPモジュールとの併用によりAD変換器の変換トリガとして使用できる。(使えるモジュールは限定されている)

クロックよりTMRxL,TMRxHレジスタの設定値の計算

JavascriptによりTMRxレジスタの値により任意の周波数で周期割り込みを発生させる場合の設定例を計算する
CLK=MHz
周波数(F)=Hz

プリスケーラ(p)1248
目標周波数
f=1/t
目標分周比
d=CLK/f
分周比(dp=d/p)
8bit/16bit
TMR計算式
TMR1L
TMR1H
TMR1H:TMR1L
出力周波数
誤差(%)

タイマー設定例(入力条件よりXC8向けソースを表示)

条件入力

Timer=
CLK=MHz(FOSC/4)
TMRx=
プリスケーラ
クロック同期 オシレータを有効 ゲート機能をサポートしているPIC
 クロック源選択(FOSCはPICによってサポート状況が異なる)
FOSC/4 オシレータ回路/外部 FOSC

XC8 Cコンパイラ向けのサンプルソース