99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

【問】2806 CAP和中斷

如果一個程序中,有兩個中斷,假若為CAP1中斷和CAP2中斷,我查到DSP默認的優先級是CAP2級別高于CAP1,
是不是當CAP2滿足中斷條件后,CAP2進入中斷,即使此刻CAP1也滿足中斷條件,也不會進入CAP1中斷??

還有就是如果自始至終,CAP1和CAP2都滿足中斷條件的話,CAP1就會一直進不去中斷??

我在實際測量中發現,分別用兩個信號發生器 都產生兩個50hz的 高低電平信號,幅值滿足DSP能夠進入中斷的要求。
測試中發現,當僅有CAP1中斷時,可以正常捕獲數值,CAP1的兩個寄存器差值為50HZ對應數字量,當僅有CAP2中斷時,也可以正常捕獲數值,CAP2的兩個寄存器差值與CAP1基本差別不大。由此可以確定兩個CAP中斷沒有問題。

但是,當CAP1和CAP2同時滿足中斷條件時,根據程序單步運行發現,兩個中斷也都能進入,但是捕獲數值不正確。此時CAP1和CAP2的兩個寄存器雖然數值時刻在變化,但是差值始終為0,一直弄不清原因,求救中...............

主要程序如下:
#include "DSP280x_Device.h"     // DSP280x Headerfile Include File
#include "DSP280x_Examples.h"   // DSP280x Examples Include File
interrupt void ecap1_isr(void);
interrupt void ecap2_isr(void);
void InitECapture(void);
void Fail(void);
// Global variables used in this example
Uint32  ECap1IntCount;
Uint32  ECap2IntCount;
Uint32  TSt1;
Uint32  TSt2;
Uint32  TSt3;
Uint32  TSt4;
Uint32  Period1;
Uint32  Period2;

void main(void)
{
   InitSysCtrl();
   InitECap1Gpio();
   InitECap2Gpio();
   DINT;
   InitPieCtrl();
   
   IER = 0x0000;
   IFR = 0x0000;
   InitPieVectTable();
  
   EALLOW;  
   PieVectTable.ECAP1_INT = &ecap1_isr;
   PieVectTable.ECAP2_INT = &ecap2_isr;
   EDIS;   
   InitECapture();
   
   ECap1IntCount = 0;
   ECap2IntCount = 0;
   IER |= M_INT4;
   PieCtrlRegs.PIEIER4.bit.INTx1 = 1;
   PieCtrlRegs.PIEIER4.bit.INTx2 = 1;

   EINT;  
   ERTM;  
   for(;;)
  {
       asm("          NOP");
  }
}
void InitECapture()
{
   ECap1Regs.ECEINT.all = 0x0000;            
   ECap1Regs.ECCLR.all = 0xFFFF;              
   ECap1Regs.ECCTL1.bit.CAPLDEN = 0;        
   ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;        
  
   ECap1Regs.ECCTL2.bit.CONT_ONESHT = 1;      
   ECap1Regs.ECCTL2.bit.STOP_WRAP = 3;        
   ECap1Regs.ECCTL1.bit.CAP1POL = 1;         
   ECap1Regs.ECCTL1.bit.CAP2POL = 1;         
   ECap1Regs.ECCTL1.bit.CAP3POL = 1;         
   ECap1Regs.ECCTL1.bit.CAP4POL = 1;         
   ECap1Regs.ECCTL1.bit.CTRRST1 = 0;               
   ECap1Regs.ECCTL1.bit.CTRRST2 = 0;                 
   ECap1Regs.ECCTL1.bit.CTRRST3 = 0;               
   ECap1Regs.ECCTL1.bit.CTRRST4 = 0;                  
   ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;         
   ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2;        
   ECap1Regs.ECCTL1.bit.CAPLDEN = 1;         

   ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;     
   ECap1Regs.ECCTL2.bit.REARM = 1;            
   ECap1Regs.ECCTL1.bit.CAPLDEN = 1;      
   ECap1Regs.ECEINT.bit.CEVT4 = 1;         

   ECap2Regs.ECEINT.all = 0x0000;            
   ECap2Regs.ECCLR.all = 0xFFFF;            
   ECap2Regs.ECCTL1.bit.CAPLDEN = 0;         
   ECap2Regs.ECCTL2.bit.TSCTRSTOP = 0;      
   
  
  
   ECap2Regs.ECCTL2.bit.CONT_ONESHT = 1;      
   ECap2Regs.ECCTL2.bit.STOP_WRAP = 3;        
   ECap2Regs.ECCTL1.bit.CAP1POL = 1;         
   ECap2Regs.ECCTL1.bit.CAP2POL = 1;         
   ECap2Regs.ECCTL1.bit.CAP3POL = 1;         
   ECap2Regs.ECCTL1.bit.CAP4POL = 1;         
   ECap2Regs.ECCTL1.bit.CTRRST1 = 0;               
   ECap2Regs.ECCTL1.bit.CTRRST2 = 0;                    
   ECap2Regs.ECCTL1.bit.CTRRST3 = 0;                  
   ECap2Regs.ECCTL1.bit.CTRRST4 = 0;                  
   ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;         
   ECap2Regs.ECCTL2.bit.SYNCO_SEL = 2;        
   ECap2Regs.ECCTL1.bit.CAPLDEN = 1;         
   ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1;        
   ECap2Regs.ECCTL2.bit.REARM = 1;            
   ECap2Regs.ECCTL1.bit.CAPLDEN = 1;         
   ECap2Regs.ECEINT.bit.CEVT4 = 1;         
}

