dsp2812测速 进不了中断

[复制链接]
 楼主| licuimei521 发表于 2013-9-21 18:40 | 显示全部楼层 |阅读模式
我在开发板上测试可以 但是用在我自己的板子上 通过T4中断后进不去cap6中断 这是怎么回事
 楼主| licuimei521 发表于 2013-9-21 19:14 | 显示全部楼层
void main(void)
{
        InitSysCtrl();                                        //初始化系统
        DINT;                                                                //关中断
        IER = 0x0000;
        IFR = 0x0000;
        InitPieCtrl();                                        //初始化PIE
        InitPieVectTable();                                //初始化PIE中断矢量表
        InitPeripherals();                                //初始化外设
        InitGpio();                                                //初始化GPIO
        InitEv();
        EALLOW;
        PieVectTable.CAPINT6 = & CAPINT6_ISR;
        EDIS;

        IER|= M_INT5;//cpu中断打开第五组CAP6  T4PINT                          
        EINT;                                                   // Enable INTM
        ERTM;                                                        // Enable DBGM       
        EvaRegs.T1CON.bit.TENABLE=1;//打开定时器1
        EvbRegs.T4CON.bit.TENABLE=1;//打开定时器4
        EvbRegs.CAPCONB.bit.CAP6EN=1;//使能CAP6
               
        while(1)
        {                       
               
        }
}
 楼主| licuimei521 发表于 2013-9-21 19:15 | 显示全部楼层
interrupt void CAPINT6_ISR(void)   // EV-B
{

                        if(EvbRegs.CAPFIFOB.bit.CAP6FIFO==2)
                                {
                                if(count2>=16)
              {  
              Freq=0;
               }
                                        p=EvbRegs.CAPFIFOB.bit.CAP6FIFO;
                                        Cap6Dat1 = EvbRegs.CAP6FIFO;
                                        Cap6Dat2 = EvbRegs.CAP6FIFO;
                                        if(Cap6Dat2>Cap6Dat1)
                                                temp = Cap6Dat2- Cap6Dat1;
                                        if(Cap6Dat2<=Cap6Dat1)
                                                temp = count2*65535+Cap6Dat2 - Cap6Dat1;
                                        Freq = 18750000*15/(float)(256*temp);
                                        Freq = (unsigned long int )Freq;
                                        display(Freq);
                                        T4PCount=0;
                                        count2=0;
                                }

        EvbRegs.EVBIFRC.bit.CAP6INT=1;//CAP6中断标志复位                
        EvbRegs.EVBIMRC.bit.CAP6INT=1;//CAP6中断使能
        PieCtrl.PIEACK.bit.ACK5=1;//响应第五组中断CAP6
}

/******    T4PINT   ***********/
interrupt void T4PINT_ISR(void)    // EV-B
{

        T4PCount++;
        count2++;
        EvbRegs.EVBIFRB.bit.T4PINT=1;
        EvbRegs.EVBIMRB.bit.T4PINT=1;
        PieCtrl.PIEACK.bit.ACK5=1;//响应第五组中断CAP6        T4PINT
}


zhangmangui 发表于 2013-9-21 23:42 | 显示全部楼层
你用的是变M/T法测速吗   你的意思是可以进入T4的中断  进不去cap6的中断是吧
我建议你先只测试cap中断吧   是不是自己做的板子cap引脚不能被改变
我觉得最大的可能就是这个原因   这几个中断之间是不会有冲突的  
T4中断进入之后  在中断中开启cap中断  你最好屏蔽了T4中断  只开cap中断
试试
wang168506 发表于 2013-9-23 16:44 | 显示全部楼层
 楼主| licuimei521 发表于 2013-9-25 10:53 | 显示全部楼层
zhangmangui 发表于 2013-9-21 23:42
你用的是变M/T法测速吗   你的意思是可以进入T4的中断  进不去cap6的中断是吧
我建议你先只测试cap中断吧  ...

我改程序了 用T4周期中断算t  cap6计脉冲数  这样就可以了
zhangmangui 发表于 2013-9-25 10:56 | 显示全部楼层
licuimei521 发表于 2013-9-25 10:53
我改程序了 用T4周期中断算t  cap6计脉冲数  这样就可以了

OK   周期中断   在高低速时会有误差  
小晴空 发表于 2016-6-8 14:54 | 显示全部楼层
licuimei521 发表于 2013-9-25 10:53
我改程序了 用T4周期中断算t  cap6计脉冲数  这样就可以了

能发一下程序看看吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

33

帖子

0

粉丝
快速回复 返回顶部 返回列表