Compare commits

...

2 commits

Author SHA1 Message Date
stephan
f0182fdb20 arm/avr: %.id, %.eeprom.eeprom
git-svn-id: svn+ssh://asterix.ieap.uni-kiel.de/home/subversion/stephan/solo/eda/arm/avr@8967 bc5caf13-1734-44f8-af43-603852e9ee25
2024-05-30 11:41:35 +00:00
stephan
9142aafa3a avr/chaos: read default conf from EEPROM
git-svn-id: svn+ssh://asterix.ieap.uni-kiel.de/home/subversion/stephan/solo/eda/arm/avr@8961 bc5caf13-1734-44f8-af43-603852e9ee25
2024-05-30 04:07:37 +00:00
2 changed files with 32 additions and 26 deletions

View file

@ -70,6 +70,9 @@ chaos.hex: chaos.eeprom
%.lfuse: %.lfuse:
$(AD) -B 5 -U lfuse:w:$(lfuse_$*):m $(AD) -B 5 -U lfuse:w:$(lfuse_$*):m
%.id:
$(AD) -B 5 -U lfuse:v:$(lfuse_$*):m
clean: clean:
rm -f *.hex *.o *.s *.map *.elf *.d rm -f *.hex *.o *.s *.map *.elf *.d
@ -78,7 +81,7 @@ lcd_CFLAGS = -I. -DDEBUG
lcd.o: lcd.c spi_slave.h lcd_routines.h lcd_routines.c uart_atmega16.c lcd.o: lcd.c spi_slave.h lcd_routines.h lcd_routines.c uart_atmega16.c
.PHONY: eeprom.eeprom .PHONY: eeprom.eeprom
eeprom.eeprom: %.eeprom.eeprom: %.hex
$(AD) -U eeprom:r:$@ $(AD) -U eeprom:r:$@
%.eeprom.burn: %.eeprom %.eeprom.burn: %.eeprom
$(AD) -U eeprom:v:$< || $(AD) -U eeprom:w:$< $(AD) -U eeprom:v:$< || $(AD) -U eeprom:w:$<

View file

@ -127,20 +127,7 @@ struct conf {
unsigned char hvosc_freq; unsigned char hvosc_freq;
unsigned char hvosc_dc; unsigned char hvosc_dc;
unsigned char padding[3]; unsigned char padding[3];
} conf = { } conf;
.magic = MAGIC,
.version = VERSION,
.wdt_timeout = 120, // 2 min
.tick_period = TICK_NS(10000000L), // 10ms ramp
.avradc = 0x7f, // off
.adcconf = 0x8500,// RST
.ddrc = 2, // OC1B HVOSC
.adcgain = ADC_GAINS,
.auxadc_n = 4,
.hvadc_ch = 1,
.hvadc_n = 4,
.hvadc_safe = 0x8100,
};
enum { enum {
FLAG_WDT = 1, FLAG_WDT = 1,
@ -157,26 +144,20 @@ enum {
}; };
__attribute__((section(".eeprom"))) __attribute__((section(".eeprom")))
const struct conf runconf[2] = { const struct conf runconf[] = {
[0] = { // SAFE [0] = { // Default
.magic = MAGIC, .magic = MAGIC,
.version = VERSION, .version = VERSION,
.safe = 1,
.flags = FLAG_WDT | FLAG_RAMP | FLAG_ADCCONF | FLAG_DACADC,
.flags2 = FLAG2_HVOSC | FLAG2_HVLED,
.wdt_timeout = 120, // 2 min .wdt_timeout = 120, // 2 min
.tick_period = TICK_NS(10000000L), // 10ms ramp .tick_period = TICK_NS(10000000L), // 10ms ramp
.avradc = 0x7f, // off .avradc = 0x7f, // off
.adcconf = 0x8500,// RST .adcconf = 0x8500,// RST
.ddrc = 2, // OC1B HVOSC
.adcgain = ADC_GAINS, .adcgain = ADC_GAINS,
.auxadc_n = 4, .auxadc_n = 4,
.hvadc_ch = 1, .hvadc_ch = 1,
.hvadc_n = 4, .hvadc_n = 4,
.hvadc_safe = 0x8100, .hvadc_safe = 0x8100,
.ddrc = 2, // OC1B HVOSC
.hvosc_freq = 0,
.hvosc_dc = 0,
.dac_nominal = 0,
}, },
[1] = { // ON [1] = { // ON
.magic = MAGIC, .magic = MAGIC,
@ -196,7 +177,27 @@ const struct conf runconf[2] = {
.hvosc_freq = 64, .hvosc_freq = 64,
.hvosc_dc = 19, .hvosc_dc = 19,
.dac_nominal = 100, .dac_nominal = 100,
} },
[2] = { // SAFE
.magic = MAGIC,
.version = VERSION,
.safe = 1,
.flags = FLAG_WDT | FLAG_RAMP | FLAG_ADCCONF | FLAG_DACADC,
.flags2 = FLAG2_HVOSC | FLAG2_HVLED,
.wdt_timeout = 120, // 2 min
.tick_period = TICK_NS(10000000L), // 10ms ramp
.avradc = 0x7f, // off
.adcconf = 0x8500,// RST
.adcgain = ADC_GAINS,
.auxadc_n = 4,
.hvadc_ch = 1,
.hvadc_n = 4,
.hvadc_safe = 0x8100,
.ddrc = 2, // OC1B HVOSC
.hvosc_freq = 0,
.hvosc_dc = 0,
.dac_nominal = 0,
},
}; };
void conf_init() void conf_init()
@ -293,7 +294,9 @@ int main()
ads8688_init(); ads8688_init();
ltc1655_init(); ltc1655_init();
hv_safe(); hv_safe();
conf_init(); eeprom_load(0);
if (conf.magic == MAGIC || conf.version == VERSION)
conf_init();
while (1) { while (1) {
unsigned char cmd[3]; unsigned char cmd[3];
unsigned char resp[3]; unsigned char resp[3];