Hallo zusammen,
ich arbeite mit einem MSP430FR5729 und möchte mit Hilfe des USCI Moduls
via I2C ein Byte empfangen und danach eine Stop Bedinung generieren.
Der dazu verwendete Code in der FSM zum empfangen sieht wie folgt aus:
1 | //=============================================================================//
|
2 | // RXIFG0
|
3 | //=============================================================================//
|
4 | case 0x16: if (RXByteCounter > 0)
|
5 | {
|
6 | *pRXData++ = UCB0RXBUF; // Multiple bytes left to receive
|
7 | RXByteCounter--; // Decrement RX byte counter
|
8 |
|
9 | if (RXByteCounter == 0)
|
10 | {
|
11 | P3OUT ^= BIT1;
|
12 | UCB0CTLW0 |= UCTR + UCTXSTP; // WIRD NICHT AUSGEFÜHRT
|
13 | P3OUT &= ~BIT0;
|
14 | UCB0IFG &= ~UCRXIFG;
|
15 | break;
|
16 | }
|
17 |
|
18 | UCB0IFG &= ~UCRXIFG;
|
19 | break;
|
20 | }
|
21 | else if (RXByteCounter == 0)
|
22 | {
|
23 | *pRXData = UCB0RXBUF; // Last byte to be received
|
24 | UCB0CTLW0 |= UCTXSTP;
|
25 | UCB0IFG &= ~UCRXIFG;
|
26 | break;
|
27 | }
|
Nachdem ersten empfangen Byte springe ich zwar in die richtige Zeile
aber die Stop Bedingung wird erst ausgeführt, nachdem NOCH ein Byte
empfangen wurde.
Ich möchte aber nur EIN Byte empfangen.
Ich verstehe das nicht und hoffe Jemand hier weiß was ich falsch mache.
Viele Grüße