From 7e74bd3ea2f8de6c6a78fc8e2527c806b2dd8476 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 23 Aug 2009 10:17:13 +0000 Subject: Moved out target-related V2 protocol commands into a seperate file for the AVRISP project. Added Load Extended Command functionality to the LOAD ADDRESS V2 Protocol command handler for devices with more than 64KB of memory. --- Projects/Incomplete/AVRISP/Lib/V2Protocol.c | 74 +---------------------------- 1 file changed, 2 insertions(+), 72 deletions(-) (limited to 'Projects/Incomplete/AVRISP/Lib/V2Protocol.c') diff --git a/Projects/Incomplete/AVRISP/Lib/V2Protocol.c b/Projects/Incomplete/AVRISP/Lib/V2Protocol.c index dc6d3c668..2feefc8db 100644 --- a/Projects/Incomplete/AVRISP/Lib/V2Protocol.c +++ b/Projects/Incomplete/AVRISP/Lib/V2Protocol.c @@ -36,77 +36,6 @@ #define INCLUDE_FROM_V2PROTOCOL_C #include "V2Protocol.h" -uint32_t CurrentAddress; - - -/* Table of masks for SPI_Init() from a given PARAM_SCK_DURATION value */ -static const uint8_t SPIMaskFromSCKDuration[] = - { - #if (F_CPU == 8000000) - SPI_SPEED_FCPU_DIV_2, - #endif - SPI_SPEED_FCPU_DIV_2, SPI_SPEED_FCPU_DIV_4, SPI_SPEED_FCPU_DIV_8, - SPI_SPEED_FCPU_DIV_16, SPI_SPEED_FCPU_DIV_32, SPI_SPEED_FCPU_DIV_64 - #if (F_CPU == 16000000) - , SPI_SPEED_FCPU_DIV_128 - #endif - }; - -static uint8_t V2Protocol_GetSPIPrescalerMask(void) -{ - uint8_t SCKDuration = V2Params_GetParameterValue(PARAM_SCK_DURATION); - - if (SCKDuration >= sizeof(SPIMaskFromSCKDuration)) - SCKDuration = (sizeof(SPIMaskFromSCKDuration) - 1); - - return SPIMaskFromSCKDuration[SCKDuration]; -} - -static void V2Protocol_ChangeTargetResetLine(bool ResetTarget) -{ - if (ResetTarget) - { - RESET_LINE_DDR |= RESET_LINE_MASK; - - if (!(V2Params_GetParameterValue(PARAM_RESET_POLARITY))) - RESET_LINE_PORT |= RESET_LINE_MASK; - } - else - { - RESET_LINE_PORT &= ~RESET_LINE_MASK; - RESET_LINE_DDR &= ~RESET_LINE_MASK; - } -} - -static void V2Protocol_DelayMS(uint8_t MS) -{ - while (MS--) - _delay_ms(1); -} - -static uint8_t V2Protocol_WaitWhileTargetBusy(void) -{ - uint8_t TimeoutMS = TARGET_BUST_TIMEOUT_MS; - uint8_t ResponseByte; - - do - { - V2Protocol_DelayMS(1); - - SPI_SendByte(0xF0); - SPI_SendByte(0x00); - - SPI_SendByte(0x00); - ResponseByte = SPI_ReceiveByte(); - } - while ((ResponseByte & 0x01) && (TimeoutMS--)); - - if (!(TimeoutMS)) - return STATUS_CMD_TOUT; - else - return STATUS_CMD_OK; -} - void V2Protocol_ProcessCommand(void) { uint8_t V2Command = Endpoint_Read_Byte(); @@ -223,7 +152,8 @@ static void V2Protocol_Command_LoadAddress(void) Endpoint_ClearOUT(); Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); - // TODO: Check for extended address + if (CurrentAddress & (1UL << 31)) + V2Protocol_LoadExtendedAddress(); Endpoint_Write_Byte(CMD_LOAD_ADDRESS); Endpoint_Write_Byte(STATUS_CMD_OK); -- cgit v1.2.3