diff --git a/my_src/eeprom.c b/my_src/eeprom.c index d756b2a..c3e389c 100644 --- a/my_src/eeprom.c +++ b/my_src/eeprom.c @@ -28,26 +28,61 @@ static void __EEPROM_CS(GPIO_PinState v) { HAL_GPIO_WritePin(EEPROM_CS_GPIO_Port, EEPROM_CS_Pin, v); } -static void __HAL_SPI_Transmit_One_ByValue(SPI_HandleTypeDef *hspi, uint8_t c) { - HAL_SPI_Transmit(hspi, &c, 1, HAL_MAX_DELAY); + +uint8_t eepromReadStatus() { + struct { + uint8_t rdsr; + uint8_t data; + } txMsg = { + .rdsr = EEPROM_RDSR + }, rxMsg; + + __EEPROM_CS(LOW); + HAL_SPI_TransmitReceive(&hspi1, &txMsg, &rxMsg, 2, HAL_MAX_DELAY); + __EEPROM_CS(HIGH); + + return rxMsg.data; +} + +void eepromWren() { + struct { + uint8_t wren; + } txMsg = { + .wren = EEPROM_WREN + }; + + __EEPROM_CS(LOW); + HAL_SPI_Transmit(&hspi1, &txMsg, 1, HAL_MAX_DELAY); + __EEPROM_CS(HIGH); +} +void eepromWrdi() { + struct { + uint8_t wrdi; + } txMsg = { + .wrdi = EEPROM_WRDI + }; + + __EEPROM_CS(LOW); + HAL_SPI_Transmit(&hspi1, &txMsg, 1, HAL_MAX_DELAY); + __EEPROM_CS(HIGH); } void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len) { struct { - uint8_t wren; uint8_t write; uint16_t addr; uint8_t data[32]; } msg = { - .wren = EEPROM_WREN, .write = EEPROM_WRITE, .addr = addr }; memcpy(msg.data, buf, len); + eepromWren(); + __EEPROM_CS(LOW); - HAL_SPI_Transmit(&hspi1, &msg, ((uint16_t)(len+4)), HAL_MAX_DELAY); + HAL_SPI_Transmit(&hspi1, &msg, ((uint16_t)(len+3)), HAL_MAX_DELAY); __EEPROM_CS(HIGH); } @@ -66,9 +101,5 @@ void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len) { HAL_SPI_TransmitReceive(&hspi1, &txMsg, &rxMsg, ((uint16_t)(len+3)), HAL_MAX_DELAY); __EEPROM_CS(HIGH); -// __EEPROM_CS(LOW); -// __HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_READ); -// HAL_SPI_Transmit(&hspi1, &addr, 2, HAL_MAX_DELAY); -// HAL_SPI_Receive(&hspi1, buf, ((uint16_t)len), HAL_MAX_DELAY); -// __EEPROM_CS(HIGH); + memcpy(buf, rxMsg.data, len); } diff --git a/my_src/eeprom.h b/my_src/eeprom.h index fa72364..9b246e6 100644 --- a/my_src/eeprom.h +++ b/my_src/eeprom.h @@ -15,6 +15,8 @@ void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len); void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len); - +uint8_t eepromReadStatus(); +void eepromWren(); +void eepromWrdi(); #endif /* EEPROM_H_ */ diff --git a/my_src/hmi.c b/my_src/hmi.c index 31fa231..045a20e 100644 --- a/my_src/hmi.c +++ b/my_src/hmi.c @@ -15,7 +15,7 @@ -const uint32_t STORAGE_MAGIC = 0xaffe0001; +const uint32_t STORAGE_MAGIC = 0xaffe0002; @@ -37,21 +37,6 @@ typedef struct { tStorage storage; void updateDisplay(void *handle) { - static uint8_t eetoggle = 0; - - if (eetoggle == 0) { - eetoggle = 1; - eepromRead(STORAGE_ADDRESS, &storage, sizeof(storage)); - } else { - eetoggle = 0; - storage.magic = STORAGE_MAGIC; - storage.savedTemperature = 1; - storage.savedTime = 2; - eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); - } - - - tDisplay *lDisplay = (tDisplay*) handle; lDisplay->toggle ^= 0x01; char buf[32]; @@ -73,14 +58,14 @@ void updateDisplay(void *handle) { } LED_P8x16Str(0, 4, buf); -// sprintf(buf, " %5ds", lDisplay->overrunTime); - static uint32_t h = 0; - static uint32_t c = 0; - uint32_t i = HAL_GetTick(); - sprintf(buf, "%d %d %d", c, i, i-h); - h = i; - c++; - LED_P8x16Str(0, 6, buf); + sprintf(buf, " %5ds", lDisplay->overrunTime); +// static uint32_t h = 0; +// static uint32_t c = 0; +// uint32_t i = HAL_GetTick(); +// sprintf(buf, "%d %d %d", c, i, i-h); +// h = i; +// c++; +// LED_P8x16Str(0, 6, buf); } @@ -145,16 +130,16 @@ void displayIncValue() { reEnableSetModeTimer(); if (display.targetTemperature < 100) { display.targetTemperature++; -// storage.savedTemperature = display.targetTemperature; -// eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); + storage.savedTemperature = display.targetTemperature; + eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); } } if (display.setModeTime == 1) { reEnableSetModeTimer(); if (display.targetTime < 999) { display.targetTime += 10; -// storage.savedTime = display.targetTime; -// eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); + storage.savedTime = display.targetTime; + eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); } } } @@ -164,16 +149,16 @@ void displayDecValue() { reEnableSetModeTimer(); if (display.targetTemperature > 0) { display.targetTemperature--; -// storage.savedTemperature = display.targetTemperature; -// eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); + storage.savedTemperature = display.targetTemperature; + eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); } } if (display.setModeTime == 1) { reEnableSetModeTimer(); if (display.targetTime >= 10) { display.targetTime -= 10; -// storage.savedTime = display.targetTime; -// eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); + storage.savedTime = display.targetTime; + eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage)); } } }