From 6cdd94dd49e726e1cc09450a8e4230994c5749aa Mon Sep 17 00:00:00 2001 From: --global <--global> Date: Tue, 16 May 2023 17:14:29 +0300 Subject: [PATCH] bpm modulation settings are now saved in EEPROM --- software/GToE/GToE.ino | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/software/GToE/GToE.ino b/software/GToE/GToE.ino index 05811e4..05d6454 100644 --- a/software/GToE/GToE.ino +++ b/software/GToE/GToE.ino @@ -100,14 +100,21 @@ const unsigned char splash_logo [] PROGMEM = { void setup() { //Serial.begin(9600); - //check last bit in eeprom to know if settings were stored - if (EEPROM.read(1023) == 'R') { - EEPROM.get(0, bpm); - EEPROM.get(sizeof(int), masterClockMode); - EEPROM.get(sizeof(int)+sizeof(byte), channels); + //check last bit in eeprom to know if the correct settings were stored + if (EEPROM.read(1023) == 'S') { + int addr = 0; + EEPROM.get(addr, bpm); + addr = addr + sizeof(bpm); + EEPROM.get(addr, bpmModulationChannel); + addr = addr + sizeof(bpmModulationChannel); + EEPROM.get(addr, bpmModulationRange); + addr = addr + sizeof(bpmModulationRange); + EEPROM.get(addr, masterClockMode); + addr = addr + sizeof(masterClockMode); + EEPROM.get(addr, channels); } else { saveState(); - EEPROM.write(1023, 'R'); + EEPROM.write(1023, 'S'); } pinMode(ENC_BTN_PIN, INPUT_PULLUP); @@ -146,7 +153,7 @@ void loop() { display.clearDisplay(); display.display(); } - if (masterClockMode == 2 && tickCount > PULSE_LENGTH) { + if (masterClockMode == 2) { //&& tickCount > PULSE_LENGTH) { //execute only after PULSE_LENGTH to avoid delays calculateBPMTiming(); } } @@ -313,9 +320,16 @@ void resetClocks() { } void saveState() { - EEPROM.put(0, bpm); - EEPROM.put(sizeof(int), masterClockMode); - EEPROM.put(sizeof(int)+sizeof(byte), channels); + int addr = 0; + EEPROM.put(addr, bpm); + addr = addr + sizeof(bpm); + EEPROM.put(addr, bpmModulationChannel); + addr = addr + sizeof(bpmModulationChannel); + EEPROM.put(addr, bpmModulationRange); + addr = addr + sizeof(bpmModulationRange); + EEPROM.put(addr, masterClockMode); + addr = addr + sizeof(masterClockMode); + EEPROM.put(addr, channels); } void checkInputs() {