interrupt void ecap1_isr(void)
{
  
   TSt1 = ECap1Regs.CAP1;
   TSt2 = ECap1Regs.CAP2;
   Period1 = TSt2-TSt1;
   ECap1IntCount++;
  

   ECap1Regs.ECCLR.bit.CEVT4= 1;
   ECap1Regs.ECCLR.bit.INT = 1;
   ECap1Regs.ECCTL2.bit.REARM = 1;
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

interrupt void ecap2_isr(void)
{
   
   TSt3 = ECap2Regs.CAP1;
   TSt4 = ECap2Regs.CAP2;
   Period2 = TSt4-TSt3;

   ECap2IntCount++;
   Period4=abs(TSt3-TSt1);
   ECap2Regs.ECCLR.bit.CEVT4 = 1;
   ECap2Regs.ECCLR.bit.INT = 1;
   ECap2Regs.ECCTL2.bit.REARM = 1;
  
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
}

void Fail()
{
    asm("   ESTOP0");
}


//===========================================================================
// No more.
//===========================================================================
全部回復(4)
正序查看
倒序查看
2012-06-25 19:35
我只能頂起這個問題,請版主去回答!貢獻自己一點力量啦
0
回復
2012-06-27 09:00
@zhanghuawei
[圖片]我只能頂起這個問題,請版主去回答!貢獻自己一點力量啦

仁兄,這問題太專業,磚家全被你嚇跑了。

頂一下,答這顆芯片是F2803x的升級版本,增加了RAM, Flash,主頻, CAP和HCAP的數量,PWM通道的數量,QEP的數量,80pin和100pin兩種,可以提供雙邊緣調頻控制。內部還增加了10 位基準的模擬比較器,并可直接對其進行路由以控制 PWM 輸出。設計時參考F2803X,這IC資料比較多

0
回復
明月光
LV.6
4
2012-06-27 13:10

這個問題好有難度

要不咨詢下他們的FAE

他們應該能給樓主一個滿意的答復

0
回復
guidewang
LV.5
5
2012-06-28 15:38
@明月光
這個問題好有難度要不咨詢下他們的FAE他們應該能給樓主一個滿意的答復
太專業了,TI專區有他們的聯系方式,你可以找到他們的FAE咨詢一下。
0
回復
主站蜘蛛池模板: 国内黄色大片 | 波多野结衣先锋在线 | 国产麻豆剧传媒精品AV | 涩色影院| 久久99久久99精品免视看看 | 丝袜美腿精品国产一区 | 国产精品成人无码久久久久久 | 免费一级片网站 | 免费一级好看的国产 | 中文字幕无码乱码人妻系列蜜桃 | 欧美日韩一区二 | 国产97视频在线 | 国产成人精品国内自产拍免费看 | 亚洲一区二区在线视频观看 | 免费观看日韩视频 | 国产成人精品日本亚洲一区 | 日本一区二区三区在线看 | 成年人在线免费观看视频网站 | 视频一区二区不卡 | 三年片在线观看免费大全 | Chinese国产HD精品实拍 | 正在做饭的少妇中文字幕 | japanese乱人伦精品 | 本免费Av无码专区一区 | 久热精品在线播放 | 中文字幕乱码亚洲精品一区 | 亚洲手机在线播放 | 18禁黄无遮挡网站免费高清 | 欧美成人看片一区二区三区尤物 | 日韩中文字幕手机在线观看 | 色偷偷一区二区无码视频 | 99久久一区 | 午夜嘿嘿| 国产精品无码一区二区三区无卡 | 无毒a网| 91蜜臀精品国产自偷在线 | 7788成人网站免费观看 | 亚洲成a人片777777久久 | 亚洲精品国产精品乱码不卞 | 极品粉嫩嫩模大尺度无码视频 | 成人性生交大片免费看中文 |