*/
TOSH_SIGNAL(USCIAB1TX_VECTOR) {
if (READ_FLAG(UC1IFG & UC1IE, UCB1RXIE))
- signal IntB.rx(UCB1RXBUF); /* I2C receive */
+ /* I2C receive. Do not read UCB1RXBUF here, as the code receiving
+ * IntB.rx() may first need to set stop and/or start bits. The receiver
+ * must read UCB1RXBUF.
+ */
+ signal IntB.rx(0);
else if (READ_FLAG(UC1IFG & UC1IE, UCA1TXIFG))
signal IntA.tx();
else if (READ_FLAG(UC1IFG & UC1IE, UCB1TXIFG))