Make sure that the NVM bus/controller busy waits in the AVRISP MKII clone project abort properly if a timeout occurs while waiting for a response.
This commit is contained in:
parent
9cad677ebb
commit
ceb16ee24f
3 changed files with 54 additions and 15 deletions
|
@ -81,7 +81,15 @@ bool TINYNVM_WaitWhileNVMBusBusy(void)
|
|||
{
|
||||
/* Send the SLDCS command to read the TPI STATUS register to see the NVM bus is active */
|
||||
XPROGTarget_SendByte(TPI_CMD_SLDCS | TPI_STATUS_REG);
|
||||
if (XPROGTarget_ReceiveByte() & TPI_STATUS_NVM)
|
||||
|
||||
uint8_t StatusRegister = XPROGTarget_ReceiveByte();
|
||||
|
||||
/* We might have timed out waiting for the status register read response, check here */
|
||||
if (!(TimeoutMSRemaining))
|
||||
return false;
|
||||
|
||||
/* Check the status register read response to see if the NVM bus is enabled */
|
||||
if (StatusRegister & TPI_STATUS_NVM)
|
||||
{
|
||||
TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
|
||||
return true;
|
||||
|
@ -111,8 +119,14 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
|
|||
/* Send the SIN command to read the TPI STATUS register to see the NVM bus is busy */
|
||||
TINYNVM_SendReadNVMRegister(XPROG_Param_NVMCSRRegAddr);
|
||||
|
||||
uint8_t StatusRegister = XPROGTarget_ReceiveByte();
|
||||
|
||||
/* We might have timed out waiting for the status register read response, check here */
|
||||
if (!(TimeoutMSRemaining))
|
||||
return false;
|
||||
|
||||
/* Check to see if the BUSY flag is still set */
|
||||
if (!(XPROGTarget_ReceiveByte() & (1 << 7)))
|
||||
if (!(StatusRegister & (1 << 7)))
|
||||
{
|
||||
TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
|
||||
return true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue