TI中文支持网
TI专业的中文技术问题搜集分享网站

请问下 ECan如何同时 循环发送,中断接收数据?(分开发送和 接收是正常的)

现在单独的 循环发送,和中断接收都可以了。把 发送和接收放在一起,就只能 接收数据, 没有发送数据,程序在一直在中断里面,没有回到 主程序。

帮忙看下 中断里面需要如何操作。程序如下:

main.c  里面的发送 使用了25号邮箱

ECanaMboxes.MBOX25.MDL.byte.BYTE3++;
ECanaMboxes.MBOX25.MDH.byte.BYTE7++;
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS25 = 1; // Set TRS for mailbox under test

ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

do
{
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
} while(ECanaShadow.CANTA.bit.TA25 == 0 ); // Wait for TA5 bit to be set..

ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA25 = 1; // Clear TA5
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

中断里面的接收 16号邮箱 

__interrupt void CanaRev_Isr(void)
{

while(ECanaRegs.CANRMP.all != 0x00010000 ) ;
ECanaRegs.CANRMP.all = 0x00010000;

PieCtrlRegs.PIEACK.bit.ACK9 = 1;
EINT;
}

Eric Ma:

看了中断,没有对外设级别的中断标志进行处理,

.4.3.1 Configuring for Interrupt Handling

看一下上面这个章节。

ERIC

现在单独的 循环发送,和中断接收都可以了。把 发送和接收放在一起,就只能 接收数据, 没有发送数据,程序在一直在中断里面,没有回到 主程序。

帮忙看下 中断里面需要如何操作。程序如下:

main.c  里面的发送 使用了25号邮箱

ECanaMboxes.MBOX25.MDL.byte.BYTE3++;
ECanaMboxes.MBOX25.MDH.byte.BYTE7++;
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS25 = 1; // Set TRS for mailbox under test

ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

do
{
ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
} while(ECanaShadow.CANTA.bit.TA25 == 0 ); // Wait for TA5 bit to be set..

ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA25 = 1; // Clear TA5
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

中断里面的接收 16号邮箱 

__interrupt void CanaRev_Isr(void)
{

while(ECanaRegs.CANRMP.all != 0x00010000 ) ;
ECanaRegs.CANRMP.all = 0x00010000;

PieCtrlRegs.PIEACK.bit.ACK9 = 1;
EINT;
}

chao qian1:

回复 Eric Ma:

ERIC

      你好。

3.4.3.1 Configuring for Interrupt Handling  这个配置CAN中断的章节已经看了,我在 CAN初始化时, 已经配置好了 3.4.3.1所提到的 中断寄存器, 但里面 并没有说明  如何把中断标志进行处理。

赞(0)
未经允许不得转载:TI中文支持网 » 请问下 ECan如何同时 循环发送,中断接收数据?(分开发送和 接收是正常的)
分享到: 更多 (0)