Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
5f363996
Commit
5f363996
authored
Feb 01, 2010
by
Dean Camera
Browse files
Fixed issues with EEPROM and FLASH ISP programming in the AVRISP project.
parent
b6a4584a
Changes
3
Hide whitespace changes
Inline
Side-by-side
LUFA/ManPages/ChangeLog.txt
View file @
5f363996
...
...
@@ -49,6 +49,7 @@
* ranges are specified (thanks to Thomas Bleeker)
* - Fixed CDC and RNDIS host demos and class drivers - bidirectional endpoints should use two seperate pipes, not one half-duplex pipe
* - Fixed Pipe_IsEndpointBound() not taking the endpoint's direction into account
* - Fixed EEPROM and FLASH ISP programming in the AVRISP project
*
* \section Sec_ChangeLog091223 Version 091223
*
...
...
Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
View file @
5f363996
...
...
@@ -198,14 +198,15 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
/* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
* or low byte at the current word address */
Write_Memory_Params
.
ProgrammingCommands
[
0
]
^=
READ_WRITE_HIGH_BYTE_MASK
;
if
(
V2Command
==
CMD_PROGRAM_FLASH_ISP
)
Write_Memory_Params
.
ProgrammingCommands
[
0
]
^=
READ_WRITE_HIGH_BYTE_MASK
;
/* Check to see the write completion method, to see if we have a valid polling address */
if
(
!
(
PollAddress
)
&&
(
ByteToWrite
!=
PollValue
))
{
if
(
IsOddByte
&&
(
V2Command
==
CMD_PROGRAM_FLASH_ISP
))
Write_Memory_Params
.
ProgrammingCommands
[
2
]
|=
READ_WRITE_HIGH_BYTE_MASK
;
PollAddress
=
(
CurrentAddress
&
0xFFFF
);
}
...
...
@@ -239,17 +240,17 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
{
bool
IsOddByte
=
(
CurrentByte
&
0x01
);
uint8_t
ByteToWrite
=
*
(
NextWriteByte
++
);
if
(
IsOddByte
&&
(
V2Command
==
CMD_READ_FLASH_ISP
))
Write_Memory_Params
.
ProgrammingCommands
[
0
]
|=
READ_WRITE_HIGH_BYTE_MASK
;
else
Write_Memory_Params
.
ProgrammingCommands
[
0
]
&=
~
READ_WRITE_HIGH_BYTE_MASK
;
SPI_SendByte
(
Write_Memory_Params
.
ProgrammingCommands
[
0
]);
SPI_SendByte
(
CurrentAddress
>>
8
);
SPI_SendByte
(
CurrentAddress
&
0xFF
);
SPI_SendByte
(
ByteToWrite
);
/* AVR FLASH addressing requires us to modify the write command based on if we are writing a high
* or low byte at the current word address */
if
(
V2Command
==
CMD_PROGRAM_FLASH_ISP
)
Write_Memory_Params
.
ProgrammingCommands
[
0
]
^=
READ_WRITE_HIGH_BYTE_MASK
;
if
(
ByteToWrite
!=
PollValue
)
{
if
(
IsOddByte
&&
(
V2Command
==
CMD_PROGRAM_FLASH_ISP
))
...
...
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c
View file @
5f363996
...
...
@@ -128,7 +128,7 @@ uint8_t ISPTarget_WaitForProgComplete(const uint8_t ProgrammingMode, const uint1
SPI_SendByte
(
PollAddress
>>
8
);
SPI_SendByte
(
PollAddress
&
0xFF
);
}
while
((
SPI_TransferByte
(
0x00
)
!
=
PollValue
)
&&
TimeoutMSRemaining
);
while
((
SPI_TransferByte
(
0x00
)
=
=
PollValue
)
&&
TimeoutMSRemaining
);
if
(
!
(
TimeoutMSRemaining
))
ProgrammingStatus
=
STATUS_CMD_TOUT
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment