I am using T89C51CC03 UA right now. while debugging I found out that even if I wanna send a message once ( via interrupt ), the CAN bus is full of the same message with a period of 1.5ms. I am sure that other messages are not sent by the interrrupt routine by placing some debugging code inside it. My question is : Are the other messages sent automatically by the hardware itself if there are no other CAN nodes on the bus to receive them? If so, how could I solve this problem?
The answer your question is yes. If you broadcast a message and there are no other nodes on the bus YOUR CAN module will send the message forever. You're CAN module will start out in error active mode and NAK your message until you hit an error level and then become error passive (message is still sending). The reason is due to the fact that no one has acknowledged your message. You need two nodes on the bus (if your device has two CAN modules then you need to connect them together, refer to your user's manual). The other CAN just needs to be programmed to the same baud rate.
Thank you so much. I connected my controller to the message source which is a module with another CAN controller, then the problem was solved. So, is it possilbe to turn off the continuously message sending function? I mean message sending is up to my code even if there is no other controllers on the bus? Thanks Vince
Switch CAN to TTC mode. From AT89C51CC03 datasheet: In this mode, CAN only sends the frame once, even if an error occurs. Regards, Oleg
View all questions in Keil forum