Re: PIC18F45K20的IDLE模式用法
|
||||
---|---|---|---|---|
新會員
|
我找到問題點了!
原來我為了把PORTE設為INPUT,因而把TRISE放入0XFF,但這樣會把PORTD變成Parallel Slave Port mode,以致於在PORTD的電源偵測PIN無作用,修正後功能就正常了。 現在正在為秏電流傷腦經,因為IDLE時電流有27uA,比SPEC內容大很多..........
發表於: 2009/6/26 18:20
|
|||
|
Re: PIC18F45K20的IDLE模式用法
|
||||
---|---|---|---|---|
版主
|
妳所使用的是 IDEL 模式,這樣週邊在 Sleep Mode 時還是匯聚續執行的,要達最省模式請將 IDLEN 設為 0。
你的電池電壓實際供電給 PIC 是幾伏? 感覺好像是外部的震盪沒起來或起震時間太久。 可以試將 SCS 由 Timer1 32768Hz 改為 Internal RC 震盪看看 : SCS<1:0>: System Clock Select bits 1x = Internal oscillator block
發表於: 2009/6/25 10:48
|
|||
|
Re: PIC18F45K20的IDLE模式用法
|
||||
---|---|---|---|---|
新會員
|
SORRY, 我再解釋清楚一點:
程式中設定 BSF OSCCON,7 => OSCCON<IDLEN> BCF OSCCON,1 =>SCS<1:0> BSF OSCCON,0 所以省電模式設定是 SEC_IDLE : Secondary – Timer1 Oscillator POWER_OFF=>電源偵測腳位 電路上有一電池在外部電源斷電時供給mcu,當偵測到外部電源斷電時就會執行sleep指令。 而timer1是每一秒中斷一次,所以執行sleep指令後一秒會醒來,此時執行完中斷副程式後再偵測一次外部電源是否供電,若尚未供電,則再次執行sleep,依此方式循環。 不知這樣是否清楚?
發表於: 2009/6/24 16:55
|
|||
|
Re: PIC18F45K20的IDLE模式用法
|
||||
---|---|---|---|---|
版主
|
不是很請楚你的問題描速。
PIC18F45K20 有三種模式: ‧ Run modes -- CPU 在一般模式下執行程式。 ‧ Idle modes -- CPU core 停止執行程式,周邊接受 system clock 繼續執行週邊功能,可隨時喚醒 MCU 來執行程式。 ‧ Sleep mode -- System Clock 停止震盪,CPU 進入最最省電模式,最低可達 100nA 看你的說明一下 Sleep 一下IDLE,要知道PIC18 進入省電模式都是執行 SLEEP 指令的,但要進入SLEEP or IDLE Mode 是要看 : OSCCON<IDLEN>位元的設定的:
IDLEN: Idle Enable bit
還有妳使用外部的 32768Hz Crystal 在Timer1 or Timer3 時,因為進入 Sleep Mode, system clock 會停下來所以在Timer 的設定要使用非同步計數模式 : T1SYNC: Timer1 External Clock Input Synchronization Control bit = 1 參照: 但若是偵測到尚未插電而繼續執行SLEEP的話,就會發生醒不過來的狀況 何為"尚未插電而繼續執行SLEEP" 這段話看不懂?
發表於: 2009/6/23 10:06
|
|||
|
PIC18F45K20的IDLE模式用法
|
||||
---|---|---|---|---|
新會員
|
各位高手,
我遇到一個問題解決不了,目前我是用PIC18F45K20,程式中有時鐘計時功能,在斷電時電路上也有電池供電,我預先構想是斷電後進入IDLE模式,再利用RTC 中斷喚醒計時,RTC是1秒產生一次中斷。 RTC頻率來源是第二組CRYSTAL(32.768K),原本計時功能都正常,但發現進入IDLE模式後,若只執行一次SLEEP指令,MCU會正常醒來,但若是偵測到尚未插電而繼續執行SLEEP的話,就會發生醒不過來的狀況,程式如下面內容。 想請教可能發生的原因及解決方法,感謝~ ; MOVLW 80H ; PRELOAD TMR1 REGISTER PAIR ; MOVWF TMR1H ; FOR 1 SECOND OVERFLOW ; CLRF TMR1L ; MOVLW B'00001111' ; CONFIGURE FOR EXTERNAL CLOCK, ; MOVWF T1CON ; ASYNCHRONOUS OPERATION, EXTERNAL OSCILLATOR ; BSF PIE1,TMR1IE ; ENABLE TIMER1 INTERRUPT ;...................................... ;拔電後,剩下電池供電並執行下列程式 ;...................................... CUT_POWER: BSF OSCCON,7 BCF OSCCON,1 BSF OSCCON,0 NOP NOP CUT_POWER_N: SLEEP NOP NOP NOP NOP BTFSC POWER_OFF ;POWER_OFF=>電源偵測腳位,為LOW表示有插電源 BRA CUT_POWER_N NOP NOP NOP NOP BTFSC POWER_OFF ;POWER_OFF=>電源偵測腳位,為LOW表示有插電源 BRA CUT_POWER_N BCF OSCCON,1 BCF OSCCON,0 CKI: BTFSS OSCCON,3 BRA CKI RETURN
發表於: 2009/6/21 0:37
|
|||
|