-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add "MyAVR"-board based morsedecoder
Signed-off-by: Michael Buesch <[email protected]>
- Loading branch information
Showing
17 changed files
with
6,440 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
# The architecture configuration | ||
ARCH := atmega8 | ||
AVRDUDE_ARCH := m8 | ||
AVRDUDE_SPEED := 1 | ||
AVRDUDE_SLOW_SPEED := 100 | ||
PROGRAMMER := avr910 | ||
#PROGRAMMER := avrisp2 | ||
PROGPORT := /dev/ttyUSB0 | ||
#PROGPORT := usb | ||
|
||
# The fuse bits | ||
LFUSE := 0xFB | ||
HFUSE := 0xD9 | ||
|
||
# Hardware parameters | ||
F_CPU := 3686400 | ||
|
||
BINEXT := | ||
NODEPS := | ||
|
||
# The toolchain definitions | ||
CC := avr-gcc$(BINEXT) | ||
OBJCOPY := avr-objcopy$(BINEXT) | ||
SIZE := avr-size$(BINEXT) | ||
MKDIR := mkdir$(BINEXT) | ||
MV := mv$(BINEXT) | ||
RM := rm$(BINEXT) | ||
CP := cp$(BINEXT) | ||
ECHO := echo$(BINEXT) | ||
AVRDUDE := avrdude$(BINEXT) | ||
MYSMARTUSB := mysmartusb.py | ||
DOXYGEN := doxygen$(BINEXT) | ||
|
||
V := @ # Verbose build: make V=1 | ||
O := s # Optimize flag | ||
Q := $(V:1=) | ||
QUIET_CC = $(Q:@=@$(ECHO) ' CC '$@;)$(CC) | ||
QUIET_DEPEND = $(Q:@=@$(ECHO) ' DEPEND '$@;)$(CC) | ||
QUIET_OBJCOPY = $(Q:@=@$(ECHO) ' OBJCOPY '$@;)$(OBJCOPY) | ||
QUIET_SIZE = $(Q:@=@$(ECHO) ' SIZE '$@;)$(SIZE) | ||
|
||
CFLAGS := -mmcu=$(ARCH) -std=c99 -g -O$(O) -Wall \ | ||
"-Dinline=inline __attribute__((__always_inline__))" \ | ||
-fshort-enums \ | ||
-DF_CPU=$(F_CPU) | ||
LDFLAGS := | ||
|
||
# Application code | ||
SRCS := main.c lcd.c morse.c buzzer.c | ||
NAME := morsedec | ||
BIN := $(NAME).bin | ||
HEX := $(NAME).hex | ||
EEP := $(NAME).eep.hex | ||
|
||
.SUFFIXES: | ||
.PHONY: all avrdude install_flash install_eeprom install reset writefuse doxygen clean distclean | ||
.DEFAULT_GOAL := all | ||
|
||
ifeq ($(BINEXT),.exe) | ||
HAVE_MYSMARTUSB := | ||
else | ||
HAVE_MYSMARTUSB := $(shell $(MYSMARTUSB) -h >/dev/null 2>&1 && $(ECHO) 1) | ||
endif | ||
|
||
MYSMARTUSB_PWRCYCLE := \ | ||
$(if $(HAVE_MYSMARTUSB), \ | ||
$(MYSMARTUSB) -p0 $(PROGPORT) && \ | ||
sleep 1 && \ | ||
$(MYSMARTUSB) -p1 $(PROGPORT) \ | ||
) | ||
|
||
MYSMARTUSB_PROGMODE := \ | ||
$(if $(HAVE_MYSMARTUSB), \ | ||
$(MYSMARTUSB) -mp $(PROGPORT) \ | ||
) | ||
|
||
MYSMARTUSB_DATAMODE := \ | ||
$(if $(HAVE_MYSMARTUSB), \ | ||
$(MYSMARTUSB) -md $(PROGPORT) \ | ||
) | ||
|
||
DEPS = $(sort $(patsubst %.c,dep/%.d,$(1))) | ||
OBJS = $(sort $(patsubst %.c,obj/%.o,$(1))) | ||
|
||
# Generate dependencies | ||
$(call DEPS,$(SRCS)): dep/%.d: %.c | ||
@$(MKDIR) -p $(dir $@) | ||
@$(MKDIR) -p obj | ||
$(QUIET_DEPEND) -o $@.tmp -MM -MT "$@ $(patsubst dep/%.d,obj/%.o,$@)" $(CFLAGS) $< | ||
@$(MV) -f $@.tmp $@ | ||
|
||
ifeq ($(NODEPS),) | ||
-include $(call DEPS,$(SRCS)) | ||
endif | ||
|
||
# Generate object files | ||
$(call OBJS,$(SRCS)): obj/%.o: %.c | ||
@$(MKDIR) -p $(dir $@) | ||
$(QUIET_CC) -o $@ -c $(CFLAGS) $< | ||
|
||
all: $(HEX) | ||
|
||
%.s: %.c | ||
$(QUIET_CC) $(CFLAGS) -S $*.c | ||
|
||
$(BIN): $(call OBJS,$(SRCS)) | ||
$(QUIET_CC) $(CFLAGS) -o $(BIN) $(call OBJS,$(SRCS)) $(LDFLAGS) $(LDFLAGS) | ||
|
||
$(HEX): $(BIN) | ||
$(QUIET_OBJCOPY) -R.eeprom -O ihex $(BIN) $(HEX) | ||
# $(QUIET_OBJCOPY) -j.eeprom --set-section-flags=.eeprom="alloc,load" \ | ||
# --change-section-lma .eeprom=0 -O ihex $(BIN) $(EEP) | ||
$(QUIET_SIZE) $(BIN) | ||
|
||
avrdude: | ||
$(call MYSMARTUSB_PROGMODE) | ||
$(AVRDUDE) -B $(AVRDUDE_SPEED) -p $(AVRDUDE_ARCH) \ | ||
-c $(PROGRAMMER) -P $(PROGPORT) -t | ||
$(call MYSMARTUSB_PWRCYCLE) | ||
$(call MYSMARTUSB_DATAMODE) | ||
|
||
install_flash: all | ||
$(call MYSMARTUSB_PROGMODE) | ||
$(AVRDUDE) -B $(AVRDUDE_SPEED) -p $(AVRDUDE_ARCH) \ | ||
-c $(PROGRAMMER) -P $(PROGPORT) \ | ||
-U flash:w:$(HEX) | ||
$(call MYSMARTUSB_DATAMODE) | ||
|
||
install_eeprom: all | ||
$(call MYSMARTUSB_PROGMODE) | ||
$(AVRDUDE) -B $(AVRDUDE_SPEED) -p $(AVRDUDE_ARCH) \ | ||
-c $(PROGRAMMER) -P $(PROGPORT) -U eeprom:w:$(EEP) | ||
$(call MYSMARTUSB_DATAMODE) | ||
|
||
install: install_flash | ||
$(call MYSMARTUSB_PWRCYCLE) | ||
|
||
# Reset the microcontroller through avrdude | ||
reset: | ||
$(call MYSMARTUSB_PROGMODE) | ||
$(AVRDUDE) -B $(AVRDUDE_SPEED) -p $(AVRDUDE_ARCH) \ | ||
-c $(PROGRAMMER) -P $(PROGPORT) \ | ||
-U signature:r:/dev/null:i -q -q | ||
$(call MYSMARTUSB_PWRCYCLE) | ||
|
||
writefuse: | ||
$(call MYSMARTUSB_PROGMODE) | ||
$(AVRDUDE) -B $(AVRDUDE_SLOW_SPEED) -p $(AVRDUDE_ARCH) \ | ||
-c $(PROGRAMMER) -P $(PROGPORT) -q -q \ | ||
-U lfuse:w:$(LFUSE):m \ | ||
-U hfuse:w:$(HFUSE):m | ||
$(call MYSMARTUSB_DATAMODE) | ||
$(call MYSMARTUSB_PWRCYCLE) | ||
|
||
doxygen: | ||
-$(RM) -Rf doc | ||
$(MKDIR) doc | ||
$(DOXYGEN) Doxyfile | ||
$(CP) *.jpg doc/latex/ | ||
$(CP) *.jpg doc/html/ | ||
$(MAKE) -C doc/latex pdf | ||
$(MV) doc/latex/refman.pdf doc/README-morsedecoder.pdf | ||
|
||
clean: | ||
-$(RM) -rf obj dep $(BIN) doc/latex | ||
|
||
distclean: clean | ||
-$(RM) -rf $(patsubst %.c,%.s,$(SRCS)) $(HEX) $(EEP) doc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<html> | ||
<head> | ||
<meta http-equiv="refresh" content="0; url=doc/html/index.html" /> | ||
</head> | ||
<body> | ||
<h1><a href="doc/html/index.html">Click here</a></h1> | ||
</body> | ||
</html> |
Oops, something went wrong.