diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -2,6 +2,7 @@ #include "stm32l100c_discovery.h" #include "ssd1306.h" #include "config.h" +#include "eeprom_min.h" // USB includes #include "hw_config.h" @@ -308,14 +309,6 @@ uint8_t sw_right_last = 0; #define SW_LEFT_PRESSED (sw_left_last == 0 && sw_left == 1) #define SW_RIGHT_PRESSED (sw_right_last == 0 && sw_right == 1) -/* - * uint8_t boottobrew = 0; -#define WINDUP_GUARD_GAIN 100 -uint16_t windup_guard = WINDUP_GUARD_GAIN; -uint16_t k_p = 1; -uint16_t k_i = 1; -uint16_t k_d = 1;*/ - #define EEPROM_ADDR_WINDUP_GUARD 0x001C #define EEPROM_ADDR_BOOTTOBREW 0x0020 #define EEPROM_ADDR_K_P 0x0024 @@ -325,96 +318,6 @@ uint16_t k_d = 1;*/ #define EEPROM_ADDR_BREWTEMP 0x0030 #define EEPROM_ADDR_STEAMTEMP 0x0034 - -#define EEPROM_BASE_ADDR 0x08080000 -#define EEPROM_BYTE_SIZE 0x0FFF - -void Minimal_EEPROM_Unlock(void) -{ - if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) - { - /* Unlocking the Data memory and FLASH_PECR register access*/ - FLASH->PEKEYR = FLASH_PEKEY1; - FLASH->PEKEYR = FLASH_PEKEY2; - } -} - -void Minimal_EEPROM_Lock(void) -{ - /* Set the PELOCK Bit to lock the data memory and FLASH_PECR register access */ - FLASH->PECR |= FLASH_PECR_PELOCK; -} - -FLASH_Status Minimal_FLASH_GetStatus(void) -{ - FLASH_Status FLASHstatus = FLASH_COMPLETE; - - if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY) - { - FLASHstatus = FLASH_BUSY; - } - else - { - if((FLASH->SR & (uint32_t)FLASH_FLAG_WRPERR)!= (uint32_t)0x00) - { - FLASHstatus = FLASH_ERROR_WRP; - } - else - { - if((FLASH->SR & (uint32_t)0x1E00) != (uint32_t)0x00) - { - FLASHstatus = FLASH_ERROR_PROGRAM; - } - else - { - FLASHstatus = FLASH_COMPLETE; - } - } - } - /* Return the FLASH Status */ - return FLASHstatus; -} - -FLASH_Status Minimal_FLASH_WaitForLastOperation(uint32_t Timeout) -{ - __IO FLASH_Status status = FLASH_COMPLETE; - - /* Check for the FLASH Status */ - status = Minimal_FLASH_GetStatus(); - - /* Wait for a FLASH operation to complete or a TIMEOUT to occur */ - while((status == FLASH_BUSY) && (Timeout != 0x00)) - { - status = Minimal_FLASH_GetStatus(); - Timeout--; - } - - if(Timeout == 0x00 ) - { - status = FLASH_TIMEOUT; - } - /* Return the operation status */ - return status; -} - - -void Minimal_EEPROM_ProgramWord(uint32_t Address, uint32_t Data) -{ - // Wait for last operation to be completed - FLASH_Status status = FLASH_COMPLETE; - status = Minimal_FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT); - - if(status == FLASH_COMPLETE) - { - *(__IO uint32_t *)Address = Data; - - // Wait for last operation to be completed - status = Minimal_FLASH_WaitForLastOperation(FLASH_ER_PRG_TIMEOUT); - } - // Return the Write Status - return status; -} - void save_settings() { Minimal_EEPROM_Unlock(); @@ -434,11 +337,8 @@ void save_setpoints() Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_BREWTEMP, setpoint_brew); Minimal_EEPROM_ProgramWord(EEPROM_BASE_ADDR + EEPROM_ADDR_STEAMTEMP, setpoint_steam); Minimal_EEPROM_Lock(); - } - -// TODO: Save/restore temperature setpoint settings void restore_settings() { Minimal_EEPROM_Unlock();