projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Renamed the PRNT_Host_SendString(), CDC_Host_SendString() and CDC_Device_SendString...
[pub/USBasp.git]
/
Projects
/
AVRISP-MKII
/
Lib
/
ISP
/
ISPTarget.c
diff --git
a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
index
657c2c9
..
88b33fc
100644
(file)
--- a/
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
+++ b/
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
@@
-1,13
+1,13
@@
/*
LUFA Library
/*
LUFA Library
- Copyright (C) Dean Camera, 201
0
.
+ Copyright (C) Dean Camera, 201
1
.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 201
0
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@
-117,6
+117,7
@@
volatile uint8_t SoftSPI_BitsRemaining;
/** ISR to handle software SPI transmission and reception */
ISR(TIMER1_COMPA_vect, ISR_BLOCK)
{
/** ISR to handle software SPI transmission and reception */
ISR(TIMER1_COMPA_vect, ISR_BLOCK)
{
+ /* Check if rising edge (output next bit) or falling edge (read in next bit) */
if (!(PINB & (1 << 1)))
{
if (SoftSPI_Data & (1 << 7))
if (!(PINB & (1 << 1)))
{
if (SoftSPI_Data & (1 << 7))
@@
-178,6
+179,8
@@
void ISPTarget_DisableTargetISP(void)
DDRB &= ~((1 << 1) | (1 << 2));
PORTB &= ~((1 << 0) | (1 << 3));
DDRB &= ~((1 << 1) | (1 << 2));
PORTB &= ~((1 << 0) | (1 << 3));
+ /* Must re-enable rescue clock once software ISP has exited, as the timer for the rescue clock is
+ * re-purposed for software SPI */
ISPTarget_ConfigureRescueClock();
}
}
ISPTarget_ConfigureRescueClock();
}
}
@@
-247,7
+250,7
@@
uint8_t ISPTarget_TransferSoftSPIByte(const uint8_t Byte)
TCNT1 = 0;
TCCR1B = ((1 << WGM12) | (1 << CS11));
TCNT1 = 0;
TCCR1B = ((1 << WGM12) | (1 << CS11));
- while (SoftSPI_BitsRemaining &&
TimeoutTicksRemaining
);
+ while (SoftSPI_BitsRemaining &&
!(TimeoutExpired)
);
TCCR1B = 0;
return SoftSPI_Data;
TCCR1B = 0;
return SoftSPI_Data;
@@
-289,9
+292,9
@@
uint8_t ISPTarget_WaitWhileTargetBusy(void)
ISPTarget_SendByte(0x00);
ISPTarget_SendByte(0x00);
}
ISPTarget_SendByte(0x00);
ISPTarget_SendByte(0x00);
}
- while ((ISPTarget_ReceiveByte() & 0x01) &&
TimeoutTicksRemaining
);
+ while ((ISPTarget_ReceiveByte() & 0x01) &&
!(TimeoutExpired)
);
- return
TimeoutTicksRemaining ? STATUS_CMD_OK : STATUS_RDY_BSY_TOUT
;
+ return
(TimeoutExpired) ? STATUS_RDY_BSY_TOUT : STATUS_CMD_OK
;
}
/** Sends a low-level LOAD EXTENDED ADDRESS command to the target, for addressing of memory beyond the
}
/** Sends a low-level LOAD EXTENDED ADDRESS command to the target, for addressing of memory beyond the
@@
-341,9
+344,9
@@
uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode,
ISPTarget_SendByte(PollAddress >> 8);
ISPTarget_SendByte(PollAddress & 0xFF);
}
ISPTarget_SendByte(PollAddress >> 8);
ISPTarget_SendByte(PollAddress & 0xFF);
}
- while ((ISPTarget_TransferByte(0x00) == PollValue) &&
TimeoutTicksRemaining
);
+ while ((ISPTarget_TransferByte(0x00) == PollValue) &&
!(TimeoutExpired)
);
- if (
!(TimeoutTicksRemaining)
)
+ if (
TimeoutExpired
)
ProgrammingStatus = STATUS_CMD_TOUT;
break;
ProgrammingStatus = STATUS_CMD_TOUT;
break;