eeprom not yet working correctly

This commit is contained in:
Wolfgang Hottgenroth
2017-06-11 22:02:07 +02:00
parent c0e370c802
commit cbb8f8d188
9 changed files with 109 additions and 23 deletions

View File

@ -11,6 +11,11 @@
#include "alarm.h"
#include <PontCoopScheduler.h>
#include "oled.h"
#include "eeprom.h"
const uint32_t STORAGE_MAGIC = 0xaffe0001;
@ -23,8 +28,30 @@ volatile tDisplay display = {
.overrunTime = 0
};
typedef struct {
uint32_t magic;
uint32_t savedTemperature;
uint32_t savedTime;
} tStorage;
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];
@ -46,13 +73,31 @@ void updateDisplay(void *handle) {
}
LED_P8x16Str(0, 4, buf);
sprintf(buf, " %5ds", lDisplay->overrunTime);
// 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);
}
void hmiInit() {
eepromRead(STORAGE_ADDRESS, &storage, sizeof(storage));
if (storage.magic == STORAGE_MAGIC) {
display.targetTemperature = storage.savedTemperature;
display.targetTime = storage.savedTime;
} else {
storage.magic = STORAGE_MAGIC;
storage.savedTemperature = 0;
storage.savedTime = 0;
eepromWrite(STORAGE_ADDRESS, &storage, sizeof(storage));
}
schAdd(updateDisplay, &display, 0, 250);
}
void clearSetMode(void *handle) {
@ -100,12 +145,16 @@ void displayIncValue() {
reEnableSetModeTimer();
if (display.targetTemperature < 100) {
display.targetTemperature++;
// 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));
}
}
}
@ -115,12 +164,16 @@ void displayDecValue() {
reEnableSetModeTimer();
if (display.targetTemperature > 0) {
display.targetTemperature--;
// 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));
}
}
}