X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/244bba2097574fd9c4905eadac069c57796cbc28..f7ab433c67b86723385ec05ee9c7b96dd18e6dde:/Projects/AVRISP/Lib/V2ProtocolTarget.c?ds=sidebyside diff --git a/Projects/AVRISP/Lib/V2ProtocolTarget.c b/Projects/AVRISP/Lib/V2ProtocolTarget.c index c36295ea0..9f8978a70 100644 --- a/Projects/AVRISP/Lib/V2ProtocolTarget.c +++ b/Projects/AVRISP/Lib/V2ProtocolTarget.c @@ -79,7 +79,7 @@ uint8_t V2Protocol_GetSPIPrescalerMask(void) /** Asserts or deasserts the target's reset line, using the correct polarity as set by the host using a SET PARAM command. * When not asserted, the line is tristated so as not to intefere with normal device operation. * - * \param ResetTarget Boolean true when the target should be held in reset, false otherwise + * \param[in] ResetTarget Boolean true when the target should be held in reset, false otherwise */ void V2Protocol_ChangeTargetResetLine(bool ResetTarget) { @@ -92,19 +92,19 @@ void V2Protocol_ChangeTargetResetLine(bool ResetTarget) } else { - RESET_LINE_PORT &= ~RESET_LINE_MASK; RESET_LINE_DDR &= ~RESET_LINE_MASK; + RESET_LINE_PORT &= ~RESET_LINE_MASK; } } /** Waits until the last issued target memory programming command has completed, via the check mode given and using * the given parameters. * - * \param ProgrammingMode Programming mode used and completion check to use, a mask of PROG_MODE_* constants - * \param PollAddress Memory address to poll for completion if polling check mode used - * \param PollValue Poll value to check against if polling check mode used - * \param DelayMS Milliseconds to delay before returning if delay check mode used - * \param ReadMemCommand Device low-level READ MEMORY command to send if value check mode used + * \param[in] ProgrammingMode Programming mode used and completion check to use, a mask of PROG_MODE_* constants + * \param[in] PollAddress Memory address to poll for completion if polling check mode used + * \param[in] PollValue Poll value to check against if polling check mode used + * \param[in] DelayMS Milliseconds to delay before returning if delay check mode used + * \param[in] ReadMemCommand Device low-level READ MEMORY command to send if value check mode used * * \return V2 Protocol status \ref STATUS_CMD_OK if the no timeout occurred, \ref STATUS_RDY_BSY_TOUT or * \ref STATUS_CMD_TOUT otherwise @@ -155,14 +155,17 @@ uint8_t V2Protocol_WaitWhileTargetBusy(void) { TCNT0 = 0; + bool DeviceBusy; + do { SPI_SendByte(0xF0); SPI_SendByte(0x00); SPI_SendByte(0x00); + DeviceBusy = (SPI_ReceiveByte() & 0x01); } - while ((SPI_ReceiveByte() & 0x01) && (TCNT0 < TARGET_BUSY_TIMEOUT_MS)); + while (DeviceBusy && (TCNT0 < TARGET_BUSY_TIMEOUT_MS)); if (TCNT0 >= TARGET_BUSY_TIMEOUT_MS) return STATUS_RDY_BSY_TOUT;