mirror of
https://codeberg.org/SiB64/turbo_weather.git
synced 2026-05-01 15:14:22 +02:00
Compare commits
No commits in common. "2d860e7deeb9176604b3c3db3df9aa819ff89df6" and "ee055428137ef0b6579aba6b50b4964b7a9cb988" have entirely different histories.
2d860e7dee
...
ee05542813
5 changed files with 181 additions and 18 deletions
163
src/#Makefile#
Normal file
163
src/#Makefile#
Normal file
|
|
@ -0,0 +1,163 @@
|
||||||
|
|
||||||
|
PROJ=bate
|
||||||
|
|
||||||
|
PATH:=/usr/local/bin:$(PATH)
|
||||||
|
|
||||||
|
default: all
|
||||||
|
all: $(PROJ).hex
|
||||||
|
|
||||||
|
SN_bate = 1
|
||||||
|
MCU_bate = attiny424
|
||||||
|
C_FILES_bate = uart.c rtc.c spi.c adc.c calib.c mul.c cmd.c
|
||||||
|
S_FILES_bate = uart_tx.S
|
||||||
|
|
||||||
|
MCU = $(MCU_$(PROJ))
|
||||||
|
# When flash gets tight, use `OPT=-Os`, or use more assembler :-)
|
||||||
|
OPT = -O2
|
||||||
|
|
||||||
|
CC=avr-gcc -Wall -Wno-parentheses -MMD -std=c99 $(OPT) \
|
||||||
|
-mmcu=$(MCU) \
|
||||||
|
-funsigned-char \
|
||||||
|
-funsigned-bitfields \
|
||||||
|
-fpack-struct \
|
||||||
|
-fshort-enums \
|
||||||
|
-mtiny-stack \
|
||||||
|
-mint8 \
|
||||||
|
-fverbose-asm
|
||||||
|
|
||||||
|
SN = $(SN_$(PROJ))
|
||||||
|
CFLAGS = $($*_CFLAGS) $(DEBUG) -I. -DSN="$(SN)"
|
||||||
|
|
||||||
|
C_FILES = $(C_FILES_$(PROJ))
|
||||||
|
S_FILES = $(S_FILES_$(PROJ))
|
||||||
|
OBJS = $(patsubst %.c, %.o, $(C_FILES)) $(patsubst %.S, %.o, $(S_FILES))
|
||||||
|
|
||||||
|
%.s: %.c %.o
|
||||||
|
$(CC) $(CFLAGS) -S $<
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) -g $(CFLAGS) -c $<
|
||||||
|
|
||||||
|
%.o: %.S
|
||||||
|
$(CC) -g $(CFLAGS) -c $<
|
||||||
|
|
||||||
|
-include *.d
|
||||||
|
|
||||||
|
LDFLAGS = -Teeprom.ld
|
||||||
|
|
||||||
|
%.elf: %.o $(OBJS)
|
||||||
|
$(CC) $(CFLAGS) -Wl,-Map=$*.map,--cref $^ --output $@ $(LDFLAGS)
|
||||||
|
|
||||||
|
OBJCOPY = avr-objcopy
|
||||||
|
|
||||||
|
%.hex: %.elf
|
||||||
|
$(OBJCOPY) -O ihex -R .eeprom -R .eemap $< $@
|
||||||
|
|
||||||
|
%.eeprom: %.elf
|
||||||
|
$(OBJCOPY) -O ihex -j .eemap --change-section-lma .eemap=0 $< $@
|
||||||
|
|
||||||
|
|
||||||
|
pMCU-attiny424 = t424
|
||||||
|
|
||||||
|
#
|
||||||
|
#avrdude> dump fuses
|
||||||
|
#>>> dump fuses 0x0 0x9
|
||||||
|
#
|
||||||
|
#Reading | ################################################## | 100% 0.13 s
|
||||||
|
#
|
||||||
|
#0000 00 00 7e ff ff f6 ff 00 00 |..~...... |
|
||||||
|
#
|
||||||
|
#avrdude>
|
||||||
|
|
||||||
|
# WDT
|
||||||
|
fuse0_bate= 0x00
|
||||||
|
# BOD
|
||||||
|
fuse1_bate= 0x00
|
||||||
|
# OSC, 20 MHz
|
||||||
|
fuse2_bate= 0x7e
|
||||||
|
# ???
|
||||||
|
fuse4_bate= 0xff
|
||||||
|
# SYS0 (default 0xf6) RESET, EEPROM erase
|
||||||
|
fuse5_bate= 0xf7
|
||||||
|
# SYS1 startup time (64ms)
|
||||||
|
fuse6_bate= 0xff
|
||||||
|
# APPEND
|
||||||
|
fuse7_bate= 0x00
|
||||||
|
# BOOTEND
|
||||||
|
fuse8_bate= 0x00
|
||||||
|
fuses_bate =$(patsubst %, 0x%, 00 00 7e ff ff f7 ff 00 00)
|
||||||
|
|
||||||
|
AVRDUDEPROG = avrdude
|
||||||
|
AVRDUDE = $(AVRDUDEPROG)
|
||||||
|
AVRDUDE_PROGRAMMER = serialupdi
|
||||||
|
AVRDUDE_PORT = /dev/ttyUSB1
|
||||||
|
|
||||||
|
AD = $(AVRDUDE) -p $(pMCU-$(MCU)) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
||||||
|
|
||||||
|
sig_bate = 0x1e 0x92 0x2c
|
||||||
|
|
||||||
|
id: $(PROJ).id
|
||||||
|
%.id:
|
||||||
|
$(AD) -qq -U signature:v:"$(sig_$*)":m
|
||||||
|
|
||||||
|
ad: $(PROJ).ad
|
||||||
|
%.ad:
|
||||||
|
$(AD) -v -t
|
||||||
|
|
||||||
|
%.burn: %.hex
|
||||||
|
$(AD) -U flash:v:$< || $(AD) -U flash:w:$<
|
||||||
|
|
||||||
|
%.verify: %.hex %.eeprom
|
||||||
|
-$(AD) -qq -U fuses:v:"$(fuses_$*)":m
|
||||||
|
-$(AD) -qq -U userrow:v:"$(BATE_CONFIG)":m
|
||||||
|
-$(AD) -qq -U eeprom:v:$(word 2, $^)
|
||||||
|
-$(AD) -qq -U flash:v:$<
|
||||||
|
|
||||||
|
fuse: $(PROJ).fuse$F
|
||||||
|
|
||||||
|
%.fuse$F:
|
||||||
|
echo "$*: fuse$F = $(fuse$F_$*)"
|
||||||
|
[ -n "$(fuse$F_$*)" ] && $(AD) -B 5 -U fuse$F:w:$(fuse$F_$*):m
|
||||||
|
|
||||||
|
# see bate.c: Configuration in USERROW
|
||||||
|
BC_MAGIC = 0xba
|
||||||
|
BC_VERS = 6
|
||||||
|
BC_TRIG = 0x28
|
||||||
|
BC_SEND = 0x59
|
||||||
|
BC_PWR = 0x7c
|
||||||
|
BC_TEST = 0
|
||||||
|
BC_SPI = 0xff
|
||||||
|
BC_MDEL = 2
|
||||||
|
BC_PER = 9 0
|
||||||
|
BC_CPER = 43 1
|
||||||
|
|
||||||
|
BC_CLK = 1
|
||||||
|
BC_MCLK = 0
|
||||||
|
BC_BAUD = 0 0
|
||||||
|
BC_UART = 0xd0
|
||||||
|
BC_PIT = 0xff
|
||||||
|
BC_IMM = 5
|
||||||
|
|
||||||
|
BATE_CONFIG = $(BC_MAGIC) $(BC_VERS) \
|
||||||
|
$(BC_TRIG) $(BC_SEND) $(BC_PWR) $(BC_TEST) \
|
||||||
|
$(BC_SPI) $(BC_MDEL) $(BC_PER) $(BC_CPER) \
|
||||||
|
$(BC_CLK) $(BC_MCLK) $(BC_BAUD) $(BC_UART) \
|
||||||
|
$(BC_PIT) $(BC_IMM)
|
||||||
|
|
||||||
|
bate.config:
|
||||||
|
$(AD) -U userrow:v:"$(BATE_CONFIG)":m \
|
||||||
|
|| $(AD) -U userrow:w:"$(BATE_CONFIG)":m
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.hex *.o *.s *.map *.elf *.d
|
||||||
|
|
||||||
|
.PHONY: eeprom.eeprom
|
||||||
|
eeprom.eeprom:
|
||||||
|
$(AD) -U eeprom:r:$@
|
||||||
|
%.eeprom.burn: %.eeprom
|
||||||
|
$(AD) -U eeprom:v:$< || $(AD) -U eeprom:w:$<
|
||||||
|
|
||||||
|
calib: calib.c mul.c
|
||||||
|
gcc -DCALIB_DEBUG -o $@ $<
|
||||||
|
mul: mul.c
|
||||||
|
gcc -DMUL_TEST -o $@ $<
|
||||||
1
src/.#Makefile
Symbolic link
1
src/.#Makefile
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
stephan@blaulicht.31918:1708279459
|
||||||
10
src/Makefile
10
src/Makefile
|
|
@ -121,15 +121,15 @@ fuse: $(PROJ).fuse$F
|
||||||
|
|
||||||
# see bate.c: Configuration in USERROW
|
# see bate.c: Configuration in USERROW
|
||||||
BC_MAGIC = 0xba
|
BC_MAGIC = 0xba
|
||||||
BC_VERS = 8
|
BC_VERS = 6
|
||||||
BC_TRIG = 0x29
|
BC_TRIG = 0x28
|
||||||
BC_SEND = 0x59
|
BC_SEND = 0x59
|
||||||
BC_PWR = 0x7c
|
BC_PWR = 0x2d
|
||||||
BC_TEST = 0
|
BC_TEST = 0
|
||||||
BC_SPI = 0xff
|
BC_SPI = 0xff
|
||||||
BC_MDEL = 2
|
BC_MDEL = 2
|
||||||
BC_PER = 9
|
BC_PER = 9 0
|
||||||
BC_CPER = 30
|
BC_CPER = 43 1
|
||||||
|
|
||||||
BC_CLK = 1
|
BC_CLK = 1
|
||||||
BC_MCLK = 0
|
BC_MCLK = 0
|
||||||
|
|
|
||||||
19
src/bate.c
19
src/bate.c
|
|
@ -364,7 +364,7 @@ struct config config = {
|
||||||
.triggers = TRIGGER_CLOCK | TRIGGER_IMMED,
|
.triggers = TRIGGER_CLOCK | TRIGGER_IMMED,
|
||||||
.mclk_delay = 2,
|
.mclk_delay = 2,
|
||||||
.period = 59,
|
.period = 59,
|
||||||
.confp = 59,
|
.cperiod = 3599,
|
||||||
.uart_mode = UART_Tx | UART_Rx | UART_SFD,
|
.uart_mode = UART_Tx | UART_Rx | UART_SFD,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -426,9 +426,9 @@ int main()
|
||||||
|
|
||||||
uint8_t trigger = TRIGGER_CONT | TRIGGER_ONCE;
|
uint8_t trigger = TRIGGER_CONT | TRIGGER_ONCE;
|
||||||
uint8_t mclk_delay = 0;
|
uint8_t mclk_delay = 0;
|
||||||
uint8_t trigger_clock = 0;
|
static uint16_t trigger_clock = 0;
|
||||||
uint8_t config_clock = 0;
|
static uint16_t config_clock = 0;
|
||||||
uint8_t send_config = 0;
|
uint8_t send_config = 1;
|
||||||
uint8_t uart_rx_delay = 0;
|
uint8_t uart_rx_delay = 0;
|
||||||
immediate = config.immediate;
|
immediate = config.immediate;
|
||||||
test_calib = config.calib_test;
|
test_calib = config.calib_test;
|
||||||
|
|
@ -444,6 +444,10 @@ int main()
|
||||||
trigger |= TRIGGER_CLOCK;
|
trigger |= TRIGGER_CLOCK;
|
||||||
trigger_clock = config.period;
|
trigger_clock = config.period;
|
||||||
}
|
}
|
||||||
|
if (config.send & SEND_CONFIG && !config_clock--) {
|
||||||
|
send_config = 1;
|
||||||
|
config_clock = config.cperiod;
|
||||||
|
}
|
||||||
if (uart_rx_delay)
|
if (uart_rx_delay)
|
||||||
uart_rx_delay--;
|
uart_rx_delay--;
|
||||||
}
|
}
|
||||||
|
|
@ -523,11 +527,6 @@ int main()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.send & SEND_CONFIG && !config_clock--) {
|
|
||||||
send_config = 1;
|
|
||||||
config_clock = config.confp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (immediate)
|
if (immediate)
|
||||||
immediate--;
|
immediate--;
|
||||||
|
|
||||||
|
|
@ -539,6 +538,7 @@ int main()
|
||||||
start_adc();
|
start_adc();
|
||||||
|
|
||||||
if (send_config) {
|
if (send_config) {
|
||||||
|
send_config = 0;
|
||||||
send_hex('S', (uint8_t *)&SIGROW, sizeof(SIGROW_t), 0);
|
send_hex('S', (uint8_t *)&SIGROW, sizeof(SIGROW_t), 0);
|
||||||
send_hex('F', (uint8_t *)&FUSE, sizeof(FUSE_t), 1);
|
send_hex('F', (uint8_t *)&FUSE, sizeof(FUSE_t), 1);
|
||||||
send_hex('U', (uint8_t *)&USERROW, sizeof(USERROW_t), 1);
|
send_hex('U', (uint8_t *)&USERROW, sizeof(USERROW_t), 1);
|
||||||
|
|
@ -583,6 +583,5 @@ int main()
|
||||||
|
|
||||||
uart_tick();
|
uart_tick();
|
||||||
trigger = TRIGGER_CONT;
|
trigger = TRIGGER_CONT;
|
||||||
send_config = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ struct config {
|
||||||
uint8_t calib_test;
|
uint8_t calib_test;
|
||||||
uint8_t spi_div;
|
uint8_t spi_div;
|
||||||
uint8_t mclk_delay;
|
uint8_t mclk_delay;
|
||||||
uint8_t period;
|
uint16_t period;
|
||||||
uint8_t confp;
|
uint16_t cperiod;
|
||||||
uint8_t cpu_clk;
|
uint8_t cpu_clk;
|
||||||
uint8_t mclk_period;
|
uint8_t mclk_period;
|
||||||
uint16_t baud_div;
|
uint16_t baud_div;
|
||||||
|
|
@ -30,7 +30,7 @@ struct config {
|
||||||
|
|
||||||
enum magic_flags {
|
enum magic_flags {
|
||||||
USE_USERROW = 0xBA,
|
USE_USERROW = 0xBA,
|
||||||
USE_VERSION = 0x08,
|
USE_VERSION = 0x07,
|
||||||
};
|
};
|
||||||
enum power_flags {
|
enum power_flags {
|
||||||
POWER_DOWN = 0x01,
|
POWER_DOWN = 0x01,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue