本案例在介紹數(shù)字pid控制器和模糊pl控制器的dsp應(yīng)用程序設(shè)計的同時,還介紹ti公司c2000系列dsp芯片開發(fā)時,中斷向量表和中斷子向量表的編寫和配置方法?! ∫粋€實用dsp程序除包括主程序和系統(tǒng)初始化程序以及存儲器配置文件之外,還需要有中斷向量表和中斷子向量表程序,對于一個dsp控制器來說,中斷的使用和管理是不可缺少的。在系統(tǒng)中,控制器的作用就是控制整個系統(tǒng)實時、有序地按照程序的要求運行,而dsp只有一個cpu,所以只有l(wèi)個進程,當(dāng)外部設(shè)各要求dsp控制時,就采用中斷的方式,dsp根據(jù)中斷的優(yōu)先級,通過響應(yīng)中斷并執(zhí)行中斷服務(wù)子程序(isr)來對外部設(shè)各進行控制。一個正確的中斷向量表和中斷子向量表程序能夠使系統(tǒng)正常運行,并能保證在系統(tǒng)不正常時自動恢復(fù)到程序初始化的狀態(tài),防止系統(tǒng)崩潰,提高工業(yè)控制的魯棒性。 dsp lf2407有兩級中斷,第一級中斷是cpu中斷,共6個;第二級中斷是外圍設(shè)各中斷,共46個。由外設(shè)中斷擴展控制器(pie)和中斷子向量表把外圍設(shè)備中斷映射到cpu中斷,然后等待cpu的響應(yīng)。此外cpu中斷向量表還包括19個軟件中斷和硬件復(fù)位中斷(reset)以及一個不可屏蔽申斷(nmi)。這種兩級中斷是采用集中化的中斷擴展設(shè)計方法,特別適合有大量外設(shè)中斷的工業(yè)控制系統(tǒng)。 以下就是采用通用定時器gpti的比較操作來產(chǎn)生中斷時,lf2407的中斷向量表和申斷子向量表程序。當(dāng)需要采用其他中斷時,可以直接在此程序中根據(jù)需要修改。該程序?qū)f2407來說是通用的,只是發(fā)生中斷時,cpu要跳轉(zhuǎn)的地址不一樣而已?! τ谝粋€實際的dsp系統(tǒng)來說,系統(tǒng)的中斷管理是不可缺少的,因為目前任何dsp實時系統(tǒng)都具有中斷,中斷是dsp系統(tǒng)和外部世界發(fā)生實時聯(lián)系的一個重要手段。作為ti公司的c2000系列dsp,它是偏向于控制的dsp芯片,因此它的中斷管理更豐富和先進,讀者理解起來也較困難。lf2407支持6個一級可屏蔽中斷,采用集中化的中斷擴展設(shè)計來滿足大量的外設(shè)中斷請求,所以每一級中斷又有多個中斷源,例如一級中斷int2包含的中斷源有比較器1、2、3、4、5、6中斷,定時器1、3的周期、比較、下溢、上溢中斷等。為了正確地響應(yīng)外設(shè)中斷,應(yīng)該分兩步來完成中斷服務(wù)子程序。在本案例的程序中,采用通用定時器1的比較匹配中斷,當(dāng)cpu響應(yīng)該中斷時,首先轉(zhuǎn)移到一級中斷int2中,也即gisr2處執(zhí)行,在一級中斷int2中讀取外設(shè)中斷向量寄存器(pivr)的值,它是個偏移量,再加上中斷子向量的首地址,程序就可以轉(zhuǎn)移到二級中斷子向量t1cint_isr(定時器1比較中斷)子程序中,執(zhí)行相應(yīng)的操作后即完成了一次中斷調(diào)用。 lf2407通過外設(shè)中斷擴展控制器(pie)來實現(xiàn)集中化的中斷擴展管理,這可以實現(xiàn)在占用極少資源的情況下,大大擴展可用的中斷源。因此在實際的dsp程序中,中斷向量表和中斷子向量表程序是不可缺少的,讀者在自行編寫程序時一定要在主程序中用。include匯編偽指令把本實例介紹的向量表文件pid_generate_vec.asm包括進來。 另外,假中斷向量是lf2407的一個特有的概念,它是保持中斷系統(tǒng)完整性的一個特性。在向量表文件pid generate_voc.asm中可以發(fā)現(xiàn),中斷子向量表的地址是從00h到42h,而中斷源卻沒有那么多,并且其入口地址叉是固定的,所以在中斷子向量表的沒有中斷源的地方就要插人假中斷向量以保證中斷系統(tǒng)的完整性。當(dāng)一個中斷已經(jīng)被響應(yīng),但卻沒有外設(shè)將中斷向量的地址偏移量裝入中斷向量寄存器(pivr)中時,假中斷向量的地址就被裝人pivr中,這種缺省保證了系統(tǒng)按照可以控制的方式進行處理。假中斷向量的子程序如下所示,一股都是復(fù)位看門狗電路?! g迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)()