Skip to content
Snippets Groups Projects
Commit b586ea48 authored by Michael DM Dryden's avatar Michael DM Dryden
Browse files

Added settings page in eprom.

parent 93f8bfc3
No related merge requests found
......@@ -7,6 +7,7 @@
#include "experiment.h"
#include "asf.h"
#include "settings.h"
#include <string.h>
#include <math.h>
#include <stdint.h>
......
......@@ -12,17 +12,8 @@
#include <ioport.h>
#include <delay.h>
#include <stdio_usb.h>
#include "settings.h"
// From module: NVM - Non Volatile Memory
#include <nvm.h>
// From module: NVM - Non volatile memory access
#include <common_nvm.h>
#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();
......
//
// 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 <nvm.h>
// From module: NVM - Non volatile memory access
#include <common_nvm.h>
#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
//
// 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 <stdio.h>
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 */
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment