Fixed AVRISP project not sending a full erase-and-write EEPROM command to XMEGA targe...
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 16 May 2010 05:43:03 +0000 (05:43 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 16 May 2010 05:43:03 +0000 (05:43 +0000)
LUFA/ManPages/ChangeLog.txt
LUFA/ManPages/MigrationInformation.txt
LUFA/Scheduler/Scheduler.h
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c

index 54320c8..5ac0bb0 100644 (file)
@@ -8,14 +8,16 @@
   *
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
   *  <b>New:</b>
-  *  N/A
+  *  N/A
   *
   *  <b>Changed:</b>
-  *  N/A
+  *  N/A
   *
   *  <b>Fixed:</b>
   *  - 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
   *  <b>New:</b>
@@ -65,8 +67,6 @@
   *  - 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)
   *  - 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 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
index 844cdad..dd00abd 100644 (file)
@@ -10,8 +10,8 @@
  *  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.
  *
- * \section Sec_Migration100513 Migrating from 100219 to 100513
- * N/A
+ * \section Sec_Migration100513 Migrating from 100513 to XXXXXX
+ *  N/A
  *
  * \section Sec_Migration100513 Migrating from 100219 to 100513
  *
index 672af2f..71be82b 100644 (file)
                         *      }
                         *  \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
                         *  should be encased in curly braces and ended with a comma.
                         *      }
                         *  \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
                         *  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(). */
-                       #define TASK_RUN                          true
+                       #define TASK_RUN                true
 
                        /** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */
-                       #define TASK_STOP                         false
+                       #define TASK_STOP               false
                        
                /* Pseudo-Function Macros: */
                        #if defined(__DOXYGEN__)
                                 */
                                void Scheduler_Init(void);
                        #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
 
                /* Type Defines: */
                         *  TaskEntry_t and can be manipulated as desired, although it is preferential that the proper Scheduler
                         *  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
                         *  TASK_RUN or TASK_STOP.
                         *
                         *  \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
                         *   are used in the user code, this should be incremented each tick period so that the delays can be
                         *   calculated.
                         */
-                       extern volatile SchedulerDelayCounter_t   Scheduler_TickCounter;
+                       extern volatile SchedulerDelayCounter_t Scheduler_TickCounter;
 
                /* Inline Functions: */
                        /** Resets the delay counter value to the current tick count. This should be called to reset the period
index 7a4b1a5..ab4d426 100644 (file)
@@ -319,7 +319,7 @@ static void XPROGProtocol_WriteMemory(void)
                                WriteCommand     = XMEGA_NVM_CMD_WRITEBOOTSECPAGE;
                                break;
                        case XPRG_MEM_TYPE_EEPROM:
-                               WriteCommand     = XMEGA_NVM_CMD_WRITEEEPROMPAGE;
+                               WriteCommand     = XMEGA_NVM_CMD_ERASEWRITEEEPROMPAGE;
                                WriteBuffCommand = XMEGA_NVM_CMD_LOADEEPROMPAGEBUFF;
                                EraseBuffCommand = XMEGA_NVM_CMD_ERASEEEPROMPAGEBUFF;                   
                                break;