PIC單片機(jī)原理及應(yīng)用-DSPIC30FL6-中斷_第1頁
PIC單片機(jī)原理及應(yīng)用-DSPIC30FL6-中斷_第2頁
PIC單片機(jī)原理及應(yīng)用-DSPIC30FL6-中斷_第3頁
PIC單片機(jī)原理及應(yīng)用-DSPIC30FL6-中斷_第4頁
PIC單片機(jī)原理及應(yīng)用-DSPIC30FL6-中斷_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

dsPIC30F---中斷1特性dsPIC30F中斷控制器模塊將大量外設(shè)中斷請求信號減少到一個(gè)到dsPIC30FCPU的中斷請求信號,它并具有以下特性:多達(dá)8個(gè)處理器異常和軟件陷阱7個(gè)用戶可選擇的優(yōu)先級具有多達(dá)62個(gè)向量的中斷向量表〔InterruptVectorTable,IVT〕每個(gè)中斷或異常源都有唯一的向量指定的用戶優(yōu)先級中的固定優(yōu)先級用于支持調(diào)試的備用中斷向量表〔AlternateInterruptVectorTable,AIVT〕固定的中斷入口和返回延時(shí)2中斷向量表〔IVT〕IVT位于程序存儲(chǔ)器中,起始單元地址是0x000004。IVT包含62個(gè)向量,這些向量由8個(gè)不可屏蔽陷阱向量和最多54個(gè)中斷源組成。每個(gè)中斷源都有自己的向量。每個(gè)中斷向量都包含24位寬的地址。編程到每個(gè)中斷向量單元的值是有關(guān)中斷效勞程序〔ISR〕的起始地址。備用中斷向量表〔AIVT〕位于IVT之后。345CPU優(yōu)先級狀態(tài)CPU可以工作在16個(gè)優(yōu)先級〔0-15〕之中的一個(gè)。中斷或陷阱源的優(yōu)先級必須大于當(dāng)前CPU的優(yōu)先級以便開始異常處理。外設(shè)和外部中斷源可以編程為優(yōu)先級0-7,CPU優(yōu)先級8-15是為陷阱源保存的。陷阱是不可屏蔽的中斷源,用于檢測硬件和軟件問題。每個(gè)陷阱源的優(yōu)先級是固定的并且一個(gè)優(yōu)先級只可分配給一個(gè)陷阱。注意編程為優(yōu)先級0的中斷源是被有效禁止的,因?yàn)樗膬?yōu)先級永遠(yuǎn)不會(huì)大于CPU的優(yōu)先級。6中斷優(yōu)先級可以為每個(gè)外設(shè)中斷源分配7個(gè)優(yōu)先級之一??捎玫膬?yōu)先級從1開始為最低優(yōu)先級,7級為最高優(yōu)先級。如果與中斷源有關(guān)的IPC位被全部清零,那么中斷源被有效禁止。由于特定的優(yōu)先級會(huì)被分配給一個(gè)以上的中斷請求源,所以在給定的用戶分配級別內(nèi)提供了一種解決優(yōu)先級沖突的方法。根據(jù)每個(gè)中斷源在IVT中的位置,它們都有一個(gè)自然順序優(yōu)先級。中斷向量的編號越低,自然優(yōu)先級越高,而向量的編號越高,自然優(yōu)先級越低。任何待處理的中斷源的總優(yōu)先級都首先由該中斷源在IPCx存放器中用戶分配的優(yōu)先級決定,然后由IVT中的自然順序優(yōu)先級決定。7不可屏蔽陷阱可以將陷阱看作不可屏蔽的可嵌套中斷,它遵循固定的優(yōu)先級結(jié)構(gòu)。陷阱旨在為用戶提供一種方法改正在調(diào)試和應(yīng)用中工作時(shí)的錯(cuò)誤操作。如果用戶不想對陷阱錯(cuò)誤條件事件采取糾正行動(dòng),那么必須在陷阱向量中裝入將在器件復(fù)位的軟件程序地址。否那么,陷阱向量將編程為糾正陷阱條件的效勞程序地址。dsPIC30F有四個(gè)不可屏蔽陷阱源:振蕩器故障陷阱堆棧錯(cuò)誤陷阱地址錯(cuò)誤陷阱算術(shù)錯(cuò)誤陷阱8中斷操作在每個(gè)指令周期都對所有中斷事件標(biāo)志進(jìn)行采樣。IFSx存放器中的標(biāo)志位等于1表示有等待處理的中斷請求IRQ。如果中斷使能〔IECx〕存放器中相應(yīng)的位被置1,IRQ將會(huì)導(dǎo)致中斷產(chǎn)生。采樣后余下的指令周期,將評估所有待處理的中斷請求的優(yōu)先級。當(dāng)IPL<2:0>狀態(tài)位〔SR<7:5>〕說明有一個(gè)待處理的IRQ,它的用戶分配的優(yōu)先級大于當(dāng)前處理器的優(yōu)先級,那么處理器將收到中斷請求。然后處理器將以下信息保存到軟件堆棧中:當(dāng)前的PC值處理器狀態(tài)存放器〔SRL〕低字節(jié)IPL3狀態(tài)位〔CORCON<3>〕信息被保存在堆棧上之后,CPU將待處理的中斷優(yōu)先級寫入IPL<2:0>位的位置。這樣將禁止所有優(yōu)先級小于或等于它的中斷,直到使用RETFIE指令終止中斷效勞程序〔ISR〕。9處理器將以下信息保存到軟件堆棧中:當(dāng)前的PC值處理器狀態(tài)存放器〔SRL〕低字節(jié)IPL3狀態(tài)位〔CORCON<3>〕10中斷處理時(shí)序在單周期指令中產(chǎn)生外設(shè)中斷時(shí)的事件序列。中斷處理需要四個(gè)指令周期。在外設(shè)中斷發(fā)生后的指令周期中,中斷標(biāo)志狀態(tài)位置1。在此指令周期中,當(dāng)前指令完成。在中斷事件后的第二個(gè)指令周期中,PC和SRL存放器的內(nèi)容被存入臨時(shí)緩沖存放器。中斷處理的第二個(gè)周期被執(zhí)行為一個(gè)NOP,以保持與雙周期指令中所進(jìn)行的序列的一致性在第三個(gè)周期中,PC被裝入中斷源的向量表地址并取指ISR的起始地址。在第四個(gè)周期中,PC被裝入ISR地址。當(dāng)ISR中的第一個(gè)指令被取指時(shí),第四個(gè)周期被執(zhí)行為NOP。雙周期指令的中斷延遲和單周期指令相同。1112“從中斷返回〞指令RETFIE,可退出一個(gè)中斷或陷阱程序。指令的第一個(gè)周期中,PC的高位和SRL存放器從堆棧彈出。在第二個(gè)周期中,入棧的PC值的低16位從堆棧彈出。第三個(gè)指令周期用于取出由更新的程序計(jì)數(shù)器尋址的指令。此周期執(zhí)行為一個(gè)NOP。13中斷控制和狀態(tài)存放器INTCON1和INTCON2存放器:全局中斷控制功能來自這兩個(gè)存放器。INTCON1包含中斷嵌套禁止位,及處理陷阱源的控制和狀態(tài)標(biāo)志。INTCON2存放器控制外部中斷請求信號的行為和備用向量表的使用。IFSx中斷標(biāo)志狀態(tài)存放器:所有中斷請求標(biāo)志都保存在IFSx存放器中,每個(gè)中斷源由各自的外設(shè)和外部信號置1并通過軟件清零。IECx中斷允許控制存放器:所有中斷允許控制位都保存在IECx存放器中,這些控制位用于分別允許來自外設(shè)或外部信號的中斷。IPCx中斷優(yōu)先級控制存放器:每個(gè)用戶中斷源都可以分配為8個(gè)優(yōu)先級之一。IPC存放器用于為每個(gè)中斷源設(shè)置中斷優(yōu)先級。SRCPU狀態(tài)存放器:它包含IPL<2:0>狀態(tài)位〔SR<7:5>〕,該位顯示當(dāng)前CPU的優(yōu)先級。用戶可以通過寫IPL位改變當(dāng)前CPU的優(yōu)先級。CORCON內(nèi)核控制存放器:它包含IPL3狀態(tài)位,該位顯示當(dāng)前CPU的優(yōu)先級。IPL3是只讀位,因此陷阱事件就不能被用戶軟件屏蔽。1415161718192021222324中斷設(shè)置流程1初始化:以下步驟說明了如何配置中斷源:1.如果不需要中斷嵌套,將NSTDIS控制位置1〔INTCON1<15>〕。2.通過寫相應(yīng)的IPCx控制存放器中的控制位選擇中斷源的用戶分配優(yōu)先級。優(yōu)先級取決于特定的應(yīng)用和中斷源類型。如果不需要多個(gè)優(yōu)先級,所有允許的中斷源的IPCx存放器控制位均可以編程為同一個(gè)非零值。3.在相關(guān)的IFSx狀態(tài)存放器中清零與外設(shè)相關(guān)的中斷標(biāo)志狀態(tài)位。4.通過在相應(yīng)的IECx控制存放器中置1與中斷源相關(guān)的中斷允許控制位,使能中斷源。252中斷效勞程序:用正確向量地址聲明中斷相應(yīng)ISR和初始化IVT的方法將由編程語言〔即C或匯編〕和用于開發(fā)此應(yīng)用程序的語言開發(fā)工具套件決定。一般情況下,用戶必須清零在ISR中處理的中斷的中斷源在相應(yīng)IFSx存放器中的中斷標(biāo)志。否那么,在退出中斷效勞程序后會(huì)立即再次進(jìn)入ISR。如果ISR用匯編語言編碼,必須用RETFIE指令終止它以便使保存的PC值、SRL值和舊的CPU優(yōu)先級出棧。3陷阱效勞程序:除了必須清零INTCON1存放器中的相關(guān)陷阱狀態(tài)標(biāo)志以防止反復(fù)進(jìn)入TSR,陷阱效勞程序〔TSR〕的編碼方式類似于ISR。4中斷禁止:可以使用以下流程禁止所有用戶中斷:使用PUSH指令將當(dāng)前SR值壓入軟件堆棧。將值0xE0和SRL進(jìn)行或操作強(qiáng)制CPU的優(yōu)先級別為7。26實(shí)驗(yàn)三、中斷一、實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)三的主要目的是進(jìn)一步了解掌握PIC單片機(jī)的結(jié)構(gòu)和中斷功能,學(xué)習(xí)通過中斷存放器的控制完成中斷的禁止、開放及響應(yīng)的編程技巧,用匯編語言編寫外部中斷程序,并在MPLAB開發(fā)環(huán)境中對工程進(jìn)行編譯鏈接和進(jìn)行調(diào)試。二、實(shí)驗(yàn)要求了解掌握PIC單片機(jī)的結(jié)構(gòu)和中斷響應(yīng)功能。應(yīng)熟練掌握MPLAB開發(fā)環(huán)境的使用方法。熟練掌握PIC單片機(jī)的匯編指令程序編寫方法。掌握MPLABIDE硬件調(diào)試的技巧。27#include"p30f4011.h"unsignedintLed=0x01;voidInitializeint0(){IFS0bits.INT0IF=0;//去除INT0的中斷標(biāo)志IPC0bits.INT0IP=7;//中斷優(yōu)先級為7}void__attribute__((__interrupt__))_INT0Interrupt(void){ IFS0bits.INT0IF=0;//清INT0中斷標(biāo)志Led=Led<<1;if(Led==0x40)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論