wangch_sh 发表于 2013-11-26 11:56

求2808CAN接收中断例程

谁有2808CAN接收中断例程,麻烦传我一份。谢谢了。
我邮箱:chenbing_xsh@163.com

wangch_sh 发表于 2013-11-26 13:22

找到一个例子。可是会卡死,开始可以接收到数据,一会就卡死了。
interrupt void ecan1_isr(void)                                     //1号线上中断
{int MIV = 0;
        asm (" NOP");
        if(ECanaRegs.CANGIF1.bit.GMIF1)                              //1号线上中断是邮箱中断
        {
                MIV = ECanaRegs.CANGIF1.bit.MIV1;                        //找出中断邮箱
                switch(MIV)
                {
                        case 31:
                                break;
                        case 30:
                                break;
                        case 2:                                                //2号邮箱接收中断
                                if(ECanaRegs.CANRMP.bit.RMP2)
                                {
                                        ECanaRegs.CANRMP.bit.RMP2 = 1;
                                        //TestMbox7 = ECanaMboxes.MBOX2.MDL.all;
                                        //TestMbox8 = ECanaMboxes.MBOX2.MDH.all;
                                        //TestMbox9 = ECanaMboxes.MBOX2.MSGID.all;
                                }
                                break;
                        case 3:                                                //3号邮箱发送中断,清中断标示符
                                if(ECanaRegs.CANTA.bit.TA3)
                                {
                                        ECanaShadow.CANTA.all = 0;
                                        ECanaShadow.CANTA.bit.TA3 = 1;
                                        ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
                                }
                                break;
                        case 0:                                                 //0号邮箱接收中断,
                                //TestMbox4 = ECanaMboxes.MBOX0.MDL.all;
                                //TestMbox5 = ECanaMboxes.MBOX0.MDH.all;
                                //TestMbox6 = ECanaMboxes.MBOX0.MSGID.all;
                                ECanaRegs.CANRMP.bit.RMP0 = 1;
                                Rec_l = ECanaMboxes.MBOX0.MDL.all;
                        Rec_h = ECanaMboxes.MBOX0.MDH.all;
                                break;
                }
        }
        ECanaRegs.CANGIF1.bit.GMIF1=1;
        ECanaRegs.CANTA.all        = 0xFFFFFFFF;        /* Clear all TAn bits */      
       
        ECanaRegs.CANRMP.all = 0xFFFFFFFF;        /* Clear all RMPn bits */      
       
        ECanaRegs.CANGIF0.all = 0xFFFFFFFF;        /* Clear all interrupt flag bits */
        ECanaRegs.CANGIF1.all = 0xFFFFFFFF;
        PieCtrlRegs.PIEACK.all |= 0x100;       // Issue PIE ack
}
请高手指教,谢谢!

wangch_sh 发表于 2013-11-26 15:34

没人知道吗?

wangch_sh 发表于 2013-11-26 18:26

知道了,硬件问题。

石摊摊 发表于 2013-11-26 19:56

有没有一起学习DSP的

zhangmangui 发表于 2013-11-26 23:38

wangch_sh 发表于 2013-11-26 18:26 static/image/common/back.gif
知道了,硬件问题。

快来分享啊    硬件什么问题?

wangch_sh 发表于 2013-11-27 08:12

一言难尽那。CAN通信管脚和数码管复用了。
页: [1]
查看完整版本: 求2808CAN接收中断例程