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

Setting SYSCON register before EINIT.

Hello, I am trying to initialise the CAN interface on a C164 - I need to set the XPEN bit, and clear the CAN1DIS bit in the SYSCON register.

However, I am using C, and thus C_STARTUP_CODE is loaded into RAM, which contains the EINIT instruction (which locks down access to SYSCON). Therefore, EINIT has already been executed by the time my main() starts, and so I cannot access this register.

I'm having trouble interpreting the machine code on the reset vectors too, so I can't just put a JumpToHere, JumpToThere, sequence in.

Any help would be much appreciated.

Parents
  • It seems though, that the label given to the SYSCON bit I am interested in has different names in my user-manual (XPEN) and in Start167.A66 (_XRAMEN). Is this an issue?

    It's hard to say. START167.A66 from my Keil distribution doesn't have the label _XRAMEN. But it's not necessarily a problem. Anyway, just make sure that it's bit number 2 (SYSCON.2). The reason why they could call it _XRAMEN is that on some C16x chips XRAM is the only X-peripheral, if my memory serves me.

    It also seems from some preliminary testing, that setting this bit shuts down my use of RS-232 in testing

    I've never dealt with a C164, so I really don't know. Could it be that in your microcontroller CAN pins are multiplexed with UART pins, so it can't be both at the same time? Or maybe it's something more subtle.

    - mike

Reply
  • It seems though, that the label given to the SYSCON bit I am interested in has different names in my user-manual (XPEN) and in Start167.A66 (_XRAMEN). Is this an issue?

    It's hard to say. START167.A66 from my Keil distribution doesn't have the label _XRAMEN. But it's not necessarily a problem. Anyway, just make sure that it's bit number 2 (SYSCON.2). The reason why they could call it _XRAMEN is that on some C16x chips XRAM is the only X-peripheral, if my memory serves me.

    It also seems from some preliminary testing, that setting this bit shuts down my use of RS-232 in testing

    I've never dealt with a C164, so I really don't know. Could it be that in your microcontroller CAN pins are multiplexed with UART pins, so it can't be both at the same time? Or maybe it's something more subtle.

    - mike

Children