projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add extra LUFA TAR archive export exclusions.
[pub/USBasp.git]
/
Projects
/
AVRISP-MKII
/
Lib
/
V2Protocol.c
diff --git
a/Projects/AVRISP-MKII/Lib/V2Protocol.c
b/Projects/AVRISP-MKII/Lib/V2Protocol.c
index
b510d43
..
f485810
100644
(file)
--- a/
Projects/AVRISP-MKII/Lib/V2Protocol.c
+++ b/
Projects/AVRISP-MKII/Lib/V2Protocol.c
@@
-1,13
+1,13
@@
/*
LUFA Library
/*
LUFA Library
- Copyright (C) Dean Camera, 201
1
.
+ Copyright (C) Dean Camera, 201
2
.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
2
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
@@
-44,24
+44,31
@@
bool MustLoadExtendedAddress;
/** ISR to manage timeouts whilst processing a V2Protocol command */
/** ISR to manage timeouts whilst processing a V2Protocol command */
-ISR(
WDT_vect, ISR_
BLOCK)
+ISR(
TIMER0_COMPA_vect, ISR_NO
BLOCK)
{
{
- TimeoutExpired = true;
- wdt_disable();
+ if (TimeoutTicksRemaining)
+ TimeoutTicksRemaining--;
+ else
+ TCCR0B = 0;
}
}
-/** Initiali
s
es the hardware and software associated with the V2 protocol command handling. */
+/** Initiali
z
es the hardware and software associated with the V2 protocol command handling. */
void V2Protocol_Init(void)
{
void V2Protocol_Init(void)
{
- #if defined(ADC)
+ #if defined(ADC)
&& !defined(NO_VTARGET_DETECT)
/* Initialize the ADC converter for VTARGET level detection on supported AVR models */
ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128);
ADC_SetupChannel(VTARGET_ADC_CHANNEL);
/* Initialize the ADC converter for VTARGET level detection on supported AVR models */
ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128);
ADC_SetupChannel(VTARGET_ADC_CHANNEL);
- ADC_StartReading(
ADC_REFERENCE_AVCC
| ADC_RIGHT_ADJUSTED | VTARGET_ADC_CHANNEL_MASK);
+ ADC_StartReading(
VTARGET_REF_MASK
| ADC_RIGHT_ADJUSTED | VTARGET_ADC_CHANNEL_MASK);
#endif
#endif
+ /* Timeout timer initialization (~10ms period) */
+ OCR0A = (((F_CPU / 1024) / 100) - 1);
+ TCCR0A = (1 << WGM01);
+ TIMSK0 = (1 << OCIE0A);
+
V2Params_LoadNonVolatileParamValues();
V2Params_LoadNonVolatileParamValues();
-
+
#if defined(ENABLE_ISP_PROTOCOL)
ISPTarget_ConfigureRescueClock();
#endif
#if defined(ENABLE_ISP_PROTOCOL)
ISPTarget_ConfigureRescueClock();
#endif
@@
-73,12
+80,11
@@
void V2Protocol_Init(void)
*/
void V2Protocol_ProcessCommand(void)
{
*/
void V2Protocol_ProcessCommand(void)
{
- uint8_t V2Command = Endpoint_Read_
Byte
();
+ uint8_t V2Command = Endpoint_Read_
8
();
- /* Start the watchdog with timeout interrupt enabled to manage the timeout */
- TimeoutExpired = false;
- wdt_enable(WDTO_1S);
- WDTCSR |= (1 << WDIE);
+ /* Reset timeout counter duration and start the timer */
+ TimeoutTicksRemaining = COMMAND_TIMEOUT_TICKS;
+ TCCR0B = ((1 << CS02) | (1 << CS00));
switch (V2Command)
{
switch (V2Command)
{
@@
-140,8
+146,8
@@
void V2Protocol_ProcessCommand(void)
break;
}
break;
}
- /* Disable the timeout management
watchdog
timer */
-
wdt_disable()
;
+ /* Disable the timeout management timer */
+
TCCR0B = 0
;
Endpoint_WaitUntilReady();
Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);
Endpoint_WaitUntilReady();
Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);
@@
-166,8
+172,8
@@
static void V2Protocol_UnknownCommand(const uint8_t V2Command)
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
- Endpoint_Write_
Byte
(V2Command);
- Endpoint_Write_
Byte
(STATUS_CMD_UNKNOWN);
+ Endpoint_Write_
8
(V2Command);
+ Endpoint_Write_
8
(STATUS_CMD_UNKNOWN);
Endpoint_ClearIN();
}
Endpoint_ClearIN();
}
@@
-178,9
+184,9
@@
static void V2Protocol_SignOn(void)
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
- Endpoint_Write_
Byte
(CMD_SIGN_ON);
- Endpoint_Write_
Byte
(STATUS_CMD_OK);
- Endpoint_Write_
Byte
(sizeof(PROGRAMMER_ID) - 1);
+ Endpoint_Write_
8
(CMD_SIGN_ON);
+ Endpoint_Write_
8
(STATUS_CMD_OK);
+ Endpoint_Write_
8
(sizeof(PROGRAMMER_ID) - 1);
Endpoint_Write_Stream_LE(PROGRAMMER_ID, (sizeof(PROGRAMMER_ID) - 1), NULL);
Endpoint_ClearIN();
}
Endpoint_Write_Stream_LE(PROGRAMMER_ID, (sizeof(PROGRAMMER_ID) - 1), NULL);
Endpoint_ClearIN();
}
@@
-194,8
+200,8
@@
static void V2Protocol_ResetProtection(void)
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
- Endpoint_Write_
Byte
(CMD_RESET_PROTECTION);
- Endpoint_Write_
Byte
(STATUS_CMD_OK);
+ Endpoint_Write_
8
(CMD_RESET_PROTECTION);
+ Endpoint_Write_
8
(STATUS_CMD_OK);
Endpoint_ClearIN();
}
Endpoint_ClearIN();
}
@@
-207,33
+213,33
@@
static void V2Protocol_ResetProtection(void)
*/
static void V2Protocol_GetSetParam(const uint8_t V2Command)
{
*/
static void V2Protocol_GetSetParam(const uint8_t V2Command)
{
- uint8_t ParamID = Endpoint_Read_
Byte
();
+ uint8_t ParamID = Endpoint_Read_
8
();
uint8_t ParamValue;
if (V2Command == CMD_SET_PARAMETER)
uint8_t ParamValue;
if (V2Command == CMD_SET_PARAMETER)
- ParamValue = Endpoint_Read_
Byte
();
+ ParamValue = Endpoint_Read_
8
();
Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
- Endpoint_Write_
Byte
(V2Command);
+ Endpoint_Write_
8
(V2Command);
uint8_t ParamPrivs = V2Params_GetParameterPrivileges(ParamID);
if ((V2Command == CMD_SET_PARAMETER) && (ParamPrivs & PARAM_PRIV_WRITE))
{
uint8_t ParamPrivs = V2Params_GetParameterPrivileges(ParamID);
if ((V2Command == CMD_SET_PARAMETER) && (ParamPrivs & PARAM_PRIV_WRITE))
{
- Endpoint_Write_
Byte
(STATUS_CMD_OK);
+ Endpoint_Write_
8
(STATUS_CMD_OK);
V2Params_SetParameterValue(ParamID, ParamValue);
}
else if ((V2Command == CMD_GET_PARAMETER) && (ParamPrivs & PARAM_PRIV_READ))
{
V2Params_SetParameterValue(ParamID, ParamValue);
}
else if ((V2Command == CMD_GET_PARAMETER) && (ParamPrivs & PARAM_PRIV_READ))
{
- Endpoint_Write_
Byte
(STATUS_CMD_OK);
- Endpoint_Write_
Byte
(V2Params_GetParameterValue(ParamID));
+ Endpoint_Write_
8
(STATUS_CMD_OK);
+ Endpoint_Write_
8
(V2Params_GetParameterValue(ParamID));
}
else
{
}
else
{
- Endpoint_Write_
Byte
(STATUS_CMD_FAILED);
+ Endpoint_Write_
8
(STATUS_CMD_FAILED);
}
Endpoint_ClearIN();
}
Endpoint_ClearIN();
@@
-254,8
+260,8
@@
static void V2Protocol_LoadAddress(void)
if (CurrentAddress & (1UL << 31))
MustLoadExtendedAddress = true;
if (CurrentAddress & (1UL << 31))
MustLoadExtendedAddress = true;
- Endpoint_Write_
Byte
(CMD_LOAD_ADDRESS);
- Endpoint_Write_
Byte
(STATUS_CMD_OK);
+ Endpoint_Write_
8
(CMD_LOAD_ADDRESS);
+ Endpoint_Write_
8
(STATUS_CMD_OK);
Endpoint_ClearIN();
}
Endpoint_ClearIN();
}