X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/0b6d5467bc70ba36ff71a186da9cf4d0742612a6..46aea9d4ce0948f2340bfddc1c5a1bcc889e8840:/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c index 0a2dee73b..58df78559 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c @@ -92,7 +92,8 @@ void XPROGTarget_EnableTargetTPI(void) void XPROGTarget_DisableTargetPDI(void) { /* Switch to Rx mode to ensure that all pending transmissions are complete */ - XPROGTarget_SetRxMode(); + if (IsSending) + XPROGTarget_SetRxMode(); /* Turn off receiver and transmitter of the USART, clear settings */ UCSR1A = ((1 << TXC1) | (1 << RXC1)); @@ -108,7 +109,8 @@ void XPROGTarget_DisableTargetPDI(void) void XPROGTarget_DisableTargetTPI(void) { /* Switch to Rx mode to ensure that all pending transmissions are complete */ - XPROGTarget_SetRxMode(); + if (IsSending) + XPROGTarget_SetRxMode(); /* Turn off receiver and transmitter of the USART, clear settings */ UCSR1A |= (1 << TXC1) | (1 << RXC1); @@ -140,7 +142,7 @@ void XPROGTarget_SendByte(const uint8_t Byte) UDR1 = Byte; } -/** Receives a byte via the software USART, blocking until data is received. +/** Receives a byte via the hardware USART, blocking until data is received or timeout expired. * * \return Received byte from the USART */ @@ -169,6 +171,7 @@ void XPROGTarget_SendIdle(void) /* Wait for a full cycle of the clock */ while (PIND & (1 << 5)); while (!(PIND & (1 << 5))); + while (PIND & (1 << 5)); } } @@ -177,6 +180,7 @@ static void XPROGTarget_SetTxMode(void) /* Wait for a full cycle of the clock */ while (PIND & (1 << 5)); while (!(PIND & (1 << 5))); + while (PIND & (1 << 5)); PORTD |= (1 << 3); DDRD |= (1 << 3);