Commit ff61dfa5 authored by Dean Camera's avatar Dean Camera
Browse files

Fixed AVRISP project not sending a full erase-and-write EEPROM command to...

Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM instead of the split write-only command (thanks to Tim Margush).
parent 80d85090
...@@ -8,14 +8,16 @@ ...@@ -8,14 +8,16 @@
* *
* \section Sec_ChangeLogXXXXXX Version XXXXXX * \section Sec_ChangeLogXXXXXX Version XXXXXX
* <b>New:</b> * <b>New:</b>
* N/A * - N/A
* *
* <b>Changed:</b> * <b>Changed:</b>
* N/A * - N/A
* *
* <b>Fixed:</b> * <b>Fixed:</b>
* - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from * - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
* the last page of FLASH * the last page of FLASH (thanks to Gerard Sexton)
* - Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targets when writing to the EEPROM
* instead of the split write-only command (thanks to Tim Margush)
* *
* \section Sec_ChangeLog100513 Version 100513 * \section Sec_ChangeLog100513 Version 100513
* <b>New:</b> * <b>New:</b>
...@@ -65,8 +67,6 @@ ...@@ -65,8 +67,6 @@
* - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address * - Fixed AVRISP-MKII clone project not correctly issuing LOAD EXTENDED ADDRESS commands when the extended address
* boundary is crossed during programming or readback (thanks to Gerard Sexton) * boundary is crossed during programming or readback (thanks to Gerard Sexton)
* - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled * - Fixed warnings when building the AVRISP-MKII clone project with the ENABLE_XPROG_PROTOCOL compile time option disabled
* - Remove incorrect check for the current device state in the Set Configuration request handler of DevChapter9, which broke
* Set Configuration requests to the device under most circumstances.
* - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin * - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
* - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register * - Fixed TWI_StartTransmission() corrupting the contents of the GPIOR0 register
* - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus * - Fixed TWI driver not aborting when faced with no response after attempting to address a device on the bus
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
* to the next version released. It does not indicate all new additions to the library in each version change, only * to the next version released. It does not indicate all new additions to the library in each version change, only
* areas relevant to making older projects compatible with the API changes of each new release. * areas relevant to making older projects compatible with the API changes of each new release.
* *
* \section Sec_Migration100513 Migrating from 100219 to 100513 * \section Sec_Migration100513 Migrating from 100513 to XXXXXX
* N/A * N/A
* *
* \section Sec_Migration100513 Migrating from 100219 to 100513 * \section Sec_Migration100513 Migrating from 100219 to 100513
* *
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
* } * }
* \endcode * \endcode
*/ */
#define TASK(name) void name (void) #define TASK(name) void name (void)
/** Defines a task list array, containing one or more task entries of the type TaskEntry_t. Each task list /** Defines a task list array, containing one or more task entries of the type TaskEntry_t. Each task list
* should be encased in curly braces and ended with a comma. * should be encased in curly braces and ended with a comma.
...@@ -125,18 +125,18 @@ ...@@ -125,18 +125,18 @@
* } * }
* \endcode * \endcode
*/ */
#define TASK_LIST TaskEntry_t Scheduler_TaskList[] = #define TASK_LIST TaskEntry_t Scheduler_TaskList[] =
/** Constant, giving the maximum delay in scheduler ticks which can be stored in a variable of type /** Constant, giving the maximum delay in scheduler ticks which can be stored in a variable of type
* SchedulerDelayCounter_t. * SchedulerDelayCounter_t.
*/ */
#define TASK_MAX_DELAY (MAX_DELAYCTR_COUNT - 1) #define TASK_MAX_DELAY (MAX_DELAYCTR_COUNT - 1)
/** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */ /** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
#define TASK_RUN true #define TASK_RUN true
/** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */ /** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
#define TASK_STOP false #define TASK_STOP false
/* Pseudo-Function Macros: */ /* Pseudo-Function Macros: */
#if defined(__DOXYGEN__) #if defined(__DOXYGEN__)
...@@ -151,9 +151,9 @@ ...@@ -151,9 +151,9 @@
*/ */
void Scheduler_Init(void); void Scheduler_Init(void);
#else #else
#define Scheduler_Start() Scheduler_GoSchedule(TOTAL_TASKS); #define Scheduler_Start() Scheduler_GoSchedule(TOTAL_TASKS);
#define Scheduler_Init() Scheduler_InitScheduler(TOTAL_TASKS); #define Scheduler_Init() Scheduler_InitScheduler(TOTAL_TASKS);
#endif #endif
/* Type Defines: */ /* Type Defines: */
...@@ -181,20 +181,20 @@ ...@@ -181,20 +181,20 @@
* TaskEntry_t and can be manipulated as desired, although it is preferential that the proper Scheduler * TaskEntry_t and can be manipulated as desired, although it is preferential that the proper Scheduler
* functions should be used instead of direct manipulation. * functions should be used instead of direct manipulation.
*/ */
extern TaskEntry_t Scheduler_TaskList[]; exter TaskEntry_t Scheduler_TaskList[];
/** Contains the total number of tasks in the task list, irrespective of if the task's status is set to /** Contains the total number of tasks in the task list, irrespective of if the task's status is set to
* TASK_RUN or TASK_STOP. * TASK_RUN or TASK_STOP.
* *
* \note This value should be treated as read-only, and never altered in user-code. * \note This value should be treated as read-only, and never altered in user-code.
*/ */
extern volatile uint8_t Scheduler_TotalTasks; extern volatile uint8_t Scheduler_TotalTasks;
/** Contains the current scheduler tick count, for use with the delay functions. If the delay functions /** Contains the current scheduler tick count, for use with the delay functions. If the delay functions
* are used in the user code, this should be incremented each tick period so that the delays can be * are used in the user code, this should be incremented each tick period so that the delays can be
* calculated. * calculated.
*/ */
extern volatile SchedulerDelayCounter_t Scheduler_TickCounter; extern volatile SchedulerDelayCounter_t Scheduler_TickCounter;
/* Inline Functions: */ /* Inline Functions: */
/** Resets the delay counter value to the current tick count. This should be called to reset the period /** Resets the delay counter value to the current tick count. This should be called to reset the period
......
...@@ -319,7 +319,7 @@ static void XPROGProtocol_WriteMemory(void) ...@@ -319,7 +319,7 @@ static void XPROGProtocol_WriteMemory(void)
WriteCommand = XMEGA_NVM_CMD_WRITEBOOTSECPAGE; WriteCommand = XMEGA_NVM_CMD_WRITEBOOTSECPAGE;
break; break;
case XPRG_MEM_TYPE_EEPROM: case XPRG_MEM_TYPE_EEPROM:
WriteCommand = XMEGA_NVM_CMD_WRITEEEPROMPAGE; WriteCommand = XMEGA_NVM_CMD_ERASEWRITEEEPROMPAGE;
WriteBuffCommand = XMEGA_NVM_CMD_LOADEEPROMPAGEBUFF; WriteBuffCommand = XMEGA_NVM_CMD_LOADEEPROMPAGEBUFF;
EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF; EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;
break; break;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment