123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- # Build configuration:
- # Target device. May be one of:
- # t13 => ATTiny13
- # t25 => ATTiny25
- # t45 => ATTiny45
- # t85 => ATTiny85
- # m88 => ATMega88
- # m88p => ATMega88P
- # m328p => ATMega328P
- DEV := t85
- ifeq ($(DEV),t13) # ATTiny 13
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 0
- FEAT_HIGHRES := 0
- FEAT_BATTERY := 0
- FEAT_POWERSAVE := 0
- FEAT_REMOTE := 0
- FEAT_EEPROM := 0
- FEAT_BOOT := 0
- endif
- ifeq ($(DEV),t25) # ATTiny 25
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 0
- FEAT_HIGHRES := 0
- FEAT_BATTERY := 0
- FEAT_POWERSAVE := 0
- FEAT_REMOTE := 0
- FEAT_EEPROM := 0
- FEAT_BOOT := 0
- endif
- ifeq ($(DEV),t45) # ATTiny 45
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 0
- FEAT_HIGHRES := 1
- FEAT_BATTERY := 1
- FEAT_POWERSAVE := 1
- FEAT_REMOTE := 0
- FEAT_EEPROM := 0
- FEAT_BOOT := 0
- endif
- ifeq ($(DEV),t85) # ATTiny 85
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 0
- FEAT_HIGHRES := 1
- FEAT_BATTERY := 1
- FEAT_POWERSAVE := 1
- FEAT_REMOTE := 0
- FEAT_EEPROM := 0
- FEAT_BOOT := 0
- endif
- ifeq ($(DEV),m88) # ATMega 88
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 1
- FEAT_HIGHRES := 1
- FEAT_BATTERY := 0
- FEAT_POWERSAVE := 0
- FEAT_REMOTE := 1
- FEAT_EEPROM := 1
- FEAT_BOOT := 1
- endif
- ifeq ($(DEV),m88p) # ATMega 88P
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 1
- FEAT_HIGHRES := 1
- FEAT_BATTERY := 0
- FEAT_POWERSAVE := 0
- FEAT_REMOTE := 1
- FEAT_EEPROM := 1
- FEAT_BOOT := 1
- endif
- ifeq ($(DEV),m328p) # ATMega 328P
- CONF_PWMLIM := 100
- CONF_PWMINVERT := 0
- CONF_PWMLOWSPFACT := 1.0
- CONF_ADCINVERT := 0
- CONF_ADCHSL := 1
- FEAT_HIGHRES := 1
- FEAT_BATTERY := 1
- FEAT_POWERSAVE := 1
- FEAT_REMOTE := 1
- FEAT_EEPROM := 1
- FEAT_BOOT := 1
- endif
- ##############################################################################
- ##############################################################################
- ##############################################################################
- $(info DEV=$(DEV) \
- CONF_PWMLIM=$(CONF_PWMLIM) \
- CONF_PWMINVERT=$(CONF_PWMINVERT) \
- CONF_PWMLOWSPFACT=$(CONF_PWMLOWSPFACT) \
- CONF_ADCINVERT=$(CONF_ADCINVERT) \
- CONF_ADCHSL=$(CONF_ADCHSL) \
- FEAT_HIGHRES=$(FEAT_HIGHRES) \
- FEAT_BATTERY=$(FEAT_BATTERY) \
- FEAT_POWERSAVE=$(FEAT_POWERSAVE) \
- FEAT_REMOTE=$(FEAT_REMOTE) \
- FEAT_EEPROM=$(FEAT_EEPROM) \
- FEAT_BOOT=$(FEAT_BOOT) \
- )
- # Project name
- NAME := simplepwm
- # Project source files
- SRCS := \
- adc.c \
- battery.c \
- color.c \
- crc.c \
- curve.c \
- debug.c \
- eeprom.c \
- filter.c \
- main.c \
- movingavg.c \
- outputsp.c \
- potentiometer.c \
- pcint.c \
- pwm.c \
- remote.c \
- ring.c \
- standby.c \
- uart.c \
- watchdog.c
- GEN_SRCS :=
- # Bootloader source files
- BOOT_SRCS :=
- BOOT_GEN_SRCS :=
- BOOT_OFFSET :=
- ifeq ($(FEAT_BOOT),1)
- BOOT_SRCS := bootloader.c crc.c
- endif
- ifeq ($(DEV),t13)
- # ATTiny 13
- # 9.6 MHz, SUT 4 ms, BOD 2.7 V, WDT on, SPIEN
- F_CPU := 9600000UL
- LFUSE := 0x56
- HFUSE := 0xFB
- EFUSE :=
- ifeq ($(FEAT_BOOT),1)
- $(error FEAT_BOOT not supported on ATTiny 13)
- endif
- CHIP_ID := 1
- endif
- ifeq ($(DEV),t25)
- # ATTiny 25
- # 8 MHz, SUT 4 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xDD
- EFUSE := 0xFF
- ifeq ($(FEAT_BOOT),1)
- $(error FEAT_BOOT not supported on ATTiny 25)
- endif
- CHIP_ID := 2
- endif
- ifeq ($(DEV),t45)
- # ATTiny 45
- # 8 MHz, SUT 4 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xDD
- EFUSE := 0xFF
- ifeq ($(FEAT_BOOT),1)
- $(error FEAT_BOOT not supported on ATTiny 45)
- endif
- CHIP_ID := 3
- endif
- ifeq ($(DEV),t85)
- # ATTiny 85
- # 8 MHz, SUT 4 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xDD
- EFUSE := 0xFF
- ifeq ($(FEAT_BOOT),1)
- $(error FEAT_BOOT not supported on ATTiny 85)
- endif
- CHIP_ID := 4
- endif
- ifeq ($(DEV),m88)
- # ATMega 88
- # 8 MHz, SUT 4.1 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xDD
- EFUSE := 0xFB
- ifeq ($(FEAT_BOOT),1)
- EFUSE := 0xFA
- BOOT_OFFSET := 0x1C00 # 0xE00*2
- endif
- CHIP_ID := 5
- endif
- ifeq ($(DEV),m88p)
- # ATMega 88P
- # 8 MHz, SUT 4.1 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xDD
- EFUSE := 0xFB
- ifeq ($(FEAT_BOOT),1)
- EFUSE := 0xFA
- BOOT_OFFSET := 0x1C00 # 0xE00*2
- endif
- CHIP_ID := 6
- endif
- ifeq ($(DEV),m328p)
- # ATMega 328P
- # 8 MHz, SUT 4.1 ms, BOD 2.7 V, WDT off, SPIEN
- F_CPU := 8000000UL
- LFUSE := 0xD2
- HFUSE := 0xD9
- EFUSE := 0xFD
- ifeq ($(FEAT_BOOT),1)
- HFUSE := 0xD8
- BOOT_OFFSET := 0x7000 # 0x3800*2
- endif
- CHIP_ID := 7
- endif
- # Architecture configuration
- GCC_ARCH := $(subst m,atmega,$(subst t,attiny,$(DEV)))
- AVRDUDE_ARCH := $(DEV)
- FUNC_STACK_LIMIT :=
- # Programmer selection.
- # Values can be: avrisp2, mysmartusb
- PROGRAMMER := avrisp2
- AVRDUDE_SPEED := 10
- AVRDUDE_SLOW_SPEED := 200
- # Instrumentation
- INSTRUMENT_FUNC :=
- BOOT_INSTRUMENT_FUNC :=
- # Additional compiler flags
- CFLAGS := -DCHIP_ID="$(CHIP_ID)" \
- -DCONF_PWMLIM="$(CONF_PWMLIM)" \
- -DCONF_PWMINVERT="(!!($(CONF_PWMINVERT)))" \
- -DCONF_PWMLOWSPFACT="$(CONF_PWMLOWSPFACT)" \
- -DCONF_ADCINVERT="(!!($(CONF_ADCINVERT)))" \
- -DCONF_ADCHSL="(!!($(CONF_ADCHSL)))" \
- -DFEAT_HIGHRES="(!!($(FEAT_HIGHRES)))" \
- -DFEAT_BATTERY="(!!($(FEAT_BATTERY)))" \
- -DFEAT_POWERSAVE="(!!($(FEAT_POWERSAVE)))" \
- -DFEAT_REMOTE="(!!($(FEAT_REMOTE)))" \
- -DFEAT_EEPROM="(!!($(FEAT_EEPROM)))"
- BOOT_CFLAGS := $(CFLAGS)
- LDFLAGS :=
- # Additional "clean" and "distclean" target files
- CLEAN_FILES := pwm_conf.h pwm0_isr.c pwm1_isr.c pwm2_isr.c
- DISTCLEAN_FILES :=
- streq = $(and $(filter 1,$(words $2)),$(filter $1,$(firstword $2)))
- deveq = $(call streq,$1,$(DEV))
- ifeq ($(strip $(call deveq,t13)\
- $(call deveq,t25)\
- $(call deveq,t45)\
- $(call deveq,t85)\
- $(call deveq,m88)\
- $(call deveq,m88p)\
- $(call deveq,m328p)),)
- $(error "DEV=$(DEV) is not supported.")
- endif
- include avrmakelib.mk
- pwm.c: pwm_conf.h pwm0_isr.c pwm1_isr.c pwm2_isr.c
- pwm_conf.h: pwm_conf.py
- $(QUIET_PYTHON3) $< $(CFLAGS) > $@
- pwm0_isr.c: pwm_isr_template.c
- $(QUIET_SED) -e 's/%INDEX%/0/g' -e 's/%HEADER%/THIS IS A GENERATED FILE/g' $< > $@
- pwm1_isr.c: pwm_isr_template.c
- $(QUIET_SED) -e 's/%INDEX%/1/g' -e 's/%HEADER%/THIS IS A GENERATED FILE/g' $< > $@
- pwm2_isr.c: pwm_isr_template.c
- $(QUIET_SED) -e 's/%INDEX%/2/g' -e 's/%HEADER%/THIS IS A GENERATED FILE/g' $< > $@
|