Re: 關於Sleep模式
|
||||
---|---|---|---|---|
中級會員
|
感謝阪大回覆...
我把那段code直接用Programmer Mode 燒到PIC去run LCD數值還是會一直更新..... 表示他while迴圈一直再run...沒進入到sleep模式... 問題還是存在~_~
發表於: 2008/2/19 15:06
|
|||
|
Re: 關於Sleep模式
|
||||
---|---|---|---|---|
版主
|
使用 ICD2 除錯時無法支援 Sleep 功能,請改用 Programmer Mode 或使用 MPLAB SIM 的方式測試 Sleep 功能。
ICD2 不支援 WDT & Sleep 功能。
發表於: 2008/2/19 15:03
|
|||
|
Re: 關於Sleep模式
|
||||
---|---|---|---|---|
中級會員
|
我有利用一個I/O腳接了一個溫度感測器
LCD的值是經由這溫度感測器來的... 我把他寫在while裡面...讓他一直去scan溫度 然後print在LCD... 但是我再while的最後一行已經加了一個Sleep() 可是好像沒用....我利用Debug模式.... 設中斷點...發現一到Sleep();後 馬上又跳回到while的第一行...... PS.沒有設其他中斷...程式大概就這樣...蠻單純的... 補上我的設定值 #pragma config OSC =INTIO67 //Oscillator Selection bits #pragma config FCMEN=OFF //Fail-Safe Clock Monitor Enable bit #pragma config IESO =OFF //Internal/External Oscillator Switchover bit #pragma config PWRT =OFF //Power-up Timer Enable bit #pragma config BOREN=OFF //Brown-out Reset Enable bits #pragma config WDT =OFF //Watchdog Timer Enable bit #pragma config DEBUG=OFF //Background Debugger Enable bit #pragma config XINST=OFF //Extended Instruction Set Enable bit WDT一開始就關掉了...
發表於: 2008/2/19 11:56
|
|||
|
Re: 關於Sleep模式
|
||||
---|---|---|---|---|
版主
|
LCD2 的數值在 Sleep 下還是會更新? 請問 LCD 的值是哪個周邊所產生的,還有其他的中斷在動作嗎?
發表於: 2008/2/19 11:47
|
|||
|
Re: 關於Sleep模式
|
||||
---|---|---|---|---|
中級會員
|
謝謝R大的回覆...
小弟目前照板大的作法....遇到了一些問題... 我在主程式裡加了 Sleep(); 不過程式沒睡著...LCD還是會一直有數值跑出來.. 且數值會一直更新..所以應該沒進入Sleep模式.... 現在我是把它拆成兩部份...暫時不加入Timer1... 單純先讓程式入進sleep模式....不喚醒... 程式main架構是 void main() { ..............(一些宣告,省略不打) while(1) { ............(一些運算,並將結果print到LCD,省略不打) Sleep(); } } 上面作法就是print到LCD後進入sleep mode 這時LCD數值應該不會再跳動和更新... 可是LCD的數值還是一直跳動且更新... 是不是那邊暫存器還要做設定? 另外使用Sleep();時,需要先include那各.h檔嗎? 目前用的PIC為18F6490 使用的主振盪器為內部震盪器31.25k
發表於: 2008/2/19 11:18
|
|||
|
Re: 關於Sleep模式
|
||||
---|---|---|---|---|
版主
|
1. 使用 Timer1 外接 32768Hz 震盪時要設定成非同步模式才可以讓 Timer1 在 SLEEP Mode 下喚醒 PIC。
2. 將 Timer1 的預除器設為二,Timer1的計數值設為32767這樣每兩秒就可以喚醒PIC一次。 3. 如果 PIC 被喚醒,如有開啟中斷 T1IE=1 的話,程式就會跳到Timer1的中斷去執行;如果沒設中斷則換醒後就執行 Sleep 指令的下一個指令。
發表於: 2008/2/18 19:53
|
|||
|
關於Sleep模式
|
||||
---|---|---|---|---|
中級會員
|
請問一下各位高手前輩...
我想讓程式在run了某一段code後...進入休眠模式... 就是說我這段code跑完再加個sleep()就行了對吧... 但是問題來了....我要怎再把它喚醒... 並在重複run這段code再進入休眠... 目前接了一個Timer1的外部震盪器....看書上說是要用T1產生中斷來喚醒... 可是上面說T1只有發生溢位時(0xFFFF變0x0000)才會發生中斷.... 那我不就只能讓她發生溢位才能喚醒程式? 不能讓我設定說比如2秒發生中斷...然後喚醒PIC去run一次程式嗎? 如果可以是否有詳細的基本Sleep範例可以考... 書上都沒有範例..只有大概介紹... 看data sheet也沒講的很清楚.... 不知道如何著手...
發表於: 2008/2/18 15:50
|
|||
|