2018.08.02
MPLAB v4.20
タイマー割り込み備忘録
内部クロック利用時の設定について。
1.内部クロック利用時に使えるタイマーのクロックはFOSC/4、HFINTOSC、LFINTOSCのいずれか。
2.割り込みのタイミングについて。
例えば、下図TIMER0のRequested Period は16.384ms以上となっているが、16.384msと設定してもTimer0は動作しない。
RegistersタブにあるTIMER0Hの値が1以上になっていないとダメ。
TIMERについてはEasySetupだけじゃダメでRegistartsタブのTMR0Hも確認する必要があるのは罠としか思えない。。。
参考プログラム #include "mcc_generated_files/mcc.h" void DelayMs(int dlyms){ while(dlyms--) __delay_ms(1); } bool m_bLED_ON=false; //TIMER0割り込み処理 void TMR0_Handler(void){ if(m_bLED_ON){ m_bLED_ON=false; LATCbits.LATC3=0;//LED OFF }else{ m_bLED_ON=true; LATCbits.LATC3=1;//LED ON } } void main(void) { DelayMs(1000); // initialize the device SYSTEM_Initialize(); //TIMER0割り込み関数を設定 TMR0_SetInterruptHandler(TMR0_Handler); // Enable the Global Interrupts INTERRUPT_GlobalInterruptEnable(); // Enable the Peripheral Interrupts INTERRUPT_PeripheralInterruptEnable(); //TIMER0開始 TMR0_StartTimer(); while (1) { } } 最初にプロジェクトを作成した時点ではmain.cはない。 この状態でMCC Generateをするとヘッダ、割り込み開始/停止の関数がインクールドされたmain.cが勝手に作られる。
MPLAB がMCCを導入してかなり簡単にpicのプログラムができるようになったけど、まだまだ知らないと動かない事がありそう。
SEO | [PR] !uO z[y[WJ Cu | ||