Skip to content

Commit

Permalink
Add "MyAVR"-board based morsedecoder
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Buesch <[email protected]>
  • Loading branch information
mbuesch committed Apr 28, 2013
1 parent 066bd2d commit ed29518
Show file tree
Hide file tree
Showing 17 changed files with 6,440 additions and 0 deletions.
1,792 changes: 1,792 additions & 0 deletions myavr_morsedec/Doxyfile

Large diffs are not rendered by default.

339 changes: 339 additions & 0 deletions myavr_morsedec/LICENSE.txt

Large diffs are not rendered by default.

168 changes: 168 additions & 0 deletions myavr_morsedec/Makefile
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
8 changes: 8 additions & 0 deletions myavr_morsedec/README-morsedecoder.html
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>
Loading

0 comments on commit ed29518

Please sign in to comment.