[戻る]
一括表示

スリープ時のタイマー1の動作 投稿者:sontonsan 投稿日:2018/03/29(Thu) 08:19:32 No.1132

内部オシレーター LFINTOSC の使い方が判らず教えてください。
スリープ時もカウントして欲しいと考え作りました、ものを添付いたします。
スリープ部はまだかんせいしておりませんがよろしくお願いいたします。
//Timer1設定 
//基本設定OSCCON = 0b01101010;// 内部オシレーター 4MHz
T1CONbits.TMR1CS = 0b11;//
T1CONbits.T1CKPS = 0b00;//
T1CONbits.nT1SYNC = 0;//
T1CONbits.T1OSCEN = 1;
PIR1bits.TMR1IF = 0;
T1GCONbits.TMR1GE = 1;
TMR1H = 0x00;
TMR1L = 0x00;
PIE1bits.TMR1IE = 1;//Timer1割り込み許可
T1CONbits.TMR1ON = 1;//Timer1 スタート

//割り込み許可部
INTCONbits.PEIE = 1;//周辺割り込み許可
INTCONbits.GIE = 1;//全体割り込み許可

//
//割り込み関数
void interrupt ISR(void)
{
//1番
if (INTCONbits.IOCIF == 1){//状態変化割り込み判定
//
if (IOCBFbits.IOCBF5 == 1){//RB5の状態変化割り込み判定
__delay_ms(20);//チャタリング回避
if (PORTBbits.RB5 == 1){
// ボタンが離されたら先に進む(チャタリング防止)
__delay_ms(20);
while(PORTBbits.RB1 == 0);
__delay_ms(20);
//
IOCBFbits.IOCBF5 = 0;//状態変化割り込みポートクリアー
//LCDによる値確認
FAN_POWER = 0;//fan停止
LCD1602_POWER_ON();//LCD1602電源投入
led_chk^ = 1;
__delay_ms(5000);
LCD1602_POWER_OFF();//LCD1602電源遮断
}
}
INTCONbits.IOCIF = 0;//状態変化割り込みフラグクリアー
}
//1番終了
//
//2番手
if (PIR1bits.TMR1IF == 1){//Timer1割り込み判定
PIR1bits.TMR1IF = 0;//割り込みを初期化
TMR1H = 0x68;//再セット 10秒
TMR1L = 0xA2;
led_chk^ = 1;
}
//2番手終了
}

スリープ時のタイマー1の動作 投稿者:sontonsan 投稿日:2018/03/29(Thu) 21:29:55 No.1134

追記
PIC16F1938を利用しDHT22を1時間おきに起動させ、その時の温度を考慮しFANを稼動できないか考え中です。
外付け部品を少なくする目的で、容量検知オシレータ設定の方法をお願いいたします。

- WebForum -