projects
/
pub
/
USBasp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2059fd8
)
Ensure TPI enable timing requirements are met in AVRISP-MKII programmer. Remove inval...
author
Dean Camera
<dean@fourwalledcubicle.com>
Wed, 27 Jan 2010 03:45:15 +0000
(
03:45
+0000)
committer
Dean Camera
<dean@fourwalledcubicle.com>
Wed, 27 Jan 2010 03:45:15 +0000
(
03:45
+0000)
LUFA/ManPages/FutureChanges.txt
patch
|
blob
|
blame
|
history
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
patch
|
blob
|
blame
|
history
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
patch
|
blob
|
blame
|
history
diff --git
a/LUFA/ManPages/FutureChanges.txt
b/LUFA/ManPages/FutureChanges.txt
index
d2ba13f
..
dc8c27b
100644
(file)
--- a/
LUFA/ManPages/FutureChanges.txt
+++ b/
LUFA/ManPages/FutureChanges.txt
@@
-33,7
+33,6
@@
* -# Finish MIDI class Bootloader
\r
* -# Finish SideShow demo
\r
* -# Finish StandaloneProgrammer project
\r
* -# Finish MIDI class Bootloader
\r
* -# Finish SideShow demo
\r
* -# Finish StandaloneProgrammer project
\r
- * -# Finish Webserver project
\r
* - Ports
\r
* -# AVR32 UC3B series microcontrollers
\r
* -# Atmel ARM7 series microcontrollers
\r
* - Ports
\r
* -# AVR32 UC3B series microcontrollers
\r
* -# Atmel ARM7 series microcontrollers
\r
diff --git
a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
index
c2714f2
..
0057a67
100644
(file)
--- a/
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
+++ b/
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
@@
-270,14
+270,14
@@
static void XPROGProtocol_WriteMemory(void)
Endpoint_ClearOUT();
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
Endpoint_ClearOUT();
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
- /* Assume FLASH page programming by default, as it is the common case */
\r
- uint8_t WriteCommand = XMEGA_NVM_CMD_WRITEFLASHPAGE;
\r
- uint8_t WriteBuffCommand = XMEGA_NVM_CMD_LOADFLASHPAGEBUFF;
\r
- uint8_t EraseBuffCommand = XMEGA_NVM_CMD_ERASEFLASHPAGEBUFF;
\r
- bool PagedMemory = true;
\r
-
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
{
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
{
\r
+ /* Assume FLASH page programming by default, as it is the common case */
\r
+ uint8_t WriteCommand = XMEGA_NVM_CMD_WRITEFLASHPAGE;
\r
+ uint8_t WriteBuffCommand = XMEGA_NVM_CMD_LOADFLASHPAGEBUFF;
\r
+ uint8_t EraseBuffCommand = XMEGA_NVM_CMD_ERASEFLASHPAGEBUFF;
\r
+ bool PagedMemory = true;
\r
+
\r
if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_APPL)
\r
{
\r
WriteCommand = XMEGA_NVM_CMD_WRITEAPPSECPAGE;
\r
if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_APPL)
\r
{
\r
WriteCommand = XMEGA_NVM_CMD_WRITEAPPSECPAGE;
\r
@@
-321,8
+321,6
@@
static void XPROGProtocol_WriteMemory(void)
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- Serial_TxByte((uint8_t)WriteMemory_XPROG_Params.Length);
\r
-
\r
/* Send write command to the TPI device, indicate timeout if occurred */
\r
if (!(TINYNVM_WriteMemory(WriteMemory_XPROG_Params.Address, WriteMemory_XPROG_Params.ProgData,
\r
WriteMemory_XPROG_Params.Length)))
\r
/* Send write command to the TPI device, indicate timeout if occurred */
\r
if (!(TINYNVM_WriteMemory(WriteMemory_XPROG_Params.Address, WriteMemory_XPROG_Params.ProgData,
\r
WriteMemory_XPROG_Params.Length)))
\r
@@
-368,8
+366,6
@@
static void XPROGProtocol_ReadMemory(void)
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- Serial_TxByte((uint8_t)ReadMemory_XPROG_Params.Length);
\r
-
\r
/* Read the TPI target's memory, indicate timeout if occurred */
\r
if (!(TINYNVM_ReadMemory(ReadMemory_XPROG_Params.Address, ReadBuffer, ReadMemory_XPROG_Params.Length)))
\r
ReturnStatus = XPRG_ERR_TIMEOUT;
\r
/* Read the TPI target's memory, indicate timeout if occurred */
\r
if (!(TINYNVM_ReadMemory(ReadMemory_XPROG_Params.Address, ReadBuffer, ReadMemory_XPROG_Params.Length)))
\r
ReturnStatus = XPRG_ERR_TIMEOUT;
\r
diff --git
a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
index
05d5ec9
..
1406428
100644
(file)
--- a/
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
+++ b/
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
@@
-71,7
+71,7
@@
ISR(TIMER1_COMPA_vect, ISR_BLOCK)
return;
\r
\r
/* Shift in the bit one less than the frame size in position, so that the start bit will eventually
\r
return;
\r
\r
/* Shift in the bit one less than the frame size in position, so that the start bit will eventually
\r
- * be discarded leaving the data to be byte-aligned for quick access */
\r
+ * be discarded leaving the data to be byte-aligned for quick access
(subtract 9 as we are ORing to the MSB)
*/
\r
if (BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK)
\r
((uint8_t*)&SoftUSART_Data)[1] |= (1 << (BITS_IN_USART_FRAME - 9));
\r
\r
if (BITBANG_PDIDATA_PIN & BITBANG_PDIDATA_MASK)
\r
((uint8_t*)&SoftUSART_Data)[1] |= (1 << (BITS_IN_USART_FRAME - 9));
\r
\r
@@
-117,7
+117,7
@@
ISR(TIMER1_COMPB_vect, ISR_BLOCK)
return;
\r
\r
/* Shift in the bit one less than the frame size in position, so that the start bit will eventually
\r
return;
\r
\r
/* Shift in the bit one less than the frame size in position, so that the start bit will eventually
\r
- * be discarded leaving the data to be byte-aligned for quick access */
\r
+ * be discarded leaving the data to be byte-aligned for quick access
(subtract 9 as we are ORing to the MSB)
*/
\r
if (BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK)
\r
((uint8_t*)&SoftUSART_Data)[1] |= (1 << (BITS_IN_USART_FRAME - 9));
\r
\r
if (BITBANG_TPIDATA_PIN & BITBANG_TPIDATA_MASK)
\r
((uint8_t*)&SoftUSART_Data)[1] |= (1 << (BITS_IN_USART_FRAME - 9));
\r
\r
@@
-154,8
+154,7
@@
void XPROGTarget_EnableTargetPDI(void)
\r
/* Set DATA line high for at least 90ns to disable /RESET functionality */
\r
PORTD |= (1 << 3);
\r
\r
/* Set DATA line high for at least 90ns to disable /RESET functionality */
\r
PORTD |= (1 << 3);
\r
- asm volatile ("NOP"::);
\r
- asm volatile ("NOP"::);
\r
+ _delay_ms(1);
\r
\r
/* Set up the synchronous USART for XMEGA communications -
\r
8 data bits, even parity, 2 stop bits */
\r
\r
/* Set up the synchronous USART for XMEGA communications -
\r
8 data bits, even parity, 2 stop bits */
\r
@@
-169,8
+168,7
@@
void XPROGTarget_EnableTargetPDI(void)
\r
/* Set DATA line high for at least 90ns to disable /RESET functionality */
\r
BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;
\r
\r
/* Set DATA line high for at least 90ns to disable /RESET functionality */
\r
BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;
\r
- asm volatile ("NOP"::);
\r
- asm volatile ("NOP"::);
\r
+ _delay_ms(1);
\r
\r
/* Fire timer compare channel A ISR to manage the software USART */
\r
OCR1A = BITS_BETWEEN_USART_CLOCKS;
\r
\r
/* Fire timer compare channel A ISR to manage the software USART */
\r
OCR1A = BITS_BETWEEN_USART_CLOCKS;
\r
@@
-188,11
+186,10
@@
void XPROGTarget_EnableTargetTPI(void)
{
\r
IsSending = false;
\r
\r
{
\r
IsSending = false;
\r
\r
- /* Set /RESET line low for at least
9
0ns to enable TPI functionality */
\r
+ /* Set /RESET line low for at least
40
0ns to enable TPI functionality */
\r
AUX_LINE_DDR |= AUX_LINE_MASK;
\r
AUX_LINE_PORT &= ~AUX_LINE_MASK;
\r
AUX_LINE_DDR |= AUX_LINE_MASK;
\r
AUX_LINE_PORT &= ~AUX_LINE_MASK;
\r
- asm volatile ("NOP"::);
\r
- asm volatile ("NOP"::);
\r
+ _delay_ms(1);
\r
\r
#if defined(XPROG_VIA_HARDWARE_USART)
\r
/* Set Tx and XCK as outputs, Rx as input */
\r
\r
#if defined(XPROG_VIA_HARDWARE_USART)
\r
/* Set Tx and XCK as outputs, Rx as input */
\r
@@
-307,7
+304,7
@@
void XPROGTarget_SendByte(const uint8_t Byte)
uint16_t NewUSARTData = ((1 << 11) | (1 << 10) | (0 << 9) | ((uint16_t)Byte << 1) | (0 << 0));
\r
\r
/* Compute Even parity - while a bit is still set, chop off lowest bit and toggle parity bit */
\r
uint16_t NewUSARTData = ((1 << 11) | (1 << 10) | (0 << 9) | ((uint16_t)Byte << 1) | (0 << 0));
\r
\r
/* Compute Even parity - while a bit is still set, chop off lowest bit and toggle parity bit */
\r
- uint8_t ParityData
= Byte;
\r
+ uint8_t ParityData = Byte;
\r
while (ParityData)
\r
{
\r
NewUSARTData ^= (1 << 9);
\r
while (ParityData)
\r
{
\r
NewUSARTData ^= (1 << 9);
\r