This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Register Settings to Use CAN Message Object 15 as receiver

I am pretty familiar with CAN message objects 1-14, but for some reason, my current register settings do not allow message 15 to interrupt on every message. Here are my settings:

C1GMS = 0xE0FF;
C1UGML = 0xFFFF;
C1LGML = 0xF8FF;

CAN_OBJ[15].MCR = 0x5599;
CAN_OBJ[15].MCFG = 0x0080;

C1UMLM = 0x0000;
C1LMLM = 0x0000;

CAN_OBJ[15].UAR = 0x0000;
CAN_OBJ[15].LAR = 0x0000;

I can get the rest of my routines to interrupt on messages 1-14 with no problem with the existing code. Any help would be much appreciated. Thanks...

  • Your settings seems to be OK, maybe your problem is somewhere else: very important is how you process the CAN controller interrupts.
    This is a bit tricky, you must stay into the interrupt routine until INTID register reads 0
    Infineon has good articles and appnotes on how to use the C167 CAN controller, take a look at the following page

    http://www.infineon.com/cgi/ecrm.dll/ecrm/scripts/prod_ov.jsp?oid=13756&cat_oid=-8137

    There you will find:
    AP1621 - CAN interrupt structure
    AP2922 - CAN driver routines (with source code)

  • Hi there,
    I'm looking for Register Settings Description in detail (bit by bit) of ST10/C167. Could you please help me to find out anything useful?

    Regards,
    Shahram Tehrani

  • Hi,
    on Infineon web page you can find all the C167 documentation; if you want, you can even download DAvE, an automated codegenerator that will help you in understanding how the CAN controller works.
    On the Keil website you will find some appnotes and some good examples that will allow you to do a very close simulation of the CAN module; please take look at all the CAN appnotes published on the Keil website, even if not for C167, they will explain you how to use the simulator for simulating the CAN interface.
    In my opinion, they are clear enough to reach a good knowledge of the CAN module.
    Bruno