diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-08-23 10:17:13 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-08-23 10:17:13 +0000 |
commit | 7e74bd3ea2f8de6c6a78fc8e2527c806b2dd8476 (patch) | |
tree | 1d86590bdba1d42a34c5d82a719ebf85b89e7262 /Projects/Incomplete/AVRISP/Lib/V2Protocol.c | |
parent | f229502d9addacfbefe955a47931b980bfbb1a10 (diff) | |
download | lufa-7e74bd3ea2f8de6c6a78fc8e2527c806b2dd8476.tar.gz lufa-7e74bd3ea2f8de6c6a78fc8e2527c806b2dd8476.tar.bz2 lufa-7e74bd3ea2f8de6c6a78fc8e2527c806b2dd8476.zip |
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.
Diffstat (limited to 'Projects/Incomplete/AVRISP/Lib/V2Protocol.c')
-rw-r--r-- | Projects/Incomplete/AVRISP/Lib/V2Protocol.c | 74 |
1 files changed, 2 insertions, 72 deletions
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);
|