你好:
我在CCS環境下用使用MSP430F5338開發自己的設計的板子
程式如下,其中WDTCNTCL預設定Watchdog timer counter clear,bit3應該為1, 但在debug的Registers顯示bit3始終為0 (下圖右下角顯示)
WDTCTL =WDTPW+WDTCNTCL;
_EINT();
請問是什麼原因讓WDTCNTCL無法動作?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好:
我在CCS環境下用使用MSP430F5338開發自己的設計的板子
程式如下,其中WDTCNTCL預設定Watchdog timer counter clear,bit3應該為1, 但在debug的Registers顯示bit3始終為0 (下圖右下角顯示)
WDTCTL =WDTPW+WDTCNTCL;
_EINT();
請問是什麼原因讓WDTCNTCL無法動作?
以下3個問題再麻煩你:
1. 我已執行WDTCTL =WDTPW+WDTCNTCL;
其中WDTPW這個指令是高字節的0x5Ah已經可以進行操做修改後面欲控制的WDTCNTCL,
WDTCNTCL在單部執行應該會改變為1,但我不論是否有寫WDTCNTCL這個指令,
CCS單步執行的圖右下角WDTCNTCL始終為0,
請問我要如何確定WDTCNTCL有動作了? 為何無法修改WDTCNTCL?
2. 是否在沒有執行WDTCNTCL(餵狗)才會跳到中斷#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
若已執行WDTCNTCL(餵狗)將不會跳到watchdog的中斷?
3. 麻煩你提供一個watchdog範例,在沒有執行WDTCNTCL(餵狗)時會跳到__interrupt void watchdog_timer(void)
當程式執行到WDTCNTCL(餵狗)將清除watchdog,程式不會跳到__interrupt void watchdog_timer(void)執行
如之前所说
WDTCTL |= WDTPW + WDTCNTCL;
WDTPW位读出来是0x69,而需要写入的是0x5A,实际上0x69|0x5A=0x7B,这就造成了在喂狗的时候,密码错误造成单片机重启
而WDTCNTCL reset的默认值是0,并且 WDTCNTCL is automatically reset.
清零完成之后WDTCNTCL会自动复位为0,所以CCS看到的是0