Added const where possible to the source functions in the Projects directory.

Added command timeout to the AVRISP project so that incorrectly connected targets no longer freeze the device.

Removed string descriptors from the TeensyHID bootloader to reduce its size.
This commit is contained in:
Dean Camera 2009-12-26 04:13:55 +00:00
parent 35dac470f2
commit d1608d4af3
20 changed files with 102 additions and 137 deletions

View file

@ -72,17 +72,20 @@
*/
static inline void ISPProtocol_DelayMS(uint8_t DelayMS)
{
TCNT0 = 0;
TIFR0 = (1 << OCF1A);
OCR2A = ((F_CPU / 64) / 1000);
TCCR2A = (1 << WGM01);
TCCR2B = ((1 << CS01) | (1 << CS00));
while (DelayMS)
{
if (TIFR0 & (1 << OCF1A))
if (TIFR2 & (1 << OCF2A))
{
TIFR0 = (1 << OCF1A);
TIFR2 = (1 << OCF2A);
DelayMS--;
}
}
TCCR2B = 0;
}
/* Function Prototypes: */

View file

@ -122,26 +122,15 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
break;
case PROG_MODE_WORD_VALUE_MASK:
case PROG_MODE_PAGED_VALUE_MASK:
TCNT0 = 0;
TIFR0 = (1 << OCF1A);
uint8_t TimeoutMS = TARGET_BUSY_TIMEOUT_MS;
do
{
SPI_SendByte(ReadMemCommand);
SPI_SendByte(PollAddress >> 8);
SPI_SendByte(PollAddress & 0xFF);
if (TIFR0 & (1 << OCF1A))
{
TIFR0 = (1 << OCF1A);
TimeoutMS--;
}
}
while ((SPI_TransferByte(0x00) != PollValue) && TimeoutMS);
while ((SPI_TransferByte(0x00) != PollValue) && TimeoutMSRemaining);
if (!(TimeoutMS))
if (!(TimeoutMSRemaining))
ProgrammingStatus = STATUS_CMD_TOUT;
break;
@ -161,27 +150,16 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
*/
uint8_t ISPTarget_WaitWhileTargetBusy(void)
{
TCNT0 = 0;
TIFR0 = (1 << OCF1A);
uint8_t TimeoutMS = TARGET_BUSY_TIMEOUT_MS;
do
{
SPI_SendByte(0xF0);
SPI_SendByte(0x00);
SPI_SendByte(0x00);
if (TIFR0 & (1 << OCF1A))
{
TIFR0 = (1 << OCF1A);
TimeoutMS--;
}
}
while ((SPI_ReceiveByte() & 0x01) && TimeoutMS);
while ((SPI_ReceiveByte() & 0x01) && TimeoutMSRemaining);
if (!(TimeoutMS))
if (!(TimeoutMSRemaining))
return STATUS_RDY_BSY_TOUT;
else
return STATUS_CMD_OK;

View file

@ -57,10 +57,7 @@
/* Macros: */
/** Total number of allowable ISP programming speeds supported by the device */
#define TOTAL_ISP_PROGRAMMING_SPEEDS 7
/** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */
#define TARGET_BUSY_TIMEOUT_MS 100
/* Function Prototypes: */
uint8_t ISPTarget_GetSPIPrescalerMask(void);
void ISPTarget_ChangeTargetResetLine(const bool ResetTarget);