From 670413603f528259ade457f27fe97c70736ca754 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Wed, 26 May 2010 11:54:55 +0000 Subject: The EEPROM stream read/write functions now use eeprom_update_byte() instead of eeprom_write_byte(), so that only changed bytes are written to EEPROM to preserve its lifespan. Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile parameters to EEPROM to preserve its lifespan. --- LUFA/Drivers/USB/LowLevel/Endpoint.c | 8 ++++---- LUFA/Drivers/USB/LowLevel/Pipe.c | 4 ++-- LUFA/ManPages/ChangeLog.txt | 4 ++++ LUFA/ManPages/FutureChanges.txt | 1 + 4 files changed, 11 insertions(+), 6 deletions(-) (limited to 'LUFA') diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c index c704ac7c5..15cb9d011 100644 --- a/LUFA/Drivers/USB/LowLevel/Endpoint.c +++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c @@ -266,7 +266,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length #define TEMPLATE_BUFFER_TYPE void* #define TEMPLATE_CLEAR_ENDPOINT() Endpoint_ClearOUT() #define TEMPLATE_BUFFER_OFFSET(Length) 0 -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte()) #include "Template/Template_Endpoint_RW.c" #define TEMPLATE_FUNC_NAME Endpoint_Read_Stream_BE @@ -280,7 +280,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length #define TEMPLATE_BUFFER_TYPE void* #define TEMPLATE_CLEAR_ENDPOINT() Endpoint_ClearOUT() #define TEMPLATE_BUFFER_OFFSET(Length) (Length - 1) -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte()) #include "Template/Template_Endpoint_RW.c" #endif @@ -322,7 +322,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length #define TEMPLATE_FUNC_NAME Endpoint_Read_Control_EStream_LE #define TEMPLATE_BUFFER_OFFSET(Length) 0 -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr++, Endpoint_Read_Byte()) #include "Template/Template_Endpoint_Control_R.c" #define TEMPLATE_FUNC_NAME Endpoint_Read_Control_Stream_BE @@ -332,7 +332,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length #define TEMPLATE_FUNC_NAME Endpoint_Read_Control_EStream_BE #define TEMPLATE_BUFFER_OFFSET(Length) (Length - 1) -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr--, Endpoint_Read_Byte()) #include "Template/Template_Endpoint_Control_R.c" #endif diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c index 013193064..4bfcc21e2 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.c +++ b/LUFA/Drivers/USB/LowLevel/Pipe.c @@ -270,7 +270,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length #define TEMPLATE_TOKEN PIPE_TOKEN_IN #define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN() #define TEMPLATE_BUFFER_OFFSET(Length) 0 -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr++, Pipe_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr++, Pipe_Read_Byte()) #include "Template/Template_Pipe_RW.c" #define TEMPLATE_FUNC_NAME Pipe_Read_Stream_BE @@ -286,7 +286,7 @@ uint8_t Pipe_Discard_Stream(uint16_t Length #define TEMPLATE_TOKEN PIPE_TOKEN_IN #define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN() #define TEMPLATE_BUFFER_OFFSET(Length) (Length - 1) -#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte((uint8_t*)BufferPtr--, Pipe_Read_Byte()) +#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_update_byte((uint8_t*)BufferPtr--, Pipe_Read_Byte()) #include "Template/Template_Pipe_RW.c" #endif diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 5233af76d..957a4e560 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -13,6 +13,10 @@ * Changed: * - The RingBuff library code has been replaced in the XPLAINBridge project with an ultra lightweight buffer to help * improve the reliability of the bridge + * - The EEPROM stream read/write functions now use eeprom_update_byte() instead of eeprom_write_byte(), so that only + * changed bytes are written to EEPROM to preserve its lifespan + * - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile + * parameters to EEPROM to preserve its lifespan * * Fixed: * - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt index 108e016a9..daf239397 100644 --- a/LUFA/ManPages/FutureChanges.txt +++ b/LUFA/ManPages/FutureChanges.txt @@ -18,6 +18,7 @@ * -# Add standardized descriptor names to class driver structures * -# Correct mishandling of error cases in Mass Storage demos * -# Fix AVRISP-MKII clone project's XMEGA EEPROM section erase command + * -# Fix occasional dropped characters in the XPLAINBridge project * - Documentation/Support * -# Remake AVRStudio project files * -# Add detailed overviews of how each demo works -- cgit v1.2.3