eeprom not yet working correctly
This commit is contained in:
55
my_src/hmi.c
55
my_src/hmi.c
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user