#LOADCMD=avrdude
# === end edit this
#
-LOADARG=-p $(DUDECPUTYPE) -c stk500v2 -e -U flash:w:
+#LOADARG=-p $(DUDECPUTYPE) -c stk500v2 -e -U flash:w:
+PROGRAMMER=-p $(DUDECPUTYPE) -c stk500v2
+
+# board -> bus pirate
+#
+# /RST -> CS 9. WT
+# MOSI -> MOSI 8. GR
+# MISO -> MISO 0. Blk
+# SCK -> CLK 7. PU
+# GND -> GND 1. BR
+#
+PROGRAMMER=-p $(DUDECPUTYPE) -c buspirate
+
+LOADARG=$(PROGRAMMER) -e -U flash:w:
CC=avr-gcc
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -W -Os -mcall-prologues
# #-------------------
-.PHONY: test_lcd test_dac all main
+.PHONY: test_lcd test_dac all main ddcp-script
#
all: main.hex test_lcd.hex test_dac.hex
#
+ddcp-script: ddcp-script-setval ddcp-script-getval ddcp-script-ttyinit
+#
main: main.hex
#
test_lcd: test_lcd.hex
#
test_dac: test_dac.hex
echo "OK"
+#
+ddcp-script-setval: ddcp-script-setval.c
+ gcc -Wall -o ddcp-script-setval ddcp-script-setval.c
+ddcp-script-getval: ddcp-script-getval.c
+ gcc -Wall -o ddcp-script-getval ddcp-script-getval.c
+ddcp-script-ttyinit: ddcp-script-ttyinit.c
+ gcc -Wall -o ddcp-script-ttyinit ddcp-script-ttyinit.c
+ddcp: ddcp-script-setval ddcp-script-getval ddcp-script-ttyinit
#-------------------
size:
avr-size *.elf
@echo " program using the avrdude programmer"
@echo " "
@echo "Usage: make clean"
- @echo " delete all generated files except the pre-compiled ones"
+ @echo " delete all generated files"
@echo "Test programs:"
@echo "Usage: make test_lcd|load_test_lcd|test_dac|load_test_dac"
@echo " compile and load test programs"
+ @echo "Usage: make ddcp"
+ @echo " compile unix program to set serial line speed such that one can use scripts to change settings"
#-------------------
main.hex: main.elf
$(OBJCOPY) -R .eeprom -O ihex main.elf main.hex
@echo " "
@echo "Expl.: data=initialized data, bss=uninitialized data, text=code"
@echo " "
-main.elf: main.o dac.o lcd.o analog.o kbd.o
- $(CC) $(CFLAGS) -o main.elf -Wl,-Map,main.map main.o dac.o lcd.o analog.o kbd.o
-main.o: main.c dac.h kbd.h lcd.h lcd_hw.h analog.h hardware_settings.h
+main.elf: main.o dac.o lcd.o analog.o kbd.o uart.o
+ $(CC) $(CFLAGS) -o main.elf -Wl,-Map,main.map main.o dac.o lcd.o analog.o kbd.o uart.o
+main.o: main.c dac.h kbd.h lcd.h lcd_hw.h analog.h hardware_settings.h uart.h
$(CC) $(CFLAGS) -Os -c main.c
#-------------------
test_lcd.hex: test_lcd.elf
kbd.o : kbd.c kbd.h
$(CC) $(CFLAGS) -Os -c kbd.c
#-------------------
+uart.o : uart.c uart.h
+ $(CC) $(CFLAGS) -Os -c uart.c
+#-------------------
load: main.hex
$(LOADCMD) $(LOADARG)main.hex
#
#-------------------
# fuse byte settings:
# Atmel AVR ATmega8
-# Fuse Low Byte = 0xe1 (1MHz internal), 0xe3 (4MHz internal), 0xe4 (8MHz internal)
+# Fuse Low Byte = 0xe1 (1MHz internal), 0xe4 (8MHz internal)
+# Fuse Low Byte with BOD = 0xa1 (1MHz internal), 0xa4 (8MHz internal)
# Fuse High Byte = 0xd9
# Factory default is 0xe1 for low byte and 0xd9 for high byte
# Check this with make rdfuses
rdfuses:
- $(LOADCMD) -p $(DUDECPUTYPE) -c stk500v2 -v -q
+ $(LOADCMD) $(PROGRAMMER) -v -q
# use internal RC oscillator 8 Mhz (lf=0xe4 hf=0xd9)
fuses:
- $(LOADCMD) -p $(DUDECPUTYPE) -c stk500v2 -u -v -U lfuse:w:0xe4:m
- $(LOADCMD) -p $(DUDECPUTYPE) -c stk500v2 -u -v -U hfuse:w:0xd9:m
+ $(LOADCMD) $(PROGRAMMER) -u -v -U lfuse:w:0xa4:m
+ $(LOADCMD) $(PROGRAMMER) -u -v -U hfuse:w:0xd9:m
fuse:
- $(LOADCMD) -p $(DUDECPUTYPE) -c stk500v2 -u -v -U lfuse:w:0xe4:m
- $(LOADCMD) -p $(DUDECPUTYPE) -c stk500v2 -u -v -U hfuse:w:0xd9:m
+ $(LOADCMD) $(PROGRAMMER) -u -v -U lfuse:w:0xa4:m
+ $(LOADCMD) $(PROGRAMMER) -u -v -U hfuse:w:0xd9:m
#-------------------
clean:
- rm -f *.o *.map *.elf test*.hex main.hex
+ rm -f *.o *.map *.elf test*.hex main.hex ddcp-script-ttyinit ddcp-script-getval ddcp-script-setval
#-------------------