打印

不能进入中断函数的怪异问题

[复制链接]
2007|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cxsea2005|  楼主 | 2012-6-30 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用pic33ep64mc504芯片做can+DMA通信,dma2用于can数据接收,使能了can接收中断和dma中断,canrx管脚有波形输入,能产生can中断接收标志位和dma中断标志位,但是进入不了
can中断函数和dma中断函数,总是跳到default interrupt地址中。请问哪里出了问题?怎么解决?需要修改gld文件?
沙发
XIEYUANBIN| | 2012-7-1 14:27 | 只看该作者
有没有使能?
DMA 多少个字节中断一次?
        DMA2CONbits.AMODE = 2;                                //外设间接寻址模式,
        DMA2CONbits.MODE = 0;                                //禁止连续数据块乒乓模式
        DMA2CONbits.SIZE = 0;                                //字传输模式 这是由于ECAN的模式决定的。
        DMA2CONbits.DIR = 0;                                //从外设地址读取,写入DMA
       
        DMA2REQ = 34;                                        //CAN1接收缓冲
        DMA2PAD = (volatile unsigned int)&C1RXD;                                //地址连接到CAN1接收
        DMA2STA = __builtin_dmaoffset(can_rxbuf);
        DMA2CNT = 7;                                        //每次接收8个字中断。
       
        DMA2CONbits.CHEN = 1;

使用特权

评论回复
板凳
cxsea2005|  楼主 | 2012-7-2 13:21 | 只看该作者
谢谢楼上的回复,我的dma2寄存器设置和你完全一样,但是不能进入中断函数。在program memory下,我的中断入口地址没有配置,这款芯片的dma2的中断入口地址是0x000044,can1事件中断的中断入口地址是0x00005A,但是编译成功以后,这两个地址的操作码都是nop,也就是说没有跳转到中断函数里。不知哪里有问题?需要设置gld文件?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

1

粉丝