AP29000 
Connecting C166 and C500 Microcontroller to CAN 
Ways of handling the SAE 81C90/91 and the CAN Module on the C167CR / C515C 
Application Note  55  V 1.0, 2004-02 
By resetting "CPUUPD" and setting the Transmission Request field "TXRQ" in the 
Message Control Register, the CAN controller resets NEWDAT and transmits the Data 
Frame: 
 C167CR: 
  MCR_Mn = 0xE7FF;  /* send Data Frame */ 
 
 C515C: 
  MCR1_Mn = 0xE7;   /* send Data Frame */ 
 
  /* RMTPND = unchanged; TXRQ   = set       */ 
  /* CPUUPD = reset;    NEWDAT = unchanged */ 
  /* MSGVAL = unchanged; TXIE   = unchanged */ 
  /* RXIE   = unchanged; INTPND = unchanged */ 
 
If the data bytes of the message object are not to be changed, setting TXRQ is enough 
to transmit the message. If the transmission was successful and was acknowledged by 
at least one other node, and if NEWDAT is still 0 after the transmission, the CAN 
controller resets TXRQ and RMTPND, sets bit TXOK in the Status Register and 
generates a status change interrupt (if enabled in the Control Register (IE=1; SIE=1)). 
If TXIE is set in the respective Message Control Register, a transmit interrupt is 
generated (if enabled in the Control Register (IE=1)). 
6.4.3  The Transmission of a Remote Frame with the CAN Module 
•  Make sure that you have configured a valid message object as receive object 
(DIR=0). Before the transmission of the Remote Frame, check NEWDAT first. If 
NEWDAT = 1, then the last received message for this object has not yet been read 
out, which should be done now together with a reset of NEWDAT. After another 
check of NEWDAT (which should be 0 by then), a Remote Frame can be generated 
by setting TXRQ in the Message Control Register of this message object. 
 C167CR: 
  MCR_Mn = 0xEFFF;  /* send Remote Frame */ 
 
 C515C: 
  MCR1_Mn = 0xEF;  /* send Remote Frame */ 
 
  /* RMTPND = unchanged; TXRQ   = set       */ 
  /* MSGLST = unchanged; NEWDAT = unchanged */ 
  /* MSGVAL = unchanged; TXIE   = unchanged */ 
  /* RXIE   = unchanged; INTPND = unchanged */