英飛凌XC2336 B單片機看門狗編程――基于DAVE2.0平臺
DAVE——數(shù)字應(yīng)用工程師,出自Infineon科技。它能幫我們準確而快速地進行基于Infineon8位、16位或32位單片機的嵌入式系統(tǒng)設(shè)計。由于Infineon的嵌入式為控制器的寄存器的數(shù)量非常大,大約有一千多個。所以對大量寄存器的初始化是一件相當棘手的事,而有了DAVE的平臺就能很輕松地完成這些事情。同時DAVE還可完成單片機的其它初始化工作,與Keil或、Tasking等編譯軟件實現(xiàn)鏈接,輕松完成嵌入式系統(tǒng)的軟件開發(fā)工作。
本文引用地址:http://butianyuan.cn/article/201610/307406.htmXC2336B是Infineon的16位微控制器XC2000家族中的一員,它將功能和性能都得到擴展的C166SV2內(nèi)核、功能強大的片上外設(shè)子系統(tǒng)和各種片上存儲器進行了完美結(jié)合。執(zhí)行速度更快、穩(wěn)定性更好、操作更簡單。
1.1 正常模式
正常模式是應(yīng)用復(fù)位或內(nèi)部應(yīng)用復(fù)位后的缺省模式。只有當執(zhí)行ENWDT指令時,才能從禁用模式進入正常模式。
1.2 禁用模式
對于完全不需要WDT功能的應(yīng)用,可采用禁用模式。執(zhí)行指令DISWDT進入禁用模式:若CPUCON1.WDTCTL=0,在初始化結(jié)束前執(zhí)行該指令;若CPUCON1.WDTCTL=1,可在任意時刻執(zhí)行該指令。
1.3 預(yù)警模式
檢測到看門狗錯誤時,始終進入預(yù)警模式。若正常模式下定時器溢出,則進入預(yù)警模式。此時,WDT不會立即請求對芯片復(fù)位,它會首先發(fā)送預(yù)警輸出,確保系統(tǒng)在復(fù)位之前進入安全的狀態(tài)。接收到預(yù)警信號后,CPU和系統(tǒng)完成當前掛起的操作請求,不產(chǎn)生新的操作請求。通過中斷告知CPU出現(xiàn)預(yù)警,CPU可通過寄存器INTSTAT識別WDT預(yù)警中斷。完成所有掛起的操作后,在復(fù)位之前CPU應(yīng)執(zhí)行IDLE指令以終止所有進一步的操作。
1.4 恒復(fù)位
如果看門狗引發(fā)兩次復(fù)位(應(yīng)用或內(nèi)部應(yīng)用復(fù)位),則認為出現(xiàn)了嚴重的系統(tǒng)故障,XC2336B保持由RSTCON1.WDT配置的復(fù)位狀態(tài),直至發(fā)生上電復(fù)位。例如,當器件和外部存儲器的連接丟失,以致于無法完成系統(tǒng)初始化時,器件會被周期性復(fù)位。這種雙復(fù)位檢測方式可防止各種情況引起的器件周期性復(fù)位。
該單片機WDT與其它單片機WDT不同的地方之一就是引入了預(yù)警模式中斷,這使軟件可以在發(fā)生異常復(fù)位之前處理一些必要的數(shù)據(jù);另一個不同的地方就是引入了恒復(fù)位狀態(tài),使單片機在發(fā)生嚴重的系統(tǒng)故障時,各端口保持非輸出狀態(tài),同時不產(chǎn)生周期性復(fù)位。
如果在某些場合不希望單片機出現(xiàn)恒復(fù)位狀態(tài),或者不希望單片機在兩次WDT復(fù)位后就進入恒復(fù)位狀態(tài),則軟件必須在WDT預(yù)警模式中斷中寫入代碼。文章后面會有實例說明。
2 單片機初始化結(jié)束后WDT有效的工作方式
如圖2所示,如果在DAVE軟件的WDT初始化選擇中選中該項,則軟件在復(fù)位初始化結(jié)束后,WDT應(yīng)該使能。
但是,如果不在DAVE自動生成的工程文件中,將WDT選項勾選的話,WDT將永遠無效。即使你已經(jīng)勾選了該選項,下次DAVE自動修改工程文件時該選項也會被清除。因此在該工作方式下,軟件中可以沒有啟動WDT的語句,但每次用DAVE自動修改工程文件時都要重新勾選。該選項在工程文件的Start_V3.A66中,位置如圖3所示。
在這種工作方式下,在DAVE自動生成的工程文件中,對WDT來說只有如下語句起作用:
_srvwdt_();//服務(wù)WDT
3 WDT始終有效的工作方式
如圖4所示,如果在DAVE軟件的WDT初始化選擇中選中該項,則WDT始終有效,隨時可以使能和禁止。
在這種工作方式下,應(yīng)該在DAVE自動生成的工程文件中寫入如下語句:
_diswdt_(); //禁止WDT
_asm{ENWDT;} //使能WDT
_srvwdt_(); //服務(wù)WDT
4 去掉WDT恒復(fù)位狀態(tài)的方法
在以上兩種WDT的工作方式下,當發(fā)生兩次WDT復(fù)位時,單片機都會進入恒復(fù)位狀態(tài)。如果想要去除這種狀態(tài),那就必須首先開通WDT預(yù)警中斷。
然后在預(yù)警中斷中寫入如下代碼。
5 結(jié)束語
本文對XC2336B單片機WDT的特殊功能進行了講解,并介紹了兩種工作方式。最后還用實際例程說明了如何將XC2336B單片機WDT的特殊功能給去掉,使其能等同與一般單片機的看門狗一樣使用。這樣,編程人員就可以在讀EEPROM、調(diào)試和運行等不同環(huán)境下熟練運用該單片機的WDT了。
評論