前提・実現したいこと
PICを使って(型番:pic16f18313)を使って、規定時間内(およそ0.2秒)にロータリーエンコーダから出されるパルス波が何個あったかを計測するシステムを作っています。その際に
タイマ0(T0CKI)でパルス波の数を検出
タイマ1で規定時間を生成
したいと思っています。
発生している問題・エラーメッセージ
MPLAB X IDEのアプリ内にあるデバッグ機能を使っても、以下のコードのwhileで止まってしまい、TMR1による割り込みが発生しません。
設定したこと
・システムクロックとして、内部クロックのLFINTOSCを採用、Clock Dividerを512に設定し、システムクロックは60.55Hzになっている
・TMR0のクロックソースはT0CKIである。
・TMR1のクロックソースはLFINTOSC,プリスケーラは1:1に設定。システムクロックと同期はさせず、200msごとに割り込みを起こさせようとしている(割り込み処理の内容は下記のコードのTMR1_Interruptの通り)
#include "mcc_generated_files/mcc.h" #include <stdio.h> void TMR1_Interrupt(void); uint16_t count, hoge; /* Main application */ void main(void) { // initialize the device SYSTEM_Initialize(); TMR1_SetInterruptHandler(TMR1_Interrupt); // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits // Use the following macros to: // Enable the Global Interrupts INTERRUPT_GlobalInterruptEnable(); // Enable the Peripheral Interrupts INTERRUPT_PeripheralInterruptEnable(); // Disable the Global Interrupts //INTERRUPT_GlobalInterruptDisable(); // Disable the Peripheral Interrupts //INTERRUPT_PeripheralInterruptDisable(); while (1) { } } void TMR1_Interrupt(void) { count = 0; count = TMR0_ReadTimer();//パルスカウンターを読み込む printf("\r\ncount = %d", count);//カウンターの出力 TMR0_WriteTimer(0);//パルスカウンターを0にリセット hoge = TMR0_ReadTimer();//デバッグ用 hoge = 11;//デバッグ用 } ```C ソースコード
試したこと
システムクロック、タイマのクロック源をいじくってみましたがうまくいきませんでした。
解答の方、どうか、よろしくお願いいたします。