Problem with AERR ....

1 post / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

My circuit sends lots of diagnostic data via CAN.

At the moment I am fighting a problem with the CAN-cable pulled and the circuit running "offline"

Of course, I am getting an CANIT because sending these messages because the CAN goes ERRP (TEC 0x80) and fires an AERR for the actually sending MOb.

This seems correct as there is nobody who can acknowledge the Frame ( cable pulled!).

So my intended action is to throw away the frame.
For this I do the following:

uint8_t tmpMOb=CANHPMOB>>4;
/*
 * CANHPMOB enthält bei der Entstehung des Interrupts die Nummer des
 * verursachenden MObs
 */
	if(tmpMOb>0x0a)
	{
		//MOb aktivieren
		AT90CAN_MObActivate(tmpMOb);
		
		if(CANSTMOB==1)
		{
			CANCDMOB=0;	//MOb disablen
			CANSTMOB=0;
		}
		AT90CAN_MObRecover();
	}

But this seems not to be enough to stop that MOb from sending.
After running this code CANHPMOB has the same value as before - as if the send process and error has not been covered.

Whta is wrong there?

I program like a man:
COPY CON: > firmware.hex