SLAZ441K March   2013  – May 2021 MSP430G2955

 

  1. 1Functional Advisories
  2. 2Preprogrammed Software Advisories
  3. 3Debug Only Advisories
  4. 4Fixed by Compiler Advisories
  5. 5Nomenclature, Package Symbolization, and Revision Identification
    1. 5.1 Device Nomenclature
    2. 5.2 Package Markings
      1.      DA38
      2.      RHA40
    3. 5.3 Memory-Mapped Hardware Revision (TLV Structure)
  6. 6Advisory Descriptions
    1. 6.1  BCL12
    2. 6.2  CPU4
    3. 6.3  SYS15
    4. 6.4  TA12
    5. 6.5  TA16
    6. 6.6  TA21
    7. 6.7  TAB22
    8. 6.8  TAB26
    9. 6.9  TAB26
    10. 6.10 TB2
    11. 6.11 TB16
    12. 6.12 TB24
    13. 6.13 USCI20
    14. 6.14 USCI22
    15. 6.15 USCI23
    16. 6.16 USCI24
    17. 6.17 USCI25
    18. 6.18 USCI26
    19. 6.19 USCI29
    20. 6.20 USCI30
    21. 6.21 USCI34
    22. 6.22 USCI35
    23. 6.23 USCI40
    24. 6.24 XOSC5
  7. 7Revision History

USCI29

USCI Module

Category

Functional

Function

Timing of USCI I2C interrupts may result in call to a reserved ISR location

Description

When certain USCI I2C interrupt flags (IFG) are set and an automatic flag-clearing event on the I2C bus occurs, the device makes a call to the TRAPINT interrupt vector. This will only happen if the IFG is cleared within a critical time window (~6 CPU clock cycles) after a USCI interrupt request occurs and before the interrupt servicing is initiated. The affected interrupts are UCBxTXIFG, UCSTPIFG, UCSTTIFG and UCNACKIFG.

The automatic flag-clearing scenarios are described in the following situations:

(1) A pending UCBxTXIFG interrupt request is cleared on the falling SCL clock edge following a NACK.
(2) A pending UCSTPIFG, UCSTTIFG, or UCNACKIFG interrupt request is cleared by a following Start condition.

Workaround

(1) Poll the affected flags instead of enabling the interrupts.

(2) Define an ISR for the interrupt vector TRAPINT. If the failure condition occurs; a call to the TRAPINT ISR is made. After the interrupt is serviced, the device returns to the application code and continues execution.

Include the following ISR definition in the application code.

#pragma vector= TRAPINT_VECTOR
__interrupt void TRAPINT_ISR(void)
{
__no_operation();
}