SLAZ171O October   2012  – May 2021 MSP430F2330

 

  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.      RHA40
      2.      YFF49
    3. 5.3 Memory-Mapped Hardware Revision (TLV Structure)
  6. 6Advisory Descriptions
    1. 6.1  BCL12
    2. 6.2  BCL13
    3. 6.3  BCL16
    4. 6.4  CPU14
    5. 6.5  CPU19
    6. 6.6  CPU45
    7. 6.7  EEM20
    8. 6.8  FLASH19
    9. 6.9  FLASH22
    10. 6.10 FLASH24
    11. 6.11 FLASH27
    12. 6.12 FLASH36
    13. 6.13 JTAG14
    14. 6.14 PORT10
    15. 6.15 SYS15
    16. 6.16 TA12
    17. 6.17 TA16
    18. 6.18 TA21
    19. 6.19 TAB22
    20. 6.20 TB2
    21. 6.21 TB16
    22. 6.22 TB24
    23. 6.23 USCI15
    24. 6.24 USCI16
    25. 6.25 USCI17
    26. 6.26 USCI18
    27. 6.27 USCI20
    28. 6.28 USCI21
    29. 6.29 USCI22
    30. 6.30 USCI23
    31. 6.31 USCI24
    32. 6.32 USCI25
    33. 6.33 USCI26
    34. 6.34 USCI27
    35. 6.35 USCI29
    36. 6.36 USCI30
    37. 6.37 USCI34
    38. 6.38 USCI35
    39. 6.39 USCI40
    40. 6.40 XOSC5
    41. 6.41 XOSC8
  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();
}

For IDE versions earlier than IAR V4.22 and CCS V4.2 in addition to the above code; include the ISR definition in the device header file.

In IAR Embedded Workbench include the following line in the device header file msp430xxxx.h.

/************************************************************
* Interrupt Vectors (offset from 0xFFE0)
************************************************************/

#define TRAPINT_VECTOR     (0*  2u)   /*INCLUDE THIS LINE IN .h FILE*/
#define PORT1_VECTOR             (2 * 2u)   /* 0xFFE4 Port 1 */

In Code Composer Essentials/Studio include the following line in the device header file msp430xxxx.h.

/************************************************************
* Interrupt Vectors (offset from 0xFFE0)
************************************************************/
#define TRAPINT_VECTOR    (0 * 1u)  /*INCLUDE THIS LINE IN .h FILE*/
#define PORT1_VECTOR            (2 * 1u)     /* 0xFFE4 Port 1 */