打印
[其他MCU]

MC9S08DZ16 CAN接收不能产生中断求助

[复制链接]
2158|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
deadpig|  楼主 | 2015-2-12 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HI,
从朋友那里拿来一块MC9S08DZ16的板子,他是用CW6.0写的程序,接收发送CAN通信正常。
我想用CW10最新软件来写程序,初始化如下,发送数据正常,但是不能接收数据。查看CANRIER = 0x01; 查看CANR标志寄存器,发现当数据进来时,RXF位无反应,始终为零。请问怎么解决啊?

初始化如下:
void can_init(void){

CANCTL0=0x01;    /* Enter initialisation Mode */
while (!(CANCTL1&0x01));  /* loop until initialisation confirmed */

CANIDMR0 = 0xFF;
CANIDMR1 = 0xFF;
CANIDMR2 = 0xFF;
CANIDMR3 = 0xFF;
CANIDMR4 = 0xFF;
CANIDMR5 = 0xFF;
CANIDMR6 = 0xFF;
CANIDMR7 = 0xFF;   /* Ignore all the filters */
  
CANBTR0 = 0x81;     
CANBTR1 = 0x23;    /* Bit Rate 250kbps*/

CANCTL1 = 0x80;   
CANCTL0 = 0x00;    /* Initialisation End */

while(CANCTL1 & 0x01);   /* Confirm MSCAN get out of Initialisation */
while(!(CANCTL0 & 0x10));   /* MSCAN is synchronised to the CAN bus */
CANRIER = 0x01;    /* Receiver Full Interrupt Enable */

}

相关帖子

沙发
FSL_TICS_Admin| | 2015-2-12 10:58 | 只看该作者
应该是你的中断向量和中断函数没有匹配。请看一下这个方面的设置。

使用特权

评论回复
板凳
deadpig|  楼主 | 2015-2-12 13:27 | 只看该作者
FSL_TICS_Admin 发表于 2015-2-12 10:58
应该是你的中断向量和中断函数没有匹配。请看一下这个方面的设置。

请问在哪个文件可以查看中断向量和中断函数?谢谢

使用特权

评论回复
地板
deadpig|  楼主 | 2015-2-12 15:32 | 只看该作者
FSL_TICS_Admin 发表于 2015-2-12 10:58
应该是你的中断向量和中断函数没有匹配。请看一下这个方面的设置。

Dear Admin, 我现在能接收数据了,但是我觉得这个问题本身没有解决,我是这样做的。
我发现我初始化里没有使能发送器空闲中断,但是能发送,查看CANTIER,确定为0x00,
于是我删掉了初始化函数里CANRIER=0x01这一句,也就是不使能接收缓冲器满中断,
结果居然可以了!!!什么情况啊?

使用特权

评论回复
5
FSL_TICS_Jeremy| | 2015-2-13 10:15 | 只看该作者
说明CAN总线数据接收其实是正常的,你单步调试一下,使能CAN接收缓冲器中断后,程序跑到哪了,我猜测也是你的中断向量与中断函数未匹配好。

使用特权

评论回复
6
bylbyl| | 2016-5-4 10:38 | 只看该作者
怎么能弄到这个软件呢

使用特权

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

本版积分规则

4

主题

24

帖子

0

粉丝