18F14k50(割り込みの設定)e-work
割り込みについて
プログラムで利用する割り込みとは、その名の通り通常のプログラムの実行中に割り込んで別の処理をさせるときに使います。利用目的としては、通常の処理中に、ある条件が発生した時、すぐにその処理をさせたいというようなタイミングを作りたい時に使います。
RCONレジスタ
RCONレジスタには、リセットやスリープモードからのウェイクアップの原因を判断するために使用するフラグビットを格納します。今回の利用方法では、割り込みの優先順値を有効か無効にする程度で利用しています。
RCONbits.IPEN
INTCONレジスタ
各種割り込みの許可、優先度やフラグビットを格納する読み書き可能なレジスタです。
P69を参照
PIE1レジスタ
PIEレジスタには、各種周辺割り込みのレジスタが用意されています。今回は、タイマー1を利用しているので0ビット目を許可する必要があります。タイマー2については、1ビットを1にする必要があります。
PIR1レジスタ
PIR レジスタには、各種周辺割り込みのフラグビットを格納します。ここは、ソフトウェアで1を0に変更しないと割り込み処理がとまるため、必ず処理のプログラムを入れるようにしましょう。
プログラム
今回のプログラムは、5.46ms×3=16.38msごとにONとOFFを繰り返すプログラムとなっています。波形は、16.6msなので、ほぼプログラム通りに動作しているといえるでしょう。
#include <xc.h>
#define _XTAL_FREQ 48000000
int g_TimeCnt = 0;
void interrupt InterTimer(void){
if(PIR1bits.TMR1IF){ //Timer1からの割込みを確認
//TMR1H = 0xFF;
//TMR1L = 0xEE;
PIR1bits.TMR1IF = 0; // 割込みフラッグをクリア
g_TimeCnt++;//functionの時間計測で使用
}
}
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」
//Timer1 設定 前回の記事と同じ設定(5.46msごとに1カウント)
T1CON = 0b10000001;
//データシートP76 IPR1レジスタ:割り込み優先度の設定
IPR1bits.TMR1IP = 1; // Timer 1 からの割込みを高優先に設定
//データシートP72 PIR1レジスタ:オーバーフローフラグクリア
PIR1bits.TMR1IF = 0; // Timer 1 からの割込みフラッグをクリア
//データシートP74 PIEレジスタ:オーバーフロー割り込み許可
PIE1bits.TMR1IE = 1; // Timer 1 からの割込みを許可
//割り込み 全体許可
RCONbits.IPEN = 1; //多重割り込み許可 P78
INTCONbits.GIEH=1; // 高優先割込みを許可
INTCONbits.GIEL=0; // 低優先割込みを許可
while(1){
while(1){
if(g_TimeCnt>2){
g_TimeCnt = 0;
LATCbits.LC1 = !LATCbits.LC1;
}
}
}
return;
}
まとめ
割り込みは、マイコンの基本です。マイコンで何かを作成する時には、必ずこの割り込み処理を行います。基本プログラムを記載してあるため、どのような設定が必要かをしっかりと学びましょう。
I sriously love your site.. Veery nice colors & theme.
Did you crerate this website yourself? Please reeply bacxk
as I'm attepting tto crrate my own persxonal websute aand wpuld love too fnd ouut where yoou got this frolm oor whast tthe theme iss
named. Kudos!
Thank you very much.
I will continue efforts to make the website