| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
請大家?guī)兔纯催@個cap程序為什么進不了中斷子程序 | 
  
| 作者:bliu 欄目:DSP技術(shù) | 
#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File // Prototype statements for functions found within this file. interrupt void cap_isr(void); // 子程序接口 void Delay(unsigned int nDelay); // 延時子程序 void init_ev(); int a=0; void main(void) { InitSysCtrl();//初始化cpu DINT;//關(guān)中斷 InitPieCtrl();//初始化pie寄存器 IER = 0x0000;//禁止所有的中斷 IFR = 0x0000; InitPieVectTable(); EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.CAPINT1 = &cap_isr; EDIS; // This is needed to disable write to EALLOW protected registers EALLOW; GpioMuxRegs.GPAMUX.all=0; // Configure MUXs as DIGITAL I/Os or GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8=1; GpioMuxRegs.GPADIR.all=0x00FF; // GPIO PORTs as OUTPUT GpioMuxRegs.GPAQUAL.all=0xFFFF; // Set GPIO input qualifier values EDIS; GpioDataRegs.GPACLEAR.all = 0x00FF; // TEST Clear asm(" RPT #5 ||NOP"); init_ev(); // Enable CPU INT1 which is connected to CPU-Timer 0: IER |= M_INT1; // Enable TINT0 in the PIE: GROUP3 interrupt 5 PieCtrlRegs.PIEIER3.bit.INTx5 = 1; // Enable GLOBAL Interrupts and higher priority real-time debug events: EINT; // Enable GLOBAL interrupt INTM ERTM; // Enable GLOBAL realtime interrupt DBGM //檢查是否進入中斷 while ( 1 ) { if(a==1) { GpioDataRegs.GPADAT.bit.GPIOA5=0;//點亮LED燈 a=0; } Delay(256); if(a==0) { GpioDataRegs.GPADAT.bit.GPIOA5=1;//關(guān)閉LED燈 } } } interrupt void cap_isr(void) { EvaRegs.EVAIFRC.all = 0x0001; //清中斷標(biāo)志寄存器C中 a=1; PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; } void Delay(unsigned int nDelay) { int ii,jj,kk=0; for ( ii=0;ii<nDelay;ii++ ) { for ( jj=0;jj<512;jj++ ) { kk++; } } } void init_ev() { EvaRegs.T1PR = 0xFFFF; // Timer1 period EvaRegs.T1CNT = 0; // Timer1 counter EvaRegs.T1CON.bit.TMODE = 2; // TMODE = continuous up EvaRegs.T1CON.bit.TENABLE = 1; //使能定時器1 EvaRegs.CAPCONA.all = 0; //捕獲控制寄存器 EvaRegs.CAPCONA.bit.CAP12EN = 1; //使能捕獲1 2器2 EvaRegs.CAPCONA.bit.CAP12TSEL = 1; //捕獲單元12選擇通用目的定時器1 EvaRegs.CAPCONA.bit.CAP1EDGE = 1; //捕獲單元1檢測上升沿 EvaRegs.CAPFIFOA.all = 0; //清空CAPFIFOA寄存器 //EvaRegs.EVAIFRA.all = 0x0001; //清中斷標(biāo)志寄存器A中各中斷標(biāo)志位 EvaRegs.EVAIFRC.all = 0x0001; //清中斷標(biāo)志寄存器C中各中斷標(biāo)志位 // EvaRegs.EVAIMRA.bit.all = 0x0001; // 使能PDPINTA中斷 EvaRegs.EVAIMRC.bit.CAP1INT = 1; //使能捕獲中斷1 } //=========================================================================== // No more. //======================================== 當(dāng)向CAP口發(fā)送信號時,系統(tǒng)CAP1FIFO寄存器發(fā)生變化,但是不能進入中斷子程序,小弟實在不知道哪里出錯了,望各位幫幫忙 liuboo30083008@yahoo.com.cn  | 
  
| 2樓: | >>參與討論 | 
| 作者: zgl7903 于 2006/8/16 12:39:00 發(fā)布:
         個人見解 監(jiān)視一下CAP中斷標(biāo)志位,如果沒有變化,那可能是設(shè)置不對或?qū)τ布牟僮鞑粚;如果有變?就檢查中斷向量表是否正確?  | 
  |
| 3樓: | >>參與討論 | 
| 作者: janemxq 于 2006/8/23 22:50:00 發(fā)布:
         你的問題解決了嗎 我也發(fā)現(xiàn)了同你一樣的問題,CAP1FIFO=0x11,但是不進中斷,如果你已解決, 請告知問題出在哪里,多謝  | 
  |
| 4樓: | >>參與討論 | 
| 作者: lltmhy2005 于 2006/8/24 18:57:00 發(fā)布:
         沒有開中斷 IER |= M_INT3;  | 
  |
| 5樓: | >>參與討論 | 
| 作者: alexqiu 于 2006/8/24 21:02:00 發(fā)布:
         我的can發(fā)送中斷也進不了, 能想到了的,都試了,就是進不去..有做過的救一下..或者有例子給發(fā)一個..要有can報文發(fā)送中斷函數(shù)的..先謝謝了. can報文都發(fā)出去了,就是不進中斷,TNND.........  | 
  |
| 6樓: | >>參與討論 | 
| 作者: lltmhy2005 于 2006/8/24 23:06:00 發(fā)布:
         can發(fā)送中斷也進不了 程序放上來看看  | 
  |
| 7樓: | >>參與討論 | 
| 作者: fgxl1983 于 2010/8/7 18:25:33 發(fā)布:
         CAPINT1的中斷在PIE組的第三組, IER |= M_INT1;應(yīng)該是IER |= M_INT3  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |