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

I2C session abruptly ends

Hi!

I'm working on LPC1857 controller and I required to test the i2c code I wrote. As far as I can see,as per data-sheet I've got all right with code. While the application is run, i2c is disabled.

I debugged and found that while clearing only the i2c-interrupt flag the entire control register for i2c is cleared, thereby disabling i2c.

>LPC_I2C0->CONCLR |= 0X00000008; // clear i2c interrupt only

Hope I made my doubt clear.

Thanks for anyone suggest anything to avoid this problem.

Parents
  • "I could have done that but for the reason that direct assignment as you suggested will simply clear enable bit for i2c along with the flag."

    You know that, or you just believe that?

    A register with the name CLR normally only clear the bits that you write a one to, and are available specifically to remove the synchronization issues you get with read/modify/write by processor instructions

    I.e. the actual modify is performed inside the peripherial instead of requiring a processor instructions to do it. This makes it thread-safe by having the clear be atomic.

Reply
  • "I could have done that but for the reason that direct assignment as you suggested will simply clear enable bit for i2c along with the flag."

    You know that, or you just believe that?

    A register with the name CLR normally only clear the bits that you write a one to, and are available specifically to remove the synchronization issues you get with read/modify/write by processor instructions

    I.e. the actual modify is performed inside the peripherial instead of requiring a processor instructions to do it. This makes it thread-safe by having the clear be atomic.

Children