Hello
I want to build a stable CAN communication software between 2 CAN Modules, that is why i have build this Err Reset Function:
bool ResetErr()
{
if (ECanaRegs.CANES.all <= 2) return(true);
else
{
if (ECanaRegs.CANES.bit.FE == 1) ECanaRegs.CANES.bit.FE = 0x0001;
if (ECanaRegs.CANES.bit.BE == 1) ECanaRegs.CANES.bit.BE = 0x0001;
if (ECanaRegs.CANES.bit.SA1 == 0) ECanaRegs.CANES.bit.SA1 = 0x0001;
if (ECanaRegs.CANES.bit.CRCE == 1) ECanaRegs.CANES.bit.CRCE = 0x0001;
if (ECanaRegs.CANES.bit.SE == 1) ECanaRegs.CANES.bit.SE = 0x0001;
if (ECanaRegs.CANES.bit.ACKE == 1) ECanaRegs.CANES.bit.ACKE = 0x0001;
if (ECanaRegs.CANES.bit.PDA == 1) ECanaRegs.CANES.bit.PDA = 0x0001;
if (ECanaRegs.CANES.bit.BO == 1)
{
//ECanaRegs.CANMC.bit.CCR = 1;
//while(ECanaRegs.CANES.bit.CCE == 0) {};
ECanaRegs.CANES.bit.BO = 0x0001;
}
if (ECanaRegs.CANES.bit.EP == 1) ECanaRegs.CANES.bit.EP = 0x0001;
if (ECanaRegs.CANES.bit.EW == 1) ECanaRegs.CANES.bit.EW = 0x0001;
if (ECanaRegs.CANES.bit.SMA == 1)
{
ECanaRegs.CANMC.bit.SUSP = 1;
//ECanaRegs.CANES.bit.SMA = 0x0001;
}
//if (ECanaRegs.CANES.bit.CCE == 1) ECanaRegs.CANES.bit.CCE = 0x0001;
if (ECanaRegs.CANES.bit.PDA == 1) ECanaRegs.CANES.bit.PDA = 0x0001;
LedSwitch();
return(false);
}
}
The problem that i have is that even when i reset the error flags with ResetErr(), and un-plug one of the CAN-Modules from the T node and plug in again, the communication gets bloked.
Thank You.
Regards.