title: I2C ISR and Interrupts
body: <p>Platform - ARM9</p>
  
  <p>I have a third party device connected via I2C to the ARM9. My problem is the I2C read/write is getting in a twist. It appears the IRQ line is asserted but never de-asserted when there is data to read. The read fails as the third-party device NACKs the address packet. So any subsequent write fails.</p>
  
  <p>I am wondering if my interrupt handling in ok. In the ISR that services the IRQ, I disable interrupts, unregister the interrupt handler and then signal to the task to go read from the I2C bus. Finally, I re-enable the interrupts.</p>
  
  <p>When the task services the signal posted above, I attempt to read data from the I2C bus but this fails. Finally, I always reregister the ISR after ever read attempt. There is no interrupt disabling/enabling that takes place during handling of the read signal.</p>
  
  <p>My question is do I need to disable interrupts when reading/writing to the I2C bus? </p>
  
  <p>Programming language of choice is c using propriety RTOS.</p>