0
我添加了一個外部32KHz晶振,與Timer1一起用作PIC18F87J11上的實時時鐘。一切正常,Timer1即使在睡眠模式下也能夠增加。但是,我注意到在每個中斷週期後,MicroController都會喚醒。我的最終目標是降低功耗,同時能夠準確地跟蹤時間。我知道它只醒來不到一秒鐘,但是有沒有辦法阻止它醒來,除非我想要它,並且仍然能夠跟蹤時間?我基本上想讓微控制器保持睡眠模式幾個小時,然後醒來做些事情,然後回去睡覺。Time1中斷喚醒單片機睡眠
這些都是我的定時器1設置:
// Timer 1 Settings
RCONbits.IPEN = 1; // Enable interrupt system priority feature
INTCONbits.GIEL = 1; // Enable low priority interrupts
// 1:1 Prescale value
T1CONbits.T1CKPS1 = 0;
T1CONbits.T1CKPS0 = 0;
T1CONbits.RD16 = 1; // Enables register read/write of TImer1 in one 16-bit operation
T1CONbits.T1RUN = 1; // Device clock is derived from Timer1 oscillator
T1CONbits.T1OSCEN = 1; // Timer1 oscillator is enabled
T1CONbits.TMR1CS =1; // Use Internal Clock
T1CONbits.T1SYNC =1; // Do not synchronize external clock input
PIE1bits.TMR1IE = 1;
IPR1bits.TMR1IP = 0; // Timer 1 -> Low priority interrupt group
PIE1bits.TMR1IE = 1; // Enable Timer1 interrupt
// To get 1 second interrut period
TMR1H = 0x80 ; // preset for timer1 MSB register
TMR1L = 0x00 ; // preset for timer1 LSB register
// Enable Timer 1
T1CONbits.TMR1ON = 1;
我可以設置的最長中斷週期約爲16秒,不是我想要的。那麼從我的理解中,它必須喚醒每個時期的中斷? – Ammar 2014-09-09 02:44:06
是的。不過,不要擔心,它只需要一小段時間就能醒來,然後直接睡覺。 – DiBosco 2014-09-09 09:12:59