Part Number: MSP430F5438A
Hello TI Forum,
I am working on an application where a MSP430F5438A needs to act as an I2C target. Because of this, errata USCI39 applies to me, and I need to implement a workaround for this issue. The recommended workaround is, "Disable the UCSTTIE, UCSTPIE and UCNACKIE before the GIE is set. After GIE is set, the local interrupt enable flags can be set again". If I implement this workaround, will the act of disabling or re-enabling UCSTTIE, UCSTPIE and UCNACKIE potentially clear any unserviced interrupts or prevent an interrupt flag from occurring while disabled? Or will the interrupt flags be preserved and/or still be asserted while the IE's are disabled, and once the IE's are re-enabled, an interrupt can actually be generated and serviced?
Secondly, based on this forum post, it appears that there needs to be extra NOPs after re-enabling the IE registers, possibly based on the speed the MCU is running at. In my application, I am planning to run at 25 MHz, so if that is indeed the case, that would be good to know. Is there any new information available that might suggest how many extra NOPs are needed based on the MCU speed?
Lastly, again based on the linked forum post, it appears that the RETI instruction can trigger this behavior. Since that's the case, does anybody know of a way to force the compiler to replace the RETI instruction with a series of instructions that will disable the IE registers, enable GIE, re-enable the IE registers, then return from interrupt?
Thanks in advance for any assistance!



