From b586ea483fd99e9e93fc8db8e70f37fe929ad4fb Mon Sep 17 00:00:00 2001 From: "Michael D. M. Dryden" Date: Wed, 14 Oct 2015 19:24:22 -0400 Subject: [PATCH] Added settings page in eprom. --- DSTAT/src/main.c | 1 + DSTAT/src/max5443.c | 34 +++++++--------------------------- DSTAT/src/settings.c | 32 ++++++++++++++++++++++++++++++++ DSTAT/src/settings.h | 25 +++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 DSTAT/src/settings.c create mode 100644 DSTAT/src/settings.h diff --git a/DSTAT/src/main.c b/DSTAT/src/main.c index 2c74210..0faf725 100644 --- a/DSTAT/src/main.c +++ b/DSTAT/src/main.c @@ -7,6 +7,7 @@ #include "experiment.h" #include "asf.h" +#include "settings.h" #include #include #include diff --git a/DSTAT/src/max5443.c b/DSTAT/src/max5443.c index fd73c04..57fb25c 100644 --- a/DSTAT/src/max5443.c +++ b/DSTAT/src/max5443.c @@ -12,17 +12,8 @@ #include #include #include +#include "settings.h" -// From module: NVM - Non Volatile Memory -#include - -// From module: NVM - Non volatile memory access -#include - -#define MAX5443_EEPROM_PARAM_PAGE 1 -#define MAX5443_EEPROM_OFFSET_ADDR MAX5443_EEPROM_PARAM_PAGE * EEPROM_PAGE_SIZE - -volatile int16_t max5443_offset = 0; struct usart_spi_device spi_device_conf_c = { .id = IOPORT_CREATE_PIN(PORTC, 4) @@ -36,17 +27,6 @@ void max5443_init_pins(void){ void max5443_init_module(void){ usart_spi_init(&USARTC1); usart_spi_setup_device(&USARTC1, &spi_device_conf_c, SPI_MODE_0, 24000000UL, 0); - max5443_read_eeprom(); -} - -void max5443_read_eeprom(void){ - max5443_offset = nvm_eeprom_read_byte(MAX5443_EEPROM_OFFSET_ADDR); - printf("#OFFSET = %u\n\r", max5443_offset); -} - -void max5443_write_eeprom(void){ - nvm_eeprom_load_byte_to_buffer(0x0, max5443_offset); - nvm_eeprom_atomic_write_page(MAX5443_EEPROM_PARAM_PAGE * EEPROM_PAGE_SIZE); } void max5443_set_voltage1(uint16_t dacindex){ @@ -55,18 +35,18 @@ void max5443_set_voltage1(uint16_t dacindex){ uint16_t ui16; } buffer; - if (max5443_offset < 0) + if (settings.max5443_offset < 0) { - max5443_offset = abs(max5443_offset); - if (((uint16_t)max5443_offset) > dacindex) + settings.max5443_offset = abs(settings.max5443_offset); + if (((uint16_t)settings.max5443_offset) > dacindex) buffer.ui16 = 0; else - buffer.ui16 = dacindex - (uint16_t)max5443_offset; + buffer.ui16 = dacindex - (uint16_t)settings.max5443_offset; } - else if (((uint16_t)max5443_offset) > (65535 - dacindex)) + else if (((uint16_t)settings.max5443_offset) > (65535 - dacindex)) buffer.ui16 = 65535; else - buffer.ui16 = dacindex + (uint16_t)max5443_offset; + buffer.ui16 = dacindex + (uint16_t)settings.max5443_offset; irqflags_t flags; flags = cpu_irq_save(); diff --git a/DSTAT/src/settings.c b/DSTAT/src/settings.c new file mode 100644 index 0000000..6092986 --- /dev/null +++ b/DSTAT/src/settings.c @@ -0,0 +1,32 @@ +// +// settings.c +// dstat-firmware +// +// Created by Michael Dryden on 2015-10-14. +// Copyright © 2015 wheeler lab. All rights reserved. +// +// Save/Retrieve settings from EEPROM + +#include "settings.h" + +// From module: NVM - Non Volatile Memory +#include + +// From module: NVM - Non volatile memory access +#include + +#define SETTINGS_EEPROM_PARAM_PAGE 1 +#define SETTINGS_EEPROM_OFFSET_ADDR SETTINGS_EEPROM_PARAM_PAGE * EEPROM_PAGE_SIZE + +void settings_read_eeprom(void){ + nvm_eeprom_read_buffer(SETTINGS_EEPROM_OFFSET_ADDR, &settings, EEPROM_PAGE_SIZE); + printf("#INFO: SETTINGS\n\r"); + printf("#INFO: max5443_offset = %u\n\r", settings.max5443_offset); + printf("#INFO: tls_enabled = %u\n\r", settings.tls_enabled); + printf("#INFO: tls_clear_threshold = %u\n\r", settings.tls_clear_threshold); +} + +void settings_write_eeprom(void){ + nvm_eeprom_load_page_to_buffer(&settings); + nvm_eeprom_atomic_write_page(SETTINGS_EEPROM_OFFSET_ADDR); +} \ No newline at end of file diff --git a/DSTAT/src/settings.h b/DSTAT/src/settings.h new file mode 100644 index 0000000..11df3e8 --- /dev/null +++ b/DSTAT/src/settings.h @@ -0,0 +1,25 @@ +// +// settings.h +// dstat-firmware +// +// Created by Michael Dryden on 2015-10-14. +// Copyright © 2015 wheeler lab. All rights reserved. +// + +#ifndef settings_h +#define settings_h + +#include + +struct{ //Make sure this doesn't exceed 32 bytes + int16_t max5443_offset; + uint8_t tls_enabled; + uint16_t tls_clear_threshold; +} settings; + + +void settings_read_eeprom(void); +void settings_write_eeprom(void); + + +#endif /* settings_h */ -- GitLab