Re: 請問要如何設定watchdog
|
||||
---|---|---|---|---|
新會員
|
謝謝前輩的指教,
但是若我想要觀看我設定watchdog的時間,為什麼我在SIM下分別設定成 1._FWDT(WDT_ON & WDTPSA_64 & WDTPSB_16); 與 2._FWDT(WDT_ON & WDTPSA_512 & WDTPSB_16); 其中參考書籍提到 //WDT period =2ms*prescalerA*prescalerB 理論上我1.與2.的清除時間應該會不一樣..為什麼我再MAPLAB下觀察到的時間都是1.2US呢? 而不是分別為2ms*64*16及2ms*512*16的時間呢? 我的震盪器是10MHz,倍8 觀念上有哪裡錯誤嗎?可否請教一下.. 謝謝!
發表於: 2005/1/11 23:15
|
|||
|
Re: 請問要如何設定watchdog
|
||||
---|---|---|---|---|
版主
|
就如 Aaron 所言,在程式裡要清除 Watch-Dog Timer 只要使用巨集還數 Clrwdt ( ) 就可以了。
發表於: 2005/1/10 14:45
|
|||
|
Re: 請問要如何設定watchdog
|
||||
---|---|---|---|---|
高級會員
|
設定好WDT當然要自行清除WDT的計數值囉!在發生溢位之前使用 , 看你設定多長的時間之內 ,
ASM: CLRWDT ; Clear Watchdog Timer or PWRSAV #0 ; Enter SLEEP mode or PWRSAV #1 ; Enter IDLE mode C:使用巨集 #define ClrWdt() {__asm__ volatile ("clrwdt");} #define Sleep() {__asm__ volatile ("pwrsav #0");} #define Idle() {__asm__ volatile ("pwrsav #1");} ClrWdt(); Sleep(); Idle();
發表於: 2005/1/10 11:45
|
|||
|
請問要如何設定watchdog
|
||||
---|---|---|---|---|
新會員
|
如題:
我自己是這樣設定的 _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_16); //Watchdog timer Enabled 這樣就程式就會自己清除watchdog 的旗標嗎? 不需要暫主程式內在撰寫一個watchdog的函式嗎? 為什麼我這樣設定,我的system都會有reset的動作呢? 我參考過相關的dsPIC family reference manaual設定,書中有提到這樣的設定, 1.On any device RESET 2.whan a PWRSAV instruction is execut 3.By a CLRWDT instruction during normal execution 其中PWRSAV與CLRWDT要怎麼在程式中撰寫呢? 程式可以正常判斷ㄇ? 請問有相關的範例程式ㄇ?謝謝
發表於: 2005/1/8 22:58
|
|||
|