From 1182c9b5783b5271f827eb373c7db1ad33a57663 Mon Sep 17 00:00:00 2001 From: true Date: Sat, 11 Feb 2023 06:29:53 -0800 Subject: [PATCH] Rename ATTINY88 firmware directory (again) I think I've settled on a filename structure --- fw_dc22_attiny88/Debug/Makefile | 152 ++ fw_dc22_attiny88/Debug/makedep.mk | 10 + fw_dc22_attiny88/Debug/src/adc.d | 41 + fw_dc22_attiny88/Debug/src/adc.o | Bin 0 -> 7108 bytes fw_dc22_attiny88/Debug/src/led.d | 52 + fw_dc22_attiny88/Debug/src/led.o | Bin 0 -> 9908 bytes fw_dc22_attiny88/Debug/src/main.d | 72 + fw_dc22_attiny88/Debug/src/main.o | Bin 0 -> 20416 bytes fw_dc22_attiny88/Debug/wp_dc22_attiny88.eep | 1 + .../Debug}/wp_dc22_attiny88.elf | Bin .../Debug}/wp_dc22_attiny88.hex | 0 fw_dc22_attiny88/Debug/wp_dc22_attiny88.lss | 1838 +++++++++++++++++ fw_dc22_attiny88/Debug/wp_dc22_attiny88.map | 643 ++++++ fw_dc22_attiny88/Debug/wp_dc22_attiny88.srec | 142 ++ fw_dc22_attiny88/Release/Makefile | 152 ++ fw_dc22_attiny88/Release/makedep.mk | 10 + fw_dc22_attiny88/Release/src/adc.d | 41 + fw_dc22_attiny88/Release/src/adc.o | Bin 0 -> 2224 bytes fw_dc22_attiny88/Release/src/led.d | 52 + fw_dc22_attiny88/Release/src/led.o | Bin 0 -> 3020 bytes fw_dc22_attiny88/Release/src/main.d | 72 + fw_dc22_attiny88/Release/src/main.o | Bin 0 -> 7080 bytes fw_dc22_attiny88/Release/wp_dc22_attiny88.eep | 1 + fw_dc22_attiny88/Release/wp_dc22_attiny88.elf | Bin 0 -> 11872 bytes fw_dc22_attiny88/Release/wp_dc22_attiny88.hex | 141 ++ fw_dc22_attiny88/Release/wp_dc22_attiny88.lss | 1060 ++++++++++ fw_dc22_attiny88/Release/wp_dc22_attiny88.map | 613 ++++++ .../Release/wp_dc22_attiny88.srec | 142 ++ fw_dc22_attiny88/bin/wp_dc22_attiny88.elf | Bin 0 -> 22748 bytes fw_dc22_attiny88/bin/wp_dc22_attiny88.hex | 141 ++ {fw_attiny88 => fw_dc22_attiny88}/src/adc.c | 0 {fw_attiny88 => fw_dc22_attiny88}/src/adc.h | 0 .../src/config.h | 0 {fw_attiny88 => fw_dc22_attiny88}/src/i2c.h | 0 .../src/i2c_interrupt.h | 0 {fw_attiny88 => fw_dc22_attiny88}/src/led.c | 0 {fw_attiny88 => fw_dc22_attiny88}/src/led.h | 0 {fw_attiny88 => fw_dc22_attiny88}/src/main.c | 0 {fw_attiny88 => fw_dc22_attiny88}/src/timer.h | 0 .../wp_dc22_attiny88.atsln | 0 .../wp_dc22_attiny88.componentinfo.xml | 0 .../wp_dc22_attiny88.cproj | 0 42 files changed, 5376 insertions(+) create mode 100644 fw_dc22_attiny88/Debug/Makefile create mode 100644 fw_dc22_attiny88/Debug/makedep.mk create mode 100644 fw_dc22_attiny88/Debug/src/adc.d create mode 100644 fw_dc22_attiny88/Debug/src/adc.o create mode 100644 fw_dc22_attiny88/Debug/src/led.d create mode 100644 fw_dc22_attiny88/Debug/src/led.o create mode 100644 fw_dc22_attiny88/Debug/src/main.d create mode 100644 fw_dc22_attiny88/Debug/src/main.o create mode 100644 fw_dc22_attiny88/Debug/wp_dc22_attiny88.eep rename {fw_attiny88/bin => fw_dc22_attiny88/Debug}/wp_dc22_attiny88.elf (100%) rename {fw_attiny88/bin => fw_dc22_attiny88/Debug}/wp_dc22_attiny88.hex (100%) create mode 100644 fw_dc22_attiny88/Debug/wp_dc22_attiny88.lss create mode 100644 fw_dc22_attiny88/Debug/wp_dc22_attiny88.map create mode 100644 fw_dc22_attiny88/Debug/wp_dc22_attiny88.srec create mode 100644 fw_dc22_attiny88/Release/Makefile create mode 100644 fw_dc22_attiny88/Release/makedep.mk create mode 100644 fw_dc22_attiny88/Release/src/adc.d create mode 100644 fw_dc22_attiny88/Release/src/adc.o create mode 100644 fw_dc22_attiny88/Release/src/led.d create mode 100644 fw_dc22_attiny88/Release/src/led.o create mode 100644 fw_dc22_attiny88/Release/src/main.d create mode 100644 fw_dc22_attiny88/Release/src/main.o create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.eep create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.elf create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.hex create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.lss create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.map create mode 100644 fw_dc22_attiny88/Release/wp_dc22_attiny88.srec create mode 100644 fw_dc22_attiny88/bin/wp_dc22_attiny88.elf create mode 100644 fw_dc22_attiny88/bin/wp_dc22_attiny88.hex rename {fw_attiny88 => fw_dc22_attiny88}/src/adc.c (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/adc.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/config.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/i2c.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/i2c_interrupt.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/led.c (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/led.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/main.c (100%) rename {fw_attiny88 => fw_dc22_attiny88}/src/timer.h (100%) rename {fw_attiny88 => fw_dc22_attiny88}/wp_dc22_attiny88.atsln (100%) rename {fw_attiny88 => fw_dc22_attiny88}/wp_dc22_attiny88.componentinfo.xml (100%) rename {fw_attiny88 => fw_dc22_attiny88}/wp_dc22_attiny88.cproj (100%) diff --git a/fw_dc22_attiny88/Debug/Makefile b/fw_dc22_attiny88/Debug/Makefile new file mode 100644 index 0000000..45071f7 --- /dev/null +++ b/fw_dc22_attiny88/Debug/Makefile @@ -0,0 +1,152 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := \ +../src + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/adc.c \ +../src/led.c \ +../src/main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +src/adc.o \ +src/led.o \ +src/main.o + +OBJS_AS_ARGS += \ +src/adc.o \ +src/led.o \ +src/main.o + +C_DEPS += \ +src/adc.d \ +src/led.d \ +src/main.d + +C_DEPS_AS_ARGS += \ +src/adc.d \ +src/led.d \ +src/main.d + +OUTPUT_FILE_PATH +=wp_dc22_attiny88.elf + +OUTPUT_FILE_PATH_AS_ARGS +=wp_dc22_attiny88.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler +src/adc.o: ../src/adc.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -finline-functions -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -Wextra -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +src/led.o: ../src/led.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -finline-functions -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -Wextra -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +src/main.o: ../src/main.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -finline-functions -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -Wextra -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="wp_dc22_attiny88.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "wp_dc22_attiny88.elf" "wp_dc22_attiny88.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "wp_dc22_attiny88.elf" "wp_dc22_attiny88.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "wp_dc22_attiny88.elf" > "wp_dc22_attiny88.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "wp_dc22_attiny88.elf" "wp_dc22_attiny88.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "wp_dc22_attiny88.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "wp_dc22_attiny88.elf" "wp_dc22_attiny88.a" "wp_dc22_attiny88.hex" "wp_dc22_attiny88.lss" "wp_dc22_attiny88.eep" "wp_dc22_attiny88.map" "wp_dc22_attiny88.srec" "wp_dc22_attiny88.usersignatures" + \ No newline at end of file diff --git a/fw_dc22_attiny88/Debug/makedep.mk b/fw_dc22_attiny88/Debug/makedep.mk new file mode 100644 index 0000000..089e3be --- /dev/null +++ b/fw_dc22_attiny88/Debug/makedep.mk @@ -0,0 +1,10 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +src\adc.c + +src\led.c + +src\main.c + diff --git a/fw_dc22_attiny88/Debug/src/adc.d b/fw_dc22_attiny88/Debug/src/adc.d new file mode 100644 index 0000000..c7b1dde --- /dev/null +++ b/fw_dc22_attiny88/Debug/src/adc.d @@ -0,0 +1,41 @@ +src/adc.d src/adc.o: ../src/adc.c ../src/adc.h ../src/config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h + +../src/adc.h: + +../src/config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: diff --git a/fw_dc22_attiny88/Debug/src/adc.o b/fw_dc22_attiny88/Debug/src/adc.o new file mode 100644 index 0000000000000000000000000000000000000000..7660c94f801da6ae98d454d07b987a0e47eb0d1f GIT binary patch literal 7108 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 literal 0 HcmV?d00001 diff --git a/fw_dc22_attiny88/Debug/src/led.d b/fw_dc22_attiny88/Debug/src/led.d new file mode 100644 index 0000000..cfed90d --- /dev/null +++ b/fw_dc22_attiny88/Debug/src/led.d @@ -0,0 +1,52 @@ +src/led.d src/led.o: ../src/led.c ../src/led.h ../src/config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + ../src/adc.h ../src/timer.h + +../src/led.h: + +../src/config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +../src/adc.h: + +../src/timer.h: diff --git a/fw_dc22_attiny88/Debug/src/led.o b/fw_dc22_attiny88/Debug/src/led.o new file mode 100644 index 0000000000000000000000000000000000000000..5c64ecd8593cd0b6545fab38b0a27e7932f39d36 GIT binary patch literal 9908 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 literal 0 HcmV?d00001 diff --git a/fw_dc22_attiny88/Debug/src/main.d b/fw_dc22_attiny88/Debug/src/main.d new file mode 100644 index 0000000..4b23a97 --- /dev/null +++ b/fw_dc22_attiny88/Debug/src/main.d @@ -0,0 +1,72 @@ +src/main.d src/main.o: ../src/main.c ../src/config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sleep.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + ../src/i2c.h ../src/timer.h ../src/led.h ../src/adc.h \ + ../src/i2c_interrupt.h + +../src/config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sleep.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +../src/i2c.h: + +../src/timer.h: + +../src/led.h: + +../src/adc.h: + +../src/i2c_interrupt.h: diff --git a/fw_dc22_attiny88/Debug/src/main.o b/fw_dc22_attiny88/Debug/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..bea7f4695062b5f5744e750d99f75c9464e63469 GIT binary patch literal 20416 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 literal 0 HcmV?d00001 diff --git a/fw_dc22_attiny88/Debug/wp_dc22_attiny88.eep b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/fw_attiny88/bin/wp_dc22_attiny88.elf b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.elf similarity index 100% rename from fw_attiny88/bin/wp_dc22_attiny88.elf rename to fw_dc22_attiny88/Debug/wp_dc22_attiny88.elf diff --git a/fw_attiny88/bin/wp_dc22_attiny88.hex b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.hex similarity index 100% rename from fw_attiny88/bin/wp_dc22_attiny88.hex rename to fw_dc22_attiny88/Debug/wp_dc22_attiny88.hex diff --git a/fw_dc22_attiny88/Debug/wp_dc22_attiny88.lss b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.lss new file mode 100644 index 0000000..5178e91 --- /dev/null +++ b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.lss @@ -0,0 +1,1838 @@ + +wp_dc22_attiny88.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000004 00800100 000008a8 0000093c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 000008a8 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000030 00800104 00800104 00000940 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000940 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000970 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000178 00000000 00000000 000009b0 2**3 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 00001493 00000000 00000000 00000b28 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00000b12 00000000 00000000 00001fbb 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000e6a 00000000 00000000 00002acd 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 00000230 00000000 00000000 00003938 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 000006f2 00000000 00000000 00003b68 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000004a9 00000000 00000000 0000425a 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 000000a8 00000000 00000000 00004703 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 2d c0 rjmp .+90 ; 0x5c <__ctors_end> + 2: 47 c0 rjmp .+142 ; 0x92 <__bad_interrupt> + 4: 46 c0 rjmp .+140 ; 0x92 <__bad_interrupt> + 6: 45 c0 rjmp .+138 ; 0x92 <__bad_interrupt> + 8: 44 c0 rjmp .+136 ; 0x92 <__bad_interrupt> + a: 43 c0 rjmp .+134 ; 0x92 <__bad_interrupt> + c: 42 c0 rjmp .+132 ; 0x92 <__bad_interrupt> + e: 41 c0 rjmp .+130 ; 0x92 <__bad_interrupt> + 10: 40 c0 rjmp .+128 ; 0x92 <__bad_interrupt> + 12: 3f c0 rjmp .+126 ; 0x92 <__bad_interrupt> + 14: 3e c0 rjmp .+124 ; 0x92 <__bad_interrupt> + 16: 3d c0 rjmp .+122 ; 0x92 <__bad_interrupt> + 18: aa c3 rjmp .+1876 ; 0x76e <__vector_12> + 1a: 3b c0 rjmp .+118 ; 0x92 <__bad_interrupt> + 1c: 3a c0 rjmp .+116 ; 0x92 <__bad_interrupt> + 1e: 39 c0 rjmp .+114 ; 0x92 <__bad_interrupt> + 20: 8b c0 rjmp .+278 ; 0x138 <__vector_16> + 22: 37 c0 rjmp .+110 ; 0x92 <__bad_interrupt> + 24: 36 c0 rjmp .+108 ; 0x92 <__bad_interrupt> + 26: 34 c3 rjmp .+1640 ; 0x690 <__vector_19> + 28: bd c1 rjmp .+890 ; 0x3a4 + 2a: c0 c1 rjmp .+896 ; 0x3ac + 2c: ca c1 rjmp .+916 ; 0x3c2 + 2e: db c1 rjmp .+950 ; 0x3e6 + 30: f8 c1 rjmp .+1008 ; 0x422 <__LOCK_REGION_LENGTH__+0x22> + 32: 16 c2 rjmp .+1068 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 34: 28 c2 rjmp .+1104 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 36: 27 c2 rjmp .+1102 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 38: f9 c1 rjmp .+1010 ; 0x42c <__LOCK_REGION_LENGTH__+0x2c> + 3a: 03 c2 rjmp .+1030 ; 0x442 <__LOCK_REGION_LENGTH__+0x42> + 3c: 24 c2 rjmp .+1096 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 3e: 23 c2 rjmp .+1094 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 40: 22 c2 rjmp .+1092 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 42: 21 c2 rjmp .+1090 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 44: 20 c2 rjmp .+1088 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 46: 09 c2 rjmp .+1042 ; 0x45a <__LOCK_REGION_LENGTH__+0x5a> + 48: 0b c2 rjmp .+1046 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 4a: 0a c2 rjmp .+1044 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 4c: 1c c2 rjmp .+1080 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 4e: 1b c2 rjmp .+1078 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 50: 1a c2 rjmp .+1076 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 52: 19 c2 rjmp .+1074 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 54: 18 c2 rjmp .+1072 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 56: 17 c2 rjmp .+1070 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 58: 16 c2 rjmp .+1068 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 5a: 07 c2 rjmp .+1038 ; 0x46a <__LOCK_REGION_LENGTH__+0x6a> + +0000005c <__ctors_end>: + 5c: 11 24 eor r1, r1 + 5e: 1f be out 0x3f, r1 ; 63 + 60: cf ef ldi r28, 0xFF ; 255 + 62: d2 e0 ldi r29, 0x02 ; 2 + 64: de bf out 0x3e, r29 ; 62 + 66: cd bf out 0x3d, r28 ; 61 + +00000068 <__do_copy_data>: + 68: 11 e0 ldi r17, 0x01 ; 1 + 6a: a0 e0 ldi r26, 0x00 ; 0 + 6c: b1 e0 ldi r27, 0x01 ; 1 + 6e: e8 ea ldi r30, 0xA8 ; 168 + 70: f8 e0 ldi r31, 0x08 ; 8 + 72: 02 c0 rjmp .+4 ; 0x78 <__do_copy_data+0x10> + 74: 05 90 lpm r0, Z+ + 76: 0d 92 st X+, r0 + 78: a4 30 cpi r26, 0x04 ; 4 + 7a: b1 07 cpc r27, r17 + 7c: d9 f7 brne .-10 ; 0x74 <__do_copy_data+0xc> + +0000007e <__do_clear_bss>: + 7e: 21 e0 ldi r18, 0x01 ; 1 + 80: a4 e0 ldi r26, 0x04 ; 4 + 82: b1 e0 ldi r27, 0x01 ; 1 + 84: 01 c0 rjmp .+2 ; 0x88 <.do_clear_bss_start> + +00000086 <.do_clear_bss_loop>: + 86: 1d 92 st X+, r1 + +00000088 <.do_clear_bss_start>: + 88: a4 33 cpi r26, 0x34 ; 52 + 8a: b2 07 cpc r27, r18 + 8c: e1 f7 brne .-8 ; 0x86 <.do_clear_bss_loop> + 8e: 6d d2 rcall .+1242 ; 0x56a
+ 90: 09 c4 rjmp .+2066 ; 0x8a4 <_exit> + +00000092 <__bad_interrupt>: + 92: b6 cf rjmp .-148 ; 0x0 <__vectors> + +00000094 : + +/* functions */ +void adc_init() +{ + // make sure ADC power is enabled + PRR &= ~_BV(PRADC); + 94: e4 e6 ldi r30, 0x64 ; 100 + 96: f0 e0 ldi r31, 0x00 ; 0 + 98: 80 81 ld r24, Z + 9a: 8e 7f andi r24, 0xFE ; 254 + 9c: 80 83 st Z, r24 + + // clear all settings; set the ADC prescaler bits to get 500KHz ADC clock (SYSCLK/16), disable auto trigger + ADCSRA = _BV(ADPS2) | _BV(ADPS0) | ~(_BV(ADATE)); + 9e: ea e7 ldi r30, 0x7A ; 122 + a0: f0 e0 ldi r31, 0x00 ; 0 + a2: 8f ed ldi r24, 0xDF ; 223 + a4: 80 83 st Z, r24 + + // set to right-aligned mode + ADMUX &= ~(_BV(ADLAR)); + a6: ac e7 ldi r26, 0x7C ; 124 + a8: b0 e0 ldi r27, 0x00 ; 0 + aa: 8c 91 ld r24, X + ac: 8f 7d andi r24, 0xDF ; 223 + ae: 8c 93 st X, r24 + + // enable the ADC, enable interrupts + ADCSRA |= _BV(ADEN) | _BV(ADIE); + b0: 80 81 ld r24, Z + b2: 88 68 ori r24, 0x88 ; 136 + b4: 80 83 st Z, r24 + b6: 08 95 ret + +000000b8 : +} + +void adc_channel(uint8_t channel, uint8_t vref) +{ + b8: 28 2f mov r18, r24 + // can we set channel? + if (channel < ADC_CHAN_INVALID) { + ba: 80 31 cpi r24, 0x10 ; 16 + bc: 88 f4 brcc .+34 ; 0xe0 + // set MUX[3:0] to the specified channel + ADMUX = (ADMUX & 0xf0) | (channel & 0x0f); + be: 90 91 7c 00 lds r25, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + c2: 90 7f andi r25, 0xF0 ; 240 + c4: 98 2b or r25, r24 + c6: 90 93 7c 00 sts 0x007C, r25 ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + // also, if this is an actual pin, disable digital input on this pin + DIDR0 = (channel < 8) ? _BV(channel) : 0; + ca: 88 30 cpi r24, 0x08 ; 8 + cc: 30 f4 brcc .+12 ; 0xda + ce: 81 e0 ldi r24, 0x01 ; 1 + d0: 01 c0 rjmp .+2 ; 0xd4 + d2: 88 0f add r24, r24 + d4: 2a 95 dec r18 + d6: ea f7 brpl .-6 ; 0xd2 + d8: 01 c0 rjmp .+2 ; 0xdc + da: 80 e0 ldi r24, 0x00 ; 0 + dc: 80 93 7e 00 sts 0x007E, r24 ; 0x80007e <__EEPROM_REGION_LENGTH__+0x7f007e> + } + + // set the voltage source + if (vref == ADC_REF_AVCC) { + e0: 61 30 cpi r22, 0x01 ; 1 + e2: 21 f4 brne .+8 ; 0xec + ADMUX |= (_BV(REFS0)); + e4: 80 91 7c 00 lds r24, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + e8: 80 64 ori r24, 0x40 ; 64 + ea: 05 c0 rjmp .+10 ; 0xf6 + } else if (vref == ADC_REF_BANDGAP) { + ec: 62 30 cpi r22, 0x02 ; 2 + ee: 29 f4 brne .+10 ; 0xfa + ADMUX &= ~(_BV(REFS0)); + f0: 80 91 7c 00 lds r24, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + f4: 8f 7b andi r24, 0xBF ; 191 + f6: 80 93 7c 00 sts 0x007C, r24 ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + fa: 08 95 ret + +000000fc : +} + +uint8_t adc_start(uint8_t reread, uint8_t enable_averaging) +{ + // is a conversion already running? + if (ADCSRA & _BV(ADSC)) { + fc: 90 91 7a 00 lds r25, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 100: 29 2f mov r18, r25 + 102: 20 74 andi r18, 0x40 ; 64 + 104: 96 fd sbrc r25, 6 + 106: 15 c0 rjmp .+42 ; 0x132 + return 1; + } + + // set up amount of times to re-read, and mark the amount of values to average + adc_reread = reread; + 108: 80 93 0c 01 sts 0x010C, r24 ; 0x80010c + adc_averages = enable_averaging ? reread : 0; + 10c: 66 23 and r22, r22 + 10e: 11 f0 breq .+4 ; 0x114 + 110: 98 2f mov r25, r24 + 112: 01 c0 rjmp .+2 ; 0x116 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: 90 93 04 01 sts 0x0104, r25 ; 0x800104 <__data_end> + + // start conversion + adc_busy = 0x80 | (ADMUX & 0x0f); + 11a: 90 91 7c 00 lds r25, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + 11e: 9f 70 andi r25, 0x0F ; 15 + 120: 90 68 ori r25, 0x80 ; 128 + 122: 90 93 1f 01 sts 0x011F, r25 ; 0x80011f + ADCSRA |= _BV(ADSC); + 126: 90 91 7a 00 lds r25, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 12a: 90 64 ori r25, 0x40 ; 64 + 12c: 90 93 7a 00 sts 0x007A, r25 ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + return 0; + 130: 01 c0 rjmp .+2 ; 0x134 + +uint8_t adc_start(uint8_t reread, uint8_t enable_averaging) +{ + // is a conversion already running? + if (ADCSRA & _BV(ADSC)) { + return 1; + 132: 21 e0 ldi r18, 0x01 ; 1 + + // start conversion + adc_busy = 0x80 | (ADMUX & 0x0f); + ADCSRA |= _BV(ADSC); + return 0; +} + 134: 82 2f mov r24, r18 + 136: 08 95 ret + +00000138 <__vector_16>: + + +/* ISR */ +ISR(ADC_vect) +{ + 138: 1f 92 push r1 + 13a: 0f 92 push r0 + 13c: 0f b6 in r0, 0x3f ; 63 + 13e: 0f 92 push r0 + 140: 11 24 eor r1, r1 + 142: 2f 93 push r18 + 144: 4f 93 push r20 + 146: 5f 93 push r21 + 148: 8f 93 push r24 + 14a: 9f 93 push r25 + 14c: af 93 push r26 + 14e: bf 93 push r27 + 150: ef 93 push r30 + 152: ff 93 push r31 + uint8_t channel; + + channel = ADMUX & 0x0f; + 154: e0 91 7c 00 lds r30, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + 158: ef 70 andi r30, 0x0F ; 15 + + // mark our result in the average table + if (adc_averages) { + 15a: 20 91 04 01 lds r18, 0x0104 ; 0x800104 <__data_end> + 15e: 22 23 and r18, r18 + 160: d1 f0 breq .+52 ; 0x196 <__vector_16+0x5e> + // except for the first read + if (adc_averages != adc_reread) { + 162: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 166: 28 17 cp r18, r24 + 168: b1 f0 breq .+44 ; 0x196 <__vector_16+0x5e> + // we do successive averaging; it's faster, smaller code, less RAM, and good enough for our purpose + // update our feedback + if (channel <= ADC_MAX_FEEDBACK) { + 16a: e9 30 cpi r30, 0x09 ; 9 + 16c: a0 f4 brcc .+40 ; 0x196 <__vector_16+0x5e> + adc_result[channel] = (adc_result[channel] + ADC) >> 1; + 16e: ae 2f mov r26, r30 + 170: b0 e0 ldi r27, 0x00 ; 0 + 172: aa 0f add r26, r26 + 174: bb 1f adc r27, r27 + 176: a3 5f subi r26, 0xF3 ; 243 + 178: be 4f sbci r27, 0xFE ; 254 + 17a: 4d 91 ld r20, X+ + 17c: 5c 91 ld r21, X + 17e: 11 97 sbiw r26, 0x01 ; 1 + 180: 80 91 78 00 lds r24, 0x0078 ; 0x800078 <__EEPROM_REGION_LENGTH__+0x7f0078> + 184: 90 91 79 00 lds r25, 0x0079 ; 0x800079 <__EEPROM_REGION_LENGTH__+0x7f0079> + 188: 84 0f add r24, r20 + 18a: 95 1f adc r25, r21 + 18c: 96 95 lsr r25 + 18e: 87 95 ror r24 + 190: 11 96 adiw r26, 0x01 ; 1 + 192: 9c 93 st X, r25 + 194: 8e 93 st -X, r24 + } + } + } + + if (adc_reread) { + 196: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 19a: 88 23 and r24, r24 + 19c: 59 f0 breq .+22 ; 0x1b4 <__vector_16+0x7c> + adc_reread--; + 19e: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 1a2: 81 50 subi r24, 0x01 ; 1 + 1a4: 80 93 0c 01 sts 0x010C, r24 ; 0x80010c + // start another conversion + ADCSRA |= _BV(ADSC); + 1a8: 80 91 7a 00 lds r24, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 1ac: 80 64 ori r24, 0x40 ; 64 + 1ae: 80 93 7a 00 sts 0x007A, r24 ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 1b2: 11 c0 rjmp .+34 ; 0x1d6 <__vector_16+0x9e> + } else { + // determine if we need to update feedback + if (!adc_averages && channel <= ADC_MAX_FEEDBACK) { + 1b4: 21 11 cpse r18, r1 + 1b6: 0d c0 rjmp .+26 ; 0x1d2 <__vector_16+0x9a> + 1b8: e9 30 cpi r30, 0x09 ; 9 + 1ba: 58 f4 brcc .+22 ; 0x1d2 <__vector_16+0x9a> + // not averaging, so just store last result + adc_result[channel] = ADC; + 1bc: f0 e0 ldi r31, 0x00 ; 0 + 1be: 80 91 78 00 lds r24, 0x0078 ; 0x800078 <__EEPROM_REGION_LENGTH__+0x7f0078> + 1c2: 90 91 79 00 lds r25, 0x0079 ; 0x800079 <__EEPROM_REGION_LENGTH__+0x7f0079> + 1c6: ee 0f add r30, r30 + 1c8: ff 1f adc r31, r31 + 1ca: e3 5f subi r30, 0xF3 ; 243 + 1cc: fe 4f sbci r31, 0xFE ; 254 + 1ce: 91 83 std Z+1, r25 ; 0x01 + 1d0: 80 83 st Z, r24 + } + + adc_busy = 0; + 1d2: 10 92 1f 01 sts 0x011F, r1 ; 0x80011f + } + 1d6: ff 91 pop r31 + 1d8: ef 91 pop r30 + 1da: bf 91 pop r27 + 1dc: af 91 pop r26 + 1de: 9f 91 pop r25 + 1e0: 8f 91 pop r24 + 1e2: 5f 91 pop r21 + 1e4: 4f 91 pop r20 + 1e6: 2f 91 pop r18 + 1e8: 0f 90 pop r0 + 1ea: 0f be out 0x3f, r0 ; 63 + 1ec: 0f 90 pop r0 + 1ee: 1f 90 pop r1 + 1f0: 18 95 reti + +000001f2 : +{ + // PortD[4:7] (left) and PortC[0:3] (right) are LEDs + // Also, Right LEDs are capable of ADC input on ALL pins (ADC[0:3]) + + // set all pins as outputs + DDRD |= 0xf0; + 1f2: 8a b1 in r24, 0x0a ; 10 + 1f4: 80 6f ori r24, 0xF0 ; 240 + 1f6: 8a b9 out 0x0a, r24 ; 10 + DDRC |= 0x0f; + 1f8: 87 b1 in r24, 0x07 ; 7 + 1fa: 8f 60 ori r24, 0x0F ; 15 + 1fc: 87 b9 out 0x07, r24 ; 7 + +#ifdef LED_COMMON_ANODE + // com-anode: pin is high to disable + PORTD |= 0xf0; + 1fe: 8b b1 in r24, 0x0b ; 11 + 200: 80 6f ori r24, 0xF0 ; 240 + 202: 8b b9 out 0x0b, r24 ; 11 + PORTC |= 0x0f; + 204: 88 b1 in r24, 0x08 ; 8 + 206: 8f 60 ori r24, 0x0F ; 15 + 208: 88 b9 out 0x08, r24 ; 8 + 20a: 08 95 ret + +0000020c : +} + + // sets the appropriate pins and PWM values for the LED index specified in rgbled_idx. + // note: this index is updated externally, and not by this function. +void rgbled_update() +{ + 20c: cf 93 push r28 + 20e: df 93 push r29 + // clear all selected LED pins + // we have to clear the select line then set it because we can't fully disable the PWM for some reason +#ifdef LED_COMMON_ANODE + // make sure all pins are high + PORTD |= 0xf0; + 210: 8b b1 in r24, 0x0b ; 11 + 212: 80 6f ori r24, 0xF0 ; 240 + 214: 8b b9 out 0x0b, r24 ; 11 + PORTC |= 0x0f; + 216: 88 b1 in r24, 0x08 ; 8 + 218: 8f 60 ori r24, 0x0F ; 15 + 21a: 88 b9 out 0x08, r24 ; 8 + PORTD &= 0x0f; + PORTC &= 0xf0; +#endif + + // set pwm OCx registers to max + timer1_set_oca(TIMER1_COMPARE); + 21c: c8 e8 ldi r28, 0x88 ; 136 + 21e: d0 e0 ldi r29, 0x00 ; 0 + 220: 8e ef ldi r24, 0xFE ; 254 + 222: 88 83 st Y, r24 + timer1_set_ocb(TIMER1_COMPARE); + 224: aa e8 ldi r26, 0x8A ; 138 + 226: b0 e0 ldi r27, 0x00 ; 0 + 228: 8c 93 st X, r24 + DDRB |= (_BV(DDB2) | _BV(DDB1)); +} + +inline void timer1_set(uint16_t set) +{ + TCNT1 = set; + 22a: 8a ef ldi r24, 0xFA ; 250 + 22c: 90 e0 ldi r25, 0x00 ; 0 + 22e: 90 93 85 00 sts 0x0085, r25 ; 0x800085 <__EEPROM_REGION_LENGTH__+0x7f0085> + 232: 80 93 84 00 sts 0x0084, r24 ; 0x800084 <__EEPROM_REGION_LENGTH__+0x7f0084> + + // now we set the desired LED + // turn on one LED in each group +#ifdef LED_COMMON_ANODE + // make sure active pin is output low and others are high + PORTD &= ~(_BV(rgbled_idx + 4)); + 236: 3b b1 in r19, 0x0b ; 11 + 238: 24 e0 ldi r18, 0x04 ; 4 + 23a: 2d 0d add r18, r13 + 23c: 81 e0 ldi r24, 0x01 ; 1 + 23e: 90 e0 ldi r25, 0x00 ; 0 + 240: ac 01 movw r20, r24 + 242: 01 c0 rjmp .+2 ; 0x246 + 244: 44 0f add r20, r20 + 246: 2a 95 dec r18 + 248: ea f7 brpl .-6 ; 0x244 + 24a: 24 2f mov r18, r20 + 24c: 20 95 com r18 + 24e: 23 23 and r18, r19 + 250: 2b b9 out 0x0b, r18 ; 11 + PORTC &= ~(_BV(rgbled_idx)); + 252: 28 b1 in r18, 0x08 ; 8 + 254: 0d 2c mov r0, r13 + 256: 01 c0 rjmp .+2 ; 0x25a + 258: 88 0f add r24, r24 + 25a: 0a 94 dec r0 + 25c: ea f7 brpl .-6 ; 0x258 + 25e: 80 95 com r24 + 260: 82 23 and r24, r18 + 262: 88 b9 out 0x08, r24 ; 8 + PORTD |= _BV(rgbled_idx) << 4; + PORTC |= _BV(rgbled_idx); +#endif + + // load new pwm OCx values for this LED + timer1_set_oca(rgbled_pwm_lf[rgbled_idx]); + 264: ed 2d mov r30, r13 + 266: f0 e0 ldi r31, 0x00 ; 0 + 268: eb 5d subi r30, 0xDB ; 219 + 26a: fe 4f sbci r31, 0xFE ; 254 + 26c: 8b ef ldi r24, 0xFB ; 251 + 26e: 90 81 ld r25, Z + 270: 28 2f mov r18, r24 + 272: 29 1b sub r18, r25 + 274: 28 83 st Y, r18 + timer1_set_ocb(rgbled_pwm_rt[rgbled_idx]); + 276: ed 2d mov r30, r13 + 278: f0 e0 ldi r31, 0x00 ; 0 + 27a: ef 5d subi r30, 0xDF ; 223 + 27c: fe 4f sbci r31, 0xFE ; 254 + 27e: 90 81 ld r25, Z + 280: 89 1b sub r24, r25 + 282: 8c 93 st X, r24 +} + 284: df 91 pop r29 + 286: cf 91 pop r28 + 288: 08 95 ret + +0000028a : + // configures the specified LED on the ADC. + // this function assumes common anode. +void rgbled_sensor_init(uint8_t led) +{ + // set the left eye high (fixes color flash/tearing) + PORTD |= 0xf0; + 28a: 9b b1 in r25, 0x0b ; 11 + 28c: 90 6f ori r25, 0xF0 ; 240 + 28e: 9b b9 out 0x0b, r25 ; 11 + + // disable both eye's PWM (required for right eye, fixes color flash/tearing in left eye) + TCCR1A &= ~(_BV(COM1A1) | _BV(COM1A0) | _BV(COM1B1) | _BV(COM1B0)); + 290: e0 e8 ldi r30, 0x80 ; 128 + 292: f0 e0 ldi r31, 0x00 ; 0 + 294: 90 81 ld r25, Z + 296: 9f 70 andi r25, 0x0F ; 15 + 298: 90 83 st Z, r25 + + // ground the LED + DDRC &= 0xf0; // set all LEDs cathode as inputs + 29a: 97 b1 in r25, 0x07 ; 7 + 29c: 90 7f andi r25, 0xF0 ; 240 + 29e: 97 b9 out 0x07, r25 ; 7 + MCUCR |= (_BV(PUD)); // globally disable pullups + 2a0: 95 b7 in r25, 0x35 ; 53 + 2a2: 90 61 ori r25, 0x10 ; 16 + 2a4: 95 bf out 0x35, r25 ; 53 + DDRC |= (_BV(led)); // set our LED as an output + 2a6: 47 b1 in r20, 0x07 ; 7 + 2a8: 21 e0 ldi r18, 0x01 ; 1 + 2aa: 30 e0 ldi r19, 0x00 ; 0 + 2ac: b9 01 movw r22, r18 + 2ae: 02 c0 rjmp .+4 ; 0x2b4 + 2b0: 66 0f add r22, r22 + 2b2: 77 1f adc r23, r23 + 2b4: 8a 95 dec r24 + 2b6: e2 f7 brpl .-8 ; 0x2b0 + 2b8: cb 01 movw r24, r22 + 2ba: 46 2b or r20, r22 + 2bc: 47 b9 out 0x07, r20 ; 7 + PORTC = (PORTC & 0xf0); // set all LEDs cathode low + 2be: 98 b1 in r25, 0x08 ; 8 + 2c0: 90 7f andi r25, 0xF0 ; 240 + 2c2: 98 b9 out 0x08, r25 ; 8 + PORTB |= (_BV(PORTB2)); // set anode high + 2c4: 2a 9a sbi 0x05, 2 ; 5 + + // reverse LED bias + PORTC |= (_BV(led)); // set cathode high + 2c6: 98 b1 in r25, 0x08 ; 8 + 2c8: 98 2b or r25, r24 + 2ca: 98 b9 out 0x08, r25 ; 8 + PORTB &= ~(_BV(PORTB2)); // set anode low + 2cc: 2a 98 cbi 0x05, 2 ; 5 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 2ce: 78 e0 ldi r23, 0x08 ; 8 + 2d0: 7a 95 dec r23 + 2d2: f1 f7 brne .-4 ; 0x2d0 + _delay_us(3); // allow it to charge fully + + // set LED as input + DDRC &= ~(_BV(led)); // set led cathode as input + 2d4: 97 b1 in r25, 0x07 ; 7 + 2d6: 80 95 com r24 + 2d8: 98 23 and r25, r24 + 2da: 97 b9 out 0x07, r25 ; 7 + PORTC &= ~(_BV(led)); // set led cathode pullup off + 2dc: 98 b1 in r25, 0x08 ; 8 + 2de: 89 23 and r24, r25 + 2e0: 88 b9 out 0x08, r24 ; 8 + MCUCR &= ~(_BV(PUD)); // re-enable global pullups + 2e2: 85 b7 in r24, 0x35 ; 53 + 2e4: 8f 7e andi r24, 0xEF ; 239 + 2e6: 85 bf out 0x35, r24 ; 53 + 2e8: 08 95 ret + +000002ea : +} + + // starts ADC to read the value of charge remaining on the LED +void rgbled_sensor_sensitivity(uint8_t ledidx, uint8_t sensitivity) +{ + if (ledidx <= 0x03) { + 2ea: 84 30 cpi r24, 0x04 ; 4 + 2ec: 38 f4 brcc .+14 ; 0x2fc + if (sensitivity) { + 2ee: 66 23 and r22, r22 + 2f0: 29 f0 breq .+10 ; 0x2fc + rgbled_sensitivity[ledidx] = sensitivity; + 2f2: e8 2f mov r30, r24 + 2f4: f0 e0 ldi r31, 0x00 ; 0 + 2f6: e0 50 subi r30, 0x00 ; 0 + 2f8: ff 4f sbci r31, 0xFF ; 255 + 2fa: 60 83 st Z, r22 + 2fc: 08 95 ret + +000002fe : + } +} + +void rgbled_sensor_read_idx(uint8_t ledidx) +{ + rgbled_read_sel = ledidx & 0x03; + 2fe: 83 70 andi r24, 0x03 ; 3 + 300: 80 93 05 01 sts 0x0105, r24 ; 0x800105 + 304: 08 95 ret + +00000306 : + +void rgbled_sensor_read() +{ + uint8_t sens; + + sens = rgbled_sensitivity[rgbled_read_sel]; + 306: 80 91 05 01 lds r24, 0x0105 ; 0x800105 + 30a: e8 2f mov r30, r24 + 30c: f0 e0 ldi r31, 0x00 ; 0 + 30e: e0 50 subi r30, 0x00 ; 0 + 310: ff 4f sbci r31, 0xFF ; 255 + 312: 90 81 ld r25, Z + if (!sens) sens = 1; + 314: 91 11 cpse r25, r1 + 316: 01 c0 rjmp .+2 ; 0x31a + 318: 91 e0 ldi r25, 0x01 ; 1 + + if (adc_read_step == 0) { + 31a: 2e 2d mov r18, r14 + 31c: e1 10 cpse r14, r1 + 31e: 03 c0 rjmp .+6 ; 0x326 + // adc_init(); + // clear ADC bias by reading ground + adc_channel(ADC_CHAN_GND, ADC_REF_AVCC); + 320: 61 e0 ldi r22, 0x01 ; 1 + 322: 8f e0 ldi r24, 0x0F ; 15 + 324: 12 c0 rjmp .+36 ; 0x34a + } else if (adc_read_step == 1) { + 326: 21 30 cpi r18, 0x01 ; 1 + 328: 19 f4 brne .+6 ; 0x330 + adc_start(0, 0); + 32a: 60 e0 ldi r22, 0x00 ; 0 + 32c: 80 e0 ldi r24, 0x00 ; 0 + 32e: 18 c0 rjmp .+48 ; 0x360 + } else if (adc_read_step == 2) { + 330: 22 30 cpi r18, 0x02 ; 2 + 332: 61 f4 brne .+24 ; 0x34c + // if the ADC is done, charge up LED for reading + if (adc_busy) { + 334: 90 91 1f 01 lds r25, 0x011F ; 0x80011f + 338: 99 23 and r25, r25 + 33a: 19 f0 breq .+6 ; 0x342 + adc_read_step--; + 33c: ee 24 eor r14, r14 + 33e: e3 94 inc r14 + 340: 08 95 ret + } else { + rgbled_sensor_init(rgbled_read_sel); + 342: a3 df rcall .-186 ; 0x28a + adc_channel(rgbled_read_sel, ADC_REF_NO_SET); + 344: 6f ef ldi r22, 0xFF ; 255 + 346: 80 91 05 01 lds r24, 0x0105 ; 0x800105 + 34a: b6 ce rjmp .-660 ; 0xb8 + } + } else if (adc_read_step == (2 + sens)) { + 34c: 4e 2d mov r20, r14 + 34e: 50 e0 ldi r21, 0x00 ; 0 + 350: 89 2f mov r24, r25 + 352: 90 e0 ldi r25, 0x00 ; 0 + 354: 02 96 adiw r24, 0x02 ; 2 + 356: 48 17 cp r20, r24 + 358: 59 07 cpc r21, r25 + 35a: 19 f4 brne .+6 ; 0x362 + // if vref has changed, it should be stable by now; start reading LED value + adc_start(3, 1); + 35c: 61 e0 ldi r22, 0x01 ; 1 + 35e: 83 e0 ldi r24, 0x03 ; 3 + 360: cd ce rjmp .-614 ; 0xfc + } else if (adc_read_step > (2 + sens)) { + 362: 84 17 cp r24, r20 + 364: 95 07 cpc r25, r21 + 366: 94 f4 brge .+36 ; 0x38c + adc_read_step--; + 368: 21 50 subi r18, 0x01 ; 1 + 36a: e2 2e mov r14, r18 + if (!adc_busy) { + 36c: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 370: 81 11 cpse r24, r1 + 372: 0c c0 rjmp .+24 ; 0x38c + // we are done! :) finish up... + adc_channel(ADC_CHAN_GND, ADC_REF_NO_SET); // change ADC to not look at a real pin + 374: 6f ef ldi r22, 0xFF ; 255 + 376: 8f e0 ldi r24, 0x0F ; 15 + 378: 9f de rcall .-706 ; 0xb8 + rgbled_io_init(); // set LED pins up again + 37a: 3b df rcall .-394 ; 0x1f2 +} + +inline void timer1_pwm_reinit() +{ + // enable pwm output on OCx pins + TCCR1A = (_BV(COM1A1)) | (_BV(COM1B1)) | (_BV(WGM11) | ~(_BV(WGM10))); + 37c: 8e ef ldi r24, 0xFE ; 254 + 37e: 80 93 80 00 sts 0x0080, r24 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + + // set OC pins as outputs + DDRB |= (_BV(DDB2) | _BV(DDB1)); + 382: 84 b1 in r24, 0x04 ; 4 + 384: 86 60 ori r24, 0x06 ; 6 + 386: 84 b9 out 0x04, r24 ; 4 + timer1_pwm_reinit(); // and set up PWM again + adc_read_mode = 0; // clear ADC read mode + 388: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 38c: 08 95 ret + +0000038e : + return 0; +} + +static uint8_t pegleg_cmd() +{ + switch (comm_cmd) { + 38e: 8f 2d mov r24, r15 + 390: 4f 2d mov r20, r15 + 392: 50 e0 ldi r21, 0x00 ; 0 + 394: 4a 31 cpi r20, 0x1A ; 26 + 396: 51 05 cpc r21, r1 + 398: 08 f0 brcs .+2 ; 0x39c + 39a: 75 c0 rjmp .+234 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 39c: fa 01 movw r30, r20 + 39e: ec 5e subi r30, 0xEC ; 236 + 3a0: ff 4f sbci r31, 0xFF ; 255 + 3a2: 09 94 ijmp + // no command: we just ACK this as we shouldn't ever get here + case MODE_NONE: { + comm_cmd = 0; + 3a4: f1 2c mov r15, r1 + comm_timeout = 0; + 3a6: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + break; + 3aa: 08 95 ret + } + + // standard commands + case MODE_EXT_CMD: { // used for more commands + if (comm_data_idx >= 1) { + 3ac: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 3b0: 88 23 and r24, r24 + 3b2: 09 f4 brne .+2 ; 0x3b6 + 3b4: 6c c0 rjmp .+216 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + comm_cmd = comm_data[1]; + 3b6: f0 90 30 01 lds r15, 0x0130 ; 0x800130 + // set data index to last (will be reset on next data sent) + // and also reset timeout since this is effectively a new command + comm_data_idx = COMM_DATA_SIZE - 1; + 3ba: 83 e0 ldi r24, 0x03 ; 3 + 3bc: 80 93 33 01 sts 0x0133, r24 ; 0x800133 + 3c0: 50 c0 rjmp .+160 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + } + break; + } + + case MODE_LED_SET_LEVEL: { // sets PWM rate for the 8 PWM LEDs + if (comm_data[0] < 4) { + 3c2: e0 91 2f 01 lds r30, 0x012F ; 0x80012f + 3c6: e4 30 cpi r30, 0x04 ; 4 + 3c8: 20 f4 brcc .+8 ; 0x3d2 + rgbled_pwm_lf[comm_data[0]] = comm_data[1]; + 3ca: f0 e0 ldi r31, 0x00 ; 0 + 3cc: eb 5d subi r30, 0xDB ; 219 + 3ce: fe 4f sbci r31, 0xFE ; 254 + 3d0: 06 c0 rjmp .+12 ; 0x3de + } else if (comm_data[0] < 8) { + 3d2: e8 30 cpi r30, 0x08 ; 8 + 3d4: 08 f0 brcs .+2 ; 0x3d8 + 3d6: 44 c0 rjmp .+136 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + rgbled_pwm_rt[comm_data[0] - 4] = comm_data[1]; + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: e3 5e subi r30, 0xE3 ; 227 + 3dc: fe 4f sbci r31, 0xFE ; 254 + 3de: 80 91 30 01 lds r24, 0x0130 ; 0x800130 + 3e2: 80 83 st Z, r24 + 3e4: 3d c0 rjmp .+122 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + } + + case MODE_TEMPSENSOR_CAL: { + // to use this function, make sure the temperature has been previously read. + // calculates the appropriate offset based on the reported temperature. + if (comm_data_idx >= 1) { + 3e6: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 3ea: 88 23 and r24, r24 + 3ec: 09 f4 brne .+2 ; 0x3f0 + 3ee: 4f c0 rjmp .+158 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + // update the offset + if (adc_result[ADC_CHAN_TEMP]) { + 3f0: 80 91 1d 01 lds r24, 0x011D ; 0x80011d + 3f4: 90 91 1e 01 lds r25, 0x011E ; 0x80011e + 3f8: 89 2b or r24, r25 + 3fa: 09 f4 brne .+2 ; 0x3fe + 3fc: 44 c0 rjmp .+136 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + temp_offset = adc_result[ADC_CHAN_TEMP] - (int8_t)comm_data[1]; + 3fe: 60 91 1d 01 lds r22, 0x011D ; 0x80011d + 402: 70 91 1e 01 lds r23, 0x011E ; 0x80011e + 406: 80 91 30 01 lds r24, 0x0130 ; 0x800130 + 40a: 68 1b sub r22, r24 + 40c: 71 09 sbc r23, r1 + 40e: 87 fd sbrc r24, 7 + 410: 73 95 inc r23 + 412: 70 93 07 01 sts 0x0107, r23 ; 0x800107 + 416: 60 93 06 01 sts 0x0106, r22 ; 0x800106 + // write it to eeprom + eeprom_write_word((uint16_t *)EEPROM_ADDR_TEMPCAL, temp_offset); + 41a: 8e e3 ldi r24, 0x3E ; 62 + 41c: 90 e0 ldi r25, 0x00 ; 0 + 41e: 24 d2 rcall .+1096 ; 0x868 + 420: 1f c0 rjmp .+62 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + } + + case MODE_EEPROM_READ: { + // our data packet is already set; ready for read. + // but if the host keeps writing... + if (comm_data_idx > 1) { + 422: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 426: 82 30 cpi r24, 0x02 ; 2 + 428: d8 f4 brcc .+54 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 42a: 1d c0 rjmp .+58 ; 0x466 <__LOCK_REGION_LENGTH__+0x66> + } + + // immediate commands + case MODE_TEMPSENSOR_READ: { + // attempt another read + if (!adc_read_mode) { + 42c: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 430: 81 11 cpse r24, r1 + 432: 17 c0 rjmp .+46 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + adc_read_mode = 0; + 434: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + adc_read_step = 0; + 438: e1 2c mov r14, r1 + adc_read_mode = ADC_MODE_TEMPSENSOR; + 43a: 88 e0 ldi r24, 0x08 ; 8 + 43c: 80 93 20 01 sts 0x0120, r24 ; 0x800120 + 440: 10 c0 rjmp .+32 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + // data will probably be prior data unless the host waits. (need to verify) + comm_timeout = 0; + break; + } + case MODE_LIGHTSENSOR_READ: { + if (!adc_read_mode) { + 442: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 446: 81 11 cpse r24, r1 + 448: 0c c0 rjmp .+24 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + // set the led and step to first step + adc_read_mode = 0; + 44a: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + adc_read_step = 0; + 44e: e1 2c mov r14, r1 + rgbled_sensor_read_idx(comm_data[0]); + 450: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 454: 54 df rcall .-344 ; 0x2fe + adc_read_mode = ADC_MODE_LIGHTSENSOR; + 456: 81 e0 ldi r24, 0x01 ; 1 + 458: f1 cf rjmp .-30 ; 0x43c <__LOCK_REGION_LENGTH__+0x3c> + break; + } + case MODE_SLEEP: { + // put this bitch to bed. + // we'll wake up when we get another I2C command. + pirate_sleep_mode = SLEEP_MODE_PWR_DOWN; + 45a: 84 e0 ldi r24, 0x04 ; 4 + 45c: 80 93 09 01 sts 0x0109, r24 ; 0x800109 + // TODO: come up with an implementation that isn't shitty + } + + case MODE_AUX_PIN_GET: { + // TODO: implement when response sending is ...implemented + comm_cmd = 0; + 460: f1 2c mov r15, r1 + comm_timeout = 0; + 462: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + comm_timeout = 0; + return 1; + } + } + + return 0; + 466: 80 e0 ldi r24, 0x00 ; 0 + + case MODE_AUX_PIN_GET: { + // TODO: implement when response sending is ...implemented + comm_cmd = 0; + comm_timeout = 0; + break; + 468: 08 95 ret + } + case MODE_LIGHTSENSOR_SENS: { // 0x10 0x19 + if (comm_data_idx >= 1) { + 46a: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 46e: 88 23 and r24, r24 + 470: 71 f0 breq .+28 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + if ((comm_data[0] <= 0x03) && (comm_data[1])) { + 472: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 476: 84 30 cpi r24, 0x04 ; 4 + 478: 98 f7 brcc .-26 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 47a: 60 91 30 01 lds r22, 0x0130 ; 0x800130 + 47e: 66 23 and r22, r22 + 480: 79 f3 breq .-34 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + rgbled_sensor_sensitivity(comm_data[0], comm_data[1]); + 482: 33 df rcall .-410 ; 0x2ea + 484: ed cf rjmp .-38 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + } + + // invalid commands + default: { + // send NAK + comm_cmd = 0; + 486: f1 2c mov r15, r1 + comm_timeout = 0; + 488: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + return 1; + 48c: 81 e0 ldi r24, 0x01 ; 1 + } + } + + return 0; +} + 48e: 08 95 ret + +00000490 : + +/* sending */ +static uint8_t i2c_slave_tx(uint8_t byte, uint8_t is_last_byte) +{ + // load data + TWDR = byte; + 490: 80 93 bb 00 sts 0x00BB, r24 ; 0x8000bb <__EEPROM_REGION_LENGTH__+0x7f00bb> + + // start sending + TWCR |= _BV(TWINT); + 494: ec eb ldi r30, 0xBC ; 188 + 496: f0 e0 ldi r31, 0x00 ; 0 + 498: 80 81 ld r24, Z + 49a: 80 68 ori r24, 0x80 ; 128 + 49c: 80 83 st Z, r24 + + if (is_last_byte) { + // this is all the data we have to send; send a nack after this byte + i2c_disable_slave(); + 49e: 80 81 ld r24, Z + 4a0: 8f 7b andi r24, 0xBF ; 191 + 4a2: 80 83 st Z, r24 + } + + return 0; +} + 4a4: 80 e0 ldi r24, 0x00 ; 0 + 4a6: 08 95 ret + +000004a8 : +/* comms */ +static inline uint8_t pegleg_data_tx() +{ + uint8_t ret; + + switch (comm_cmd) { + 4a8: 8f 2d mov r24, r15 + 4aa: 88 30 cpi r24, 0x08 ; 8 + 4ac: b9 f0 breq .+46 ; 0x4dc + 4ae: 89 30 cpi r24, 0x09 ; 9 + 4b0: c1 f0 breq .+48 ; 0x4e2 + 4b2: 84 30 cpi r24, 0x04 ; 4 + 4b4: 51 f5 brne .+84 ; 0x50a + case MODE_EEPROM_READ: { + if (comm_data[0] < 64) { + 4b6: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 4ba: 80 34 cpi r24, 0x40 ; 64 + 4bc: 28 f4 brcc .+10 ; 0x4c8 + i2c_slave_tx(eeprom_read_byte((uint8_t *)(uint16_t)comm_data[0]), 1); + 4be: 90 e0 ldi r25, 0x00 ; 0 + 4c0: c8 d1 rcall .+912 ; 0x852 + 4c2: e6 df rcall .-52 ; 0x490 + ret = 1; + 4c4: 81 e0 ldi r24, 0x01 ; 1 + 4c6: 06 c0 rjmp .+12 ; 0x4d4 + } else { + // invalid address... + i2c_disable_slave(); + 4c8: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 4cc: 8f 7b andi r24, 0xBF ; 191 + 4ce: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + ret = 255; + 4d2: 8f ef ldi r24, 0xFF ; 255 + } + comm_cmd = 0; + 4d4: f1 2c mov r15, r1 + comm_timeout = 0; + 4d6: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 4da: 08 95 ret + return ret; + } + + case MODE_TEMPSENSOR_READ: { + i2c_slave_tx(temperature, 1); + 4dc: 80 91 08 01 lds r24, 0x0108 ; 0x800108 + 4e0: 0e c0 rjmp .+28 ; 0x4fe + comm_cmd = 0; + comm_timeout = 0; + return 1; + } + case MODE_LIGHTSENSOR_READ: { + i2c_slave_tx(adc_result[comm_data[0] & 0x03] >> 2, 1); + 4e2: e0 91 2f 01 lds r30, 0x012F ; 0x80012f + 4e6: e3 70 andi r30, 0x03 ; 3 + 4e8: f0 e0 ldi r31, 0x00 ; 0 + 4ea: ee 0f add r30, r30 + 4ec: ff 1f adc r31, r31 + 4ee: e3 5f subi r30, 0xF3 ; 243 + 4f0: fe 4f sbci r31, 0xFE ; 254 + 4f2: 80 81 ld r24, Z + 4f4: 91 81 ldd r25, Z+1 ; 0x01 + 4f6: 96 95 lsr r25 + 4f8: 87 95 ror r24 + 4fa: 96 95 lsr r25 + 4fc: 87 95 ror r24 + 4fe: c8 df rcall .-112 ; 0x490 + comm_cmd = 0; + 500: f1 2c mov r15, r1 + comm_timeout = 0; + 502: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + return 1; + 506: 81 e0 ldi r24, 0x01 ; 1 + 508: 08 95 ret + } + + default: { + // nothing active; invalid :( + i2c_disable_slave(); + 50a: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 50e: 8f 7b andi r24, 0xBF ; 191 + 510: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + return 255; + 514: 8f ef ldi r24, 0xFF ; 255 + } + } + + return 0; +} + 516: 08 95 ret + +00000518 : +uint8_t tempsensor_process() +{ + int8_t temp_gain; + int8_t temp_adj; + + temp_adj = adc_result[ADC_CHAN_TEMP] - temp_offset; // our offset adjusted temperature + 518: 80 91 1d 01 lds r24, 0x011D ; 0x80011d + 51c: 90 91 1e 01 lds r25, 0x011E ; 0x80011e + 520: 90 91 06 01 lds r25, 0x0106 ; 0x800106 + 524: 89 1b sub r24, r25 + temp_gain = temp_adj >> 3; // our gain adjust amount + 526: 98 2f mov r25, r24 + 528: 95 95 asr r25 + 52a: 95 95 asr r25 + 52c: 95 95 asr r25 + while (temp_gain > 0) {temp_gain--; temp_adj--;}; // correct positive gain + while (temp_gain < 0) {temp_gain++; temp_adj++;}; // correct negative gain + + // save temperature + return temp_adj; +} + 52e: 89 1b sub r24, r25 + 530: 08 95 ret + +00000532 : + +void tempsensor_read() +{ + if (adc_read_step == 0) { + 532: 8e 2d mov r24, r14 + 534: e1 10 cpse r14, r1 + 536: 03 c0 rjmp .+6 ; 0x53e + // select temperature channel + adc_channel(ADC_CHAN_TEMP, ADC_REF_BANDGAP); + 538: 62 e0 ldi r22, 0x02 ; 2 + 53a: 88 e0 ldi r24, 0x08 ; 8 + 53c: bd cd rjmp .-1158 ; 0xb8 + + } else if (adc_read_step == 3) { + 53e: 83 30 cpi r24, 0x03 ; 3 + 540: 19 f4 brne .+6 ; 0x548 + // we've waited 1.5ms so the bandgap voltage should have been set. + // start conversion after bandgap ref change timeout per datasheet + adc_start(4, 1); + 542: 61 e0 ldi r22, 0x01 ; 1 + 544: 84 e0 ldi r24, 0x04 ; 4 + 546: da cd rjmp .-1100 ; 0xfc + + } else if (adc_read_step > 3) { + 548: 84 30 cpi r24, 0x04 ; 4 + 54a: 70 f0 brcs .+28 ; 0x568 + adc_read_step--; + 54c: 81 50 subi r24, 0x01 ; 1 + 54e: e8 2e mov r14, r24 + + if (!adc_busy) { + 550: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 554: 81 11 cpse r24, r1 + 556: 08 c0 rjmp .+16 ; 0x568 + // revert reference to AVCC...per the datasheet only changes to + // bandgap should take ~1ms but changes back to AVCC seem to + // take a while to be accurate as well + adc_channel(ADC_CHAN_GND, ADC_REF_AVCC); + 558: 61 e0 ldi r22, 0x01 ; 1 + 55a: 8f e0 ldi r24, 0x0F ; 15 + 55c: ad dd rcall .-1190 ; 0xb8 + adc_read_mode = 0; + 55e: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + temperature = tempsensor_process(); + 562: da df rcall .-76 ; 0x518 + 564: 80 93 08 01 sts 0x0108, r24 ; 0x800108 + 568: 08 95 ret + +0000056a
: +/* func */ +static void system_init() +{ + // make SURE we are running at 8MHz + // do this by first enabling clock divider setup mode, + CLKPR = _BV(CLKPCE); + 56a: 80 e8 ldi r24, 0x80 ; 128 + 56c: 80 93 61 00 sts 0x0061, r24 ; 0x800061 <__EEPROM_REGION_LENGTH__+0x7f0061> + // and disabling any divider + CLKPR = 0; + 570: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <__EEPROM_REGION_LENGTH__+0x7f0061> +} + +static void system_io_init() +{ + // enable break-before-make outputs on all IO + PORTCR |= (_BV(BBMA) | _BV(BBMB) | _BV(BBMC) | _BV(BBMD)); + 574: 82 b3 in r24, 0x12 ; 18 + 576: 80 6f ori r24, 0xF0 ; 240 + 578: 82 bb out 0x12, r24 ; 18 + + // set ALL pins as inputs except PB0 + DDRA = 0x00; + 57a: 1d b8 out 0x0d, r1 ; 13 + DDRB = 0x01; + 57c: 81 e0 ldi r24, 0x01 ; 1 + 57e: 84 b9 out 0x04, r24 ; 4 + DDRC = 0x00; + 580: 17 b8 out 0x07, r1 ; 7 + DDRD = 0x00; + 582: 1a b8 out 0x0a, r1 ; 10 + + // and enable pullups (this reduces power consumption) + // in the case of PB0, set it LOW + PORTA = 0xff; + 584: cf ef ldi r28, 0xFF ; 255 + 586: ce b9 out 0x0e, r28 ; 14 + PORTB = 0xfe; + 588: de ef ldi r29, 0xFE ; 254 + 58a: d5 b9 out 0x05, r29 ; 5 + PORTC = 0xff; + 58c: c8 b9 out 0x08, r28 ; 8 + PORTD = 0xff; + 58e: cb b9 out 0x0b, r28 ; 11 + // configure device and IO + system_init(); + system_io_init(); + + // configure RGBLEDs + rgbled_io_init(); + 590: 30 de rcall .-928 ; 0x1f2 +/* configuration */ +static inline void i2c_slave_init(uint8_t address, uint8_t enable_general_addr) +{ + // set bitrate register, clear prescaler + // should get us 400KHz (fast mode) max rate + TWBR = 2; + 592: 22 e0 ldi r18, 0x02 ; 2 + 594: 20 93 b8 00 sts 0x00B8, r18 ; 0x8000b8 <__EEPROM_REGION_LENGTH__+0x7f00b8> + TWSR = ~(_BV(TWPS0) | _BV(TWPS1)); + 598: 8c ef ldi r24, 0xFC ; 252 + 59a: 80 93 b9 00 sts 0x00B9, r24 ; 0x8000b9 <__EEPROM_REGION_LENGTH__+0x7f00b9> + + // set slave address and clear address mask + TWAR = ((address << 1) | (enable_general_addr & 1)); + 59e: 86 ee ldi r24, 0xE6 ; 230 + 5a0: 80 93 ba 00 sts 0x00BA, r24 ; 0x8000ba <__EEPROM_REGION_LENGTH__+0x7f00ba> + TWAMR = 0; + 5a4: 10 92 bd 00 sts 0x00BD, r1 ; 0x8000bd <__EEPROM_REGION_LENGTH__+0x7f00bd> + + // enable auto-ack, enable TWI, and enable the TWI interrupt + TWCR = _BV(TWEA) | _BV(TWEN) | _BV(TWIE); + 5a8: 85 e4 ldi r24, 0x45 ; 69 + 5aa: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + +/* implementations */ +inline static void timer0_init() +{ + // make sure timer is enabled + PRR &= ~PRTIM0; + 5ae: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5b2: 8a 7f andi r24, 0xFA ; 250 + 5b4: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + + // enable timer with prescale divider /64, enable TOP mode + TCCR0A = _BV(CTC0) | (_BV(CS00) | _BV(CS01) | ~(_BV(CS02))); + 5b8: 9b ef ldi r25, 0xFB ; 251 + 5ba: 95 bd out 0x25, r25 ; 37 + + // set TOP level to be 62 to 63 counts; this will result in 2KHz cycle @8MHz + OCR0A = TIMER0_COMPARE; + 5bc: 8d e3 ldi r24, 0x3D ; 61 + 5be: 87 bd out 0x27, r24 ; 39 + + // clear timer + TCNT0 = 0; + 5c0: 16 bc out 0x26, r1 ; 38 + + // and enable OCA interrupt (we don't use overflow interrupt as we are in TOP mode) + TIMSK0 = _BV(OCIE0A); + 5c2: 20 93 6e 00 sts 0x006E, r18 ; 0x80006e <__EEPROM_REGION_LENGTH__+0x7f006e> +#define timer0_set_compare(x) OCR0A = x + +inline static void timer1_init() +{ + // make sure timer is enabled + PRR &= ~PRTIM1; + 5c6: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5ca: 8c 7f andi r24, 0xFC ; 252 + 5cc: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + + // clear PWM OCx + OCR1AH = 0xff; // sets temp register to 0xff + 5d0: c0 93 89 00 sts 0x0089, r28 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089> + OCR1AL = 0xff; + 5d4: c0 93 88 00 sts 0x0088, r28 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088> + OCR1BL = 0xff; + 5d8: c0 93 8a 00 sts 0x008A, r28 ; 0x80008a <__EEPROM_REGION_LENGTH__+0x7f008a> + + // clear timer + TCNT1H = 0; // sets temp register to 0 + 5dc: 10 92 85 00 sts 0x0085, r1 ; 0x800085 <__EEPROM_REGION_LENGTH__+0x7f0085> + TCNT1L = 0; + 5e0: 10 92 84 00 sts 0x0084, r1 ; 0x800084 <__EEPROM_REGION_LENGTH__+0x7f0084> + + // enable timer OC1 and OC2 clear on match / set at TOP, set to fast PWM mode 14 (ICR1 compare), prescaler off + // note: in PWM mode 14, pin PB0 can only be used as an output... =( + TCCR1A = (_BV(COM1A1)) | (_BV(COM1B1)) | (_BV(WGM11) | ~(_BV(WGM10))); + 5e4: d0 93 80 00 sts 0x0080, r29 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + TCCR1B = (_BV(WGM12) | _BV(WGM13)) | (_BV(CS10)); + 5e8: 89 e1 ldi r24, 0x19 ; 25 + 5ea: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081> + TCCR1C = 0; + 5ee: 10 92 82 00 sts 0x0082, r1 ; 0x800082 <__EEPROM_REGION_LENGTH__+0x7f0082> + + // store timer1 mode to allow enabling / disabling timer + timer1_mode = TCCR1A; + 5f2: 80 91 80 00 lds r24, 0x0080 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 5f6: 80 93 29 01 sts 0x0129, r24 ; 0x800129 + + // set ICR compare to result in a PWM rate of 8MHz / 252, or 32256Hz + // This is 16 PWM updates per timer0 63-count period (16.25 per 62-count period) + // In practice we don't get the first PWM output, so we get: + // 15/16 PWM / (x) LEDs = 31.25% max duty for 3 LED, 23.43% max duty for 4 LED + ICR1L = TIMER1_COMPARE; + 5fa: 90 93 86 00 sts 0x0086, r25 ; 0x800086 <__EEPROM_REGION_LENGTH__+0x7f0086> + + // set OC pins as outputs + DDRB |= (_BV(DDB2) | _BV(DDB1)); + 5fe: 84 b1 in r24, 0x04 ; 4 + 600: 86 60 ori r24, 0x06 ; 6 + 602: 84 b9 out 0x04, r24 ; 4 + + // disable interrupts + TIMSK1 = 0; + 604: 10 92 6f 00 sts 0x006F, r1 ; 0x80006f <__EEPROM_REGION_LENGTH__+0x7f006f> + timer0_init(); + // configure led pwm timer + timer1_init(); + + // initialize adc + adc_init(); + 608: 45 dd rcall .-1398 ; 0x94 + // todo: figure out wtf I meant by this note in 2014 (this is me in 2023) + // looking at the code, it looks like a pin needs manually changed to calibrate. + // todo: add a zeroing offset calibration command to the command protocol? + + // is pin PA2 low? (pin 3 on attiny88 - is pulled up - short to pin 5 / ground somewhere) + if ((PINA & _BV(PINA2)) == 0) { + 60a: 62 99 sbic 0x0c, 2 ; 12 + 60c: 23 c0 rjmp .+70 ; 0x654 + // turn on the ADC, wait for it to warm up + adc_init(); + 60e: 42 dd rcall .-1404 ; 0x94 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 610: 2f ef ldi r18, 0xFF ; 255 + 612: 80 e7 ldi r24, 0x70 ; 112 + 614: 92 e0 ldi r25, 0x02 ; 2 + 616: 21 50 subi r18, 0x01 ; 1 + 618: 80 40 sbci r24, 0x00 ; 0 + 61a: 90 40 sbci r25, 0x00 ; 0 + 61c: e1 f7 brne .-8 ; 0x616 + 61e: 00 c0 rjmp .+0 ; 0x620 + 620: 00 00 nop + _delay_ms(100); // todo: is this right? this seems slow + + // is the pin still low? not a glitch? + if ((PINA & _BV(PINA2)) == 0) { + 622: 62 99 sbic 0x0c, 2 ; 12 + 624: 17 c0 rjmp .+46 ; 0x654 + // enable interrupts + sei(); + 626: 78 94 sei + + // start reading the temp sensor; stall until adc is done + adc_read_mode = ADC_MODE_TEMPSENSOR; + 628: 88 e0 ldi r24, 0x08 ; 8 + 62a: 80 93 20 01 sts 0x0120, r24 ; 0x800120 + tempsensor_read(); + 62e: 81 df rcall .-254 ; 0x532 + while (adc_busy); + 630: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 634: 81 11 cpse r24, r1 + 636: fc cf rjmp .-8 ; 0x630 + + // here's our correction factor! + temp_offset = adc_result[ADC_CHAN_TEMP]; + 638: 60 91 1d 01 lds r22, 0x011D ; 0x80011d + 63c: 70 91 1e 01 lds r23, 0x011E ; 0x80011e + 640: 70 93 07 01 sts 0x0107, r23 ; 0x800107 + 644: 60 93 06 01 sts 0x0106, r22 ; 0x800106 + + // write it to eeprom + eeprom_write_word((uint16_t *)EEPROM_ADDR_TEMPCAL, temp_offset); + 648: 8e e3 ldi r24, 0x3E ; 62 + 64a: 90 e0 ldi r25, 0x00 ; 0 + 64c: 0d d1 rcall .+538 ; 0x868 + + // and that's it - we're done. + adc_read_mode = 0; + 64e: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 652: 0d c0 rjmp .+26 ; 0x66e + return; + } + } + + // not saving a value - read the value from eeprom + temp_offset = eeprom_read_word((uint16_t *)EEPROM_ADDR_TEMPCAL); + 654: 8e e3 ldi r24, 0x3E ; 62 + 656: 90 e0 ldi r25, 0x00 ; 0 + 658: 03 d1 rcall .+518 ; 0x860 + + // does it seem invalid? + if (temp_offset > 560) { + 65a: 81 33 cpi r24, 0x31 ; 49 + 65c: 22 e0 ldi r18, 0x02 ; 2 + 65e: 92 07 cpc r25, r18 + 660: 14 f0 brlt .+4 ; 0x666 + // yeah, this isn't right. load rough value for 0degC from datasheet. + // but you really should calibrate your chip, you lazy fuck. + temp_offset = 273; + 662: 81 e1 ldi r24, 0x11 ; 17 + 664: 91 e0 ldi r25, 0x01 ; 1 + 666: 90 93 07 01 sts 0x0107, r25 ; 0x800107 + 66a: 80 93 06 01 sts 0x0106, r24 ; 0x800106 + tempsensor_cal(); + + // and now we wait. + while (1) { + // set sleep mode, then set for idle sleep (CPU off, all peripherals on) + set_sleep_mode(pirate_sleep_mode); + 66e: 83 b7 in r24, 0x33 ; 51 + 670: 89 7f andi r24, 0xF9 ; 249 + 672: 90 91 09 01 lds r25, 0x0109 ; 0x800109 + 676: 89 2b or r24, r25 + 678: 83 bf out 0x33, r24 ; 51 + pirate_sleep_mode = SLEEP_MODE_IDLE; + 67a: 10 92 09 01 sts 0x0109, r1 ; 0x800109 + + // re-enable interrupts and nap. + sei(); + 67e: 78 94 sei + sleep_mode(); + 680: 83 b7 in r24, 0x33 ; 51 + 682: 81 60 ori r24, 0x01 ; 1 + 684: 83 bf out 0x33, r24 ; 51 + 686: 88 95 sleep + 688: 83 b7 in r24, 0x33 ; 51 + 68a: 8e 7f andi r24, 0xFE ; 254 + 68c: 83 bf out 0x33, r24 ; 51 + 68e: ef cf rjmp .-34 ; 0x66e + +00000690 <__vector_19>: + +#include "config.h" + + +ISR(TWI_vect) +{ + 690: 1f 92 push r1 + 692: 0f 92 push r0 + 694: 0f b6 in r0, 0x3f ; 63 + 696: 0f 92 push r0 + 698: 11 24 eor r1, r1 + 69a: 2f 93 push r18 + 69c: 3f 93 push r19 + 69e: 4f 93 push r20 + 6a0: 5f 93 push r21 + 6a2: 6f 93 push r22 + 6a4: 7f 93 push r23 + 6a6: 8f 93 push r24 + 6a8: 9f 93 push r25 + 6aa: af 93 push r26 + 6ac: bf 93 push r27 + 6ae: ef 93 push r30 + 6b0: ff 93 push r31 + // i2c is low priority - allow it to be interrupted + // sei(); + + // figure out wtf to do + switch (TWSR & 0xf8) { // TWI state + 6b2: 80 91 b9 00 lds r24, 0x00B9 ; 0x8000b9 <__EEPROM_REGION_LENGTH__+0x7f00b9> + 6b6: 88 7f andi r24, 0xF8 ; 248 + 6b8: 80 3a cpi r24, 0xA0 ; 160 + 6ba: f1 f1 breq .+124 ; 0x738 <__vector_19+0xa8> + 6bc: 60 f4 brcc .+24 ; 0x6d6 <__vector_19+0x46> + 6be: 88 36 cpi r24, 0x68 ; 104 + 6c0: 09 f4 brne .+2 ; 0x6c4 <__vector_19+0x34> + 6c2: 3f c0 rjmp .+126 ; 0x742 <__vector_19+0xb2> + 6c4: 28 f4 brcc .+10 ; 0x6d0 <__vector_19+0x40> + 6c6: 88 23 and r24, r24 + 6c8: 91 f1 breq .+100 ; 0x72e <__vector_19+0x9e> + 6ca: 80 36 cpi r24, 0x60 ; 96 + 6cc: d1 f1 breq .+116 ; 0x742 <__vector_19+0xb2> + 6ce: 34 c0 rjmp .+104 ; 0x738 <__vector_19+0xa8> + 6d0: 80 38 cpi r24, 0x80 ; 128 + 6d2: 39 f0 breq .+14 ; 0x6e2 <__vector_19+0x52> + 6d4: 31 c0 rjmp .+98 ; 0x738 <__vector_19+0xa8> + 6d6: 88 3b cpi r24, 0xB8 ; 184 + 6d8: 41 f1 breq .+80 ; 0x72a <__vector_19+0x9a> + 6da: 70 f5 brcc .+92 ; 0x738 <__vector_19+0xa8> + 6dc: 88 3a cpi r24, 0xA8 ; 168 + 6de: 29 f1 breq .+74 ; 0x72a <__vector_19+0x9a> + 6e0: 2b c0 rjmp .+86 ; 0x738 <__vector_19+0xa8> + case 0x78: { + // unused: this is for genaddr mode. + } + */ + case 0x80: { // slave data receive w/ACK returned + if (pegleg_data_rx(TWDR)) { + 6e2: 80 91 bb 00 lds r24, 0x00BB ; 0x8000bb <__EEPROM_REGION_LENGTH__+0x7f00bb> + return 0; +} + +static uint8_t pegleg_data_rx(uint8_t data) +{ + if (comm_cmd == MODE_NONE) { + 6e6: f1 10 cpse r15, r1 + 6e8: 0f c0 rjmp .+30 ; 0x708 <__vector_19+0x78> + // we aren't processing any commands, so this must be a new command/request. + // first 4 bits = command + comm_cmd = data >> 4; + 6ea: 98 2f mov r25, r24 + 6ec: 92 95 swap r25 + 6ee: 9f 70 andi r25, 0x0F ; 15 + 6f0: f9 2e mov r15, r25 + // last 4 bits = optional data + comm_data[0] = data & 0x0f; + 6f2: 98 2f mov r25, r24 + 6f4: 9f 70 andi r25, 0x0F ; 15 + 6f6: 90 93 2f 01 sts 0x012F, r25 ; 0x80012f + + // clear our data watchdog and data index + comm_data_idx = 0; + 6fa: 10 92 33 01 sts 0x0133, r1 ; 0x800133 + comm_timeout = 0; + 6fe: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + + // if this is an immediate command, process it + if (data & 0x80) { + 702: 87 ff sbrs r24, 7 + 704: 1e c0 rjmp .+60 ; 0x742 <__vector_19+0xb2> + 706: 0a c0 rjmp .+20 ; 0x71c <__vector_19+0x8c> + return pegleg_cmd(); + } + } else { + // command in progress - add data and continue + comm_data_idx++; + comm_data_idx &= (COMM_DATA_SIZE - 1); // data will LOOP in case of problems; TODO: NAK on failure + 708: e0 91 33 01 lds r30, 0x0133 ; 0x800133 + 70c: ef 5f subi r30, 0xFF ; 255 + 70e: e3 70 andi r30, 0x03 ; 3 + 710: e0 93 33 01 sts 0x0133, r30 ; 0x800133 + comm_data[comm_data_idx] = data; + 714: f0 e0 ldi r31, 0x00 ; 0 + 716: e1 5d subi r30, 0xD1 ; 209 + 718: fe 4f sbci r31, 0xFE ; 254 + 71a: 80 83 st Z, r24 + return pegleg_cmd(); + 71c: 38 de rcall .-912 ; 0x38e + 71e: 88 23 and r24, r24 + 720: 81 f0 breq .+32 ; 0x742 <__vector_19+0xb2> + // I wanted to send a NAK, but TWI already sent an ACK. oh fucking well. + // send NACK if any further packets are received + i2c_disable_slave(); + 722: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 726: 8f 7b andi r24, 0xBF ; 191 + 728: 0a c0 rjmp .+20 ; 0x73e <__vector_19+0xae> + } + case 0xb8: { // slave read continues, master ACK'd last packet + // do we have a mode in progress? + // NOTE: by default, slave tx modes won't unset, but slave mode will be disabled + // when the last packet is sent, and re-enabled on the following ACK/NACK. + pegleg_data_tx(); + 72a: be de rcall .-644 ; 0x4a8 + break; + 72c: 0a c0 rjmp .+20 ; 0x742 <__vector_19+0xb2> + } + + // ** ERROR AND UNHANDLED ** // + case 0x00: { // bus error + // set TWSTO, clear TWINT (by setting) as per datasheet + TWCR |= (_BV(TWSTO)) | (_BV(TWINT)); + 72e: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 732: 80 69 ori r24, 0x90 ; 144 + 734: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + break; + } + default: { + // something unhandled? fuck it, we want to be a slave. + // reset everything and start over. + i2c_enable_slave(); + 738: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 73c: 80 64 ori r24, 0x40 ; 64 + 73e: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + } + } + + // done with this TWI bit + i2c_clear_int_flag(); + 742: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 746: 80 68 ori r24, 0x80 ; 128 + 748: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> +} + 74c: ff 91 pop r31 + 74e: ef 91 pop r30 + 750: bf 91 pop r27 + 752: af 91 pop r26 + 754: 9f 91 pop r25 + 756: 8f 91 pop r24 + 758: 7f 91 pop r23 + 75a: 6f 91 pop r22 + 75c: 5f 91 pop r21 + 75e: 4f 91 pop r20 + 760: 3f 91 pop r19 + 762: 2f 91 pop r18 + 764: 0f 90 pop r0 + 766: 0f be out 0x3f, r0 ; 63 + 768: 0f 90 pop r0 + 76a: 1f 90 pop r1 + 76c: 18 95 reti + +0000076e <__vector_12>: +#include "i2c_interrupt.h" + + +/* ISR handlers */ +ISR(TIMER0_COMPA_vect) +{ + 76e: 1f 92 push r1 + 770: 0f 92 push r0 + 772: 0f b6 in r0, 0x3f ; 63 + 774: 0f 92 push r0 + 776: 11 24 eor r1, r1 + 778: 2f 93 push r18 + 77a: 3f 93 push r19 + 77c: 4f 93 push r20 + 77e: 5f 93 push r21 + 780: 6f 93 push r22 + 782: 7f 93 push r23 + 784: 8f 93 push r24 + 786: 9f 93 push r25 + 788: af 93 push r26 + 78a: bf 93 push r27 + 78c: ef 93 push r30 + 78e: ff 93 push r31 + * at the faster speed, this is ~3968 cycles/loop @8MHz. + ****/ + + /* TIMEKEEPING */ + // we only count a total of 10 seconds this way before we loop. + tim0_milli++; + 790: 80 91 0b 01 lds r24, 0x010B ; 0x80010b + 794: 8f 5f subi r24, 0xFF ; 255 + if (tim0_milli >= 200) { + 796: 88 3c cpi r24, 0xC8 ; 200 + 798: 18 f4 brcc .+6 ; 0x7a0 <__vector_12+0x32> + * at the faster speed, this is ~3968 cycles/loop @8MHz. + ****/ + + /* TIMEKEEPING */ + // we only count a total of 10 seconds this way before we loop. + tim0_milli++; + 79a: 80 93 0b 01 sts 0x010B, r24 ; 0x80010b + 79e: 0c c0 rjmp .+24 ; 0x7b8 <__vector_12+0x4a> + if (tim0_milli >= 200) { + tim0_milli = 0; + 7a0: 10 92 0b 01 sts 0x010B, r1 ; 0x80010b + tim0_centi++; + 7a4: 80 91 0a 01 lds r24, 0x010A ; 0x80010a + 7a8: 8f 5f subi r24, 0xFF ; 255 + if (tim0_centi >= 100) { + 7aa: 84 36 cpi r24, 0x64 ; 100 + 7ac: 18 f4 brcc .+6 ; 0x7b4 <__vector_12+0x46> + /* TIMEKEEPING */ + // we only count a total of 10 seconds this way before we loop. + tim0_milli++; + if (tim0_milli >= 200) { + tim0_milli = 0; + tim0_centi++; + 7ae: 80 93 0a 01 sts 0x010A, r24 ; 0x80010a + 7b2: 02 c0 rjmp .+4 ; 0x7b8 <__vector_12+0x4a> + if (tim0_centi >= 100) { + tim0_centi = 0; + 7b4: 10 92 0a 01 sts 0x010A, r1 ; 0x80010a + } + } + + // 2khz fix. our timer isn't evenly divisible to get our 2K, so we do this... + OCR0A = (OCR0A == TIMER0_COMPARE) ? TIMER0_COMPARE + 1 : TIMER0_COMPARE; + 7b8: 87 b5 in r24, 0x27 ; 39 + 7ba: 8d 33 cpi r24, 0x3D ; 61 + 7bc: 11 f0 breq .+4 ; 0x7c2 <__vector_12+0x54> + 7be: 8d e3 ldi r24, 0x3D ; 61 + 7c0: 01 c0 rjmp .+2 ; 0x7c4 <__vector_12+0x56> + 7c2: 8e e3 ldi r24, 0x3E ; 62 + 7c4: 87 bd out 0x27, r24 ; 39 + + + /* ADC / LIGHT SENSOR / TEMP SENSOR */ + // main adc handler + if (adc_read_mode) { + 7c6: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7ca: 88 23 and r24, r24 + 7cc: 71 f0 breq .+28 ; 0x7ea <__vector_12+0x7c> + switch (adc_read_mode) { + 7ce: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7d2: 81 30 cpi r24, 0x01 ; 1 + 7d4: 21 f0 breq .+8 ; 0x7de <__vector_12+0x70> + 7d6: 88 30 cpi r24, 0x08 ; 8 + 7d8: 19 f4 brne .+6 ; 0x7e0 <__vector_12+0x72> + case ADC_MODE_TEMPSENSOR: { + tempsensor_read(); + 7da: ab de rcall .-682 ; 0x532 + break; + 7dc: 01 c0 rjmp .+2 ; 0x7e0 <__vector_12+0x72> + } + case ADC_MODE_LIGHTSENSOR: { + rgbled_sensor_read(); + 7de: 93 dd rcall .-1242 ; 0x306 + break; + } + } + + if (adc_read_step <= 0xfe) { + 7e0: 8e 2d mov r24, r14 + 7e2: 8f 3f cpi r24, 0xFF ; 255 + 7e4: 11 f0 breq .+4 ; 0x7ea <__vector_12+0x7c> + adc_read_step++; + 7e6: 8f 5f subi r24, 0xFF ; 255 + 7e8: e8 2e mov r14, r24 + + + /* LEDs */ + // TODO: test common cathode mode + // figure out next LED to update (order is always RGB(X) repeating) + if (adc_read_mode != ADC_MODE_LIGHTSENSOR) { + 7ea: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7ee: 81 30 cpi r24, 0x01 ; 1 + 7f0: 41 f0 breq .+16 ; 0x802 <__vector_12+0x94> + rgbled_idx++; + 7f2: 81 e0 ldi r24, 0x01 ; 1 + 7f4: 8d 0d add r24, r13 +#ifdef LED_RGBX_4LED + rgbled_idx &= 0x03; +#else + if (rgbled_idx > 2) { + 7f6: 83 30 cpi r24, 0x03 ; 3 + 7f8: 10 f4 brcc .+4 ; 0x7fe <__vector_12+0x90> + + /* LEDs */ + // TODO: test common cathode mode + // figure out next LED to update (order is always RGB(X) repeating) + if (adc_read_mode != ADC_MODE_LIGHTSENSOR) { + rgbled_idx++; + 7fa: d8 2e mov r13, r24 + 7fc: 01 c0 rjmp .+2 ; 0x800 <__vector_12+0x92> +#ifdef LED_RGBX_4LED + rgbled_idx &= 0x03; +#else + if (rgbled_idx > 2) { + rgbled_idx = 0; + 7fe: d1 2c mov r13, r1 + } +#endif + + // and now update them + rgbled_update(); + 800: 05 dd rcall .-1526 ; 0x20c + } + + + /* COMMAND IO */ + // stop processing the command if it isn't complete in 100ms. + if (comm_cmd != MODE_NONE) { + 802: ff 20 and r15, r15 + 804: a1 f0 breq .+40 ; 0x82e <__vector_12+0xc0> + if (++comm_timeout >= 50) { + 806: 80 91 2a 01 lds r24, 0x012A ; 0x80012a + 80a: 8f 5f subi r24, 0xFF ; 255 + 80c: 80 93 2a 01 sts 0x012A, r24 ; 0x80012a + 810: 82 33 cpi r24, 0x32 ; 50 + 812: 68 f0 brcs .+26 ; 0x82e <__vector_12+0xc0> + comm_cmd = MODE_NONE; + 814: f1 2c mov r15, r1 + comm_timeout = 0; + 816: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + i2c_disable_slave(); + 81a: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 81e: 8f 7b andi r24, 0xBF ; 191 + 820: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + i2c_enable_slave(); + 824: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 828: 80 64 ori r24, 0x40 ; 64 + 82a: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + } + } + + /* PROFILING */ + // determine how much CPU usage we are consuming + tim0_profiler = TCNT0; + 82e: 86 b5 in r24, 0x26 ; 38 +} + 830: ff 91 pop r31 + 832: ef 91 pop r30 + 834: bf 91 pop r27 + 836: af 91 pop r26 + 838: 9f 91 pop r25 + 83a: 8f 91 pop r24 + 83c: 7f 91 pop r23 + 83e: 6f 91 pop r22 + 840: 5f 91 pop r21 + 842: 4f 91 pop r20 + 844: 3f 91 pop r19 + 846: 2f 91 pop r18 + 848: 0f 90 pop r0 + 84a: 0f be out 0x3f, r0 ; 63 + 84c: 0f 90 pop r0 + 84e: 1f 90 pop r1 + 850: 18 95 reti + +00000852 : + 852: f9 99 sbic 0x1f, 1 ; 31 + 854: fe cf rjmp .-4 ; 0x852 + 856: 81 bd out 0x21, r24 ; 33 + 858: f8 9a sbi 0x1f, 0 ; 31 + 85a: 99 27 eor r25, r25 + 85c: 80 b5 in r24, 0x20 ; 32 + 85e: 08 95 ret + +00000860 : + 860: a8 e1 ldi r26, 0x18 ; 24 + 862: b0 e0 ldi r27, 0x00 ; 0 + 864: 42 e0 ldi r20, 0x02 ; 2 + 866: 05 c0 rjmp .+10 ; 0x872 + +00000868 : + 868: 10 d0 rcall .+32 ; 0x88a + 86a: 27 2f mov r18, r23 + 86c: 0f c0 rjmp .+30 ; 0x88c + +0000086e : + 86e: dc 01 movw r26, r24 + 870: 86 2f mov r24, r22 + +00000872 : + 872: e8 2f mov r30, r24 + 874: f9 99 sbic 0x1f, 1 ; 31 + 876: fe cf rjmp .-4 ; 0x874 + 878: 05 c0 rjmp .+10 ; 0x884 + 87a: e1 bd out 0x21, r30 ; 33 + 87c: f8 9a sbi 0x1f, 0 ; 31 + 87e: e3 95 inc r30 + 880: 00 b4 in r0, 0x20 ; 32 + 882: 0d 92 st X+, r0 + 884: 41 50 subi r20, 0x01 ; 1 + 886: c8 f7 brcc .-14 ; 0x87a + 888: 08 95 ret + +0000088a : + 88a: 26 2f mov r18, r22 + +0000088c : + 88c: f9 99 sbic 0x1f, 1 ; 31 + 88e: fe cf rjmp .-4 ; 0x88c + 890: 1f ba out 0x1f, r1 ; 31 + 892: 81 bd out 0x21, r24 ; 33 + 894: 20 bd out 0x20, r18 ; 32 + 896: 0f b6 in r0, 0x3f ; 63 + 898: f8 94 cli + 89a: fa 9a sbi 0x1f, 2 ; 31 + 89c: f9 9a sbi 0x1f, 1 ; 31 + 89e: 0f be out 0x3f, r0 ; 63 + 8a0: 01 96 adiw r24, 0x01 ; 1 + 8a2: 08 95 ret + +000008a4 <_exit>: + 8a4: f8 94 cli + +000008a6 <__stop_program>: + 8a6: ff cf rjmp .-2 ; 0x8a6 <__stop_program> diff --git a/fw_dc22_attiny88/Debug/wp_dc22_attiny88.map b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.map new file mode 100644 index 0000000..f22afa5 --- /dev/null +++ b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.map @@ -0,0 +1,643 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + src/led.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + src/adc.o (__do_clear_bss) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + src/main.o (eeprom_read_byte) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + src/main.o (eeprom_read_word) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + src/main.o (eeprom_write_word) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) (eeprom_read_blraw) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) (eeprom_write_byte) + +Allocating common symbols +Common symbol size file + +comm_timeout 0x1 src/main.o +adc_reread 0x1 src/adc.o +rgbled_pwm_rt 0x4 src/led.o +adc_result 0x12 src/adc.o +rgbled_pwm_lf 0x4 src/led.o +adc_busy 0x1 src/adc.o +rgbled_light_level 0x4 src/main.o +comm_data 0x4 src/main.o +adc_read_mode 0x1 src/adc.o +comm_data_idx 0x1 src/main.o +timer1_mode 0x1 src/led.o + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .text 0x00000000 0x0 src/adc.o + .data 0x00000000 0x0 src/adc.o + .bss 0x00000000 0x0 src/adc.o + .text 0x00000000 0x0 src/led.o + .data 0x00000000 0x0 src/led.o + .bss 0x00000000 0x0 src/led.o + .text 0x00000000 0x0 src/main.o + .data 0x00000000 0x0 src/main.o + .bss 0x00000000 0x0 src/main.o + .avr.prop 0x00000000 0x16 src/main.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00002000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o +LOAD src/adc.o +LOAD src/led.o +LOAD src/main.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a +END GROUP + 0x00002000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x2000 + 0x0000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x00010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x8a8 + *(.vectors) + .vectors 0x00000000 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_sw_table.pegleg_cmd + 0x00000028 0x34 src/main.o + 0x0000005c . = ALIGN (0x2) + 0x0000005c __trampolines_start = . + *(.trampolines) + .trampolines 0x0000005c 0x0 linker stubs + *(.trampolines*) + 0x0000005c __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000005c . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000005c __ctors_start = . + *(.ctors) + 0x0000005c __ctors_end = . + 0x0000005c __dtors_start = . + *(.dtors) + 0x0000005c __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000005c 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x0000005c __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000005c 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000068 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + 0x00000068 __do_copy_data + .init4 0x0000007e 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + 0x0000007e __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000008e 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + *(.init9) + *(.text) + .text 0x00000092 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x00000092 __vector_1 + 0x00000092 __bad_interrupt + 0x00000092 __vector_6 + 0x00000092 __vector_3 + 0x00000092 __vector_11 + 0x00000092 __vector_13 + 0x00000092 __vector_17 + 0x00000092 __vector_7 + 0x00000092 __vector_5 + 0x00000092 __vector_4 + 0x00000092 __vector_9 + 0x00000092 __vector_2 + 0x00000092 __vector_15 + 0x00000092 __vector_8 + 0x00000092 __vector_14 + 0x00000092 __vector_10 + 0x00000092 __vector_18 + 0x00000094 . = ALIGN (0x2) + *(.text.*) + .text.adc_init + 0x00000094 0x24 src/adc.o + 0x00000094 adc_init + .text.adc_channel + 0x000000b8 0x44 src/adc.o + 0x000000b8 adc_channel + .text.adc_start + 0x000000fc 0x3c src/adc.o + 0x000000fc adc_start + .text.__vector_16 + 0x00000138 0xba src/adc.o + 0x00000138 __vector_16 + .text.rgbled_io_init + 0x000001f2 0x1a src/led.o + 0x000001f2 rgbled_io_init + .text.rgbled_update + 0x0000020c 0x7e src/led.o + 0x0000020c rgbled_update + .text.rgbled_sensor_init + 0x0000028a 0x60 src/led.o + 0x0000028a rgbled_sensor_init + .text.rgbled_sensor_sensitivity + 0x000002ea 0x14 src/led.o + 0x000002ea rgbled_sensor_sensitivity + .text.rgbled_sensor_read_idx + 0x000002fe 0x8 src/led.o + 0x000002fe rgbled_sensor_read_idx + .text.rgbled_sensor_read + 0x00000306 0x88 src/led.o + 0x00000306 rgbled_sensor_read + .text.pegleg_cmd + 0x0000038e 0x102 src/main.o + .text.i2c_slave_tx.constprop.4 + 0x00000490 0x18 src/main.o + .text.pegleg_data_tx + 0x000004a8 0x70 src/main.o + .text.tempsensor_process + 0x00000518 0x1a src/main.o + 0x00000518 tempsensor_process + .text.tempsensor_read + 0x00000532 0x38 src/main.o + 0x00000532 tempsensor_read + .text.startup.main + 0x0000056a 0x126 src/main.o + 0x0000056a main + .text.__vector_19 + 0x00000690 0xde src/main.o + 0x00000690 __vector_19 + .text.__vector_12 + 0x0000076e 0xe4 src/main.o + 0x0000076e __vector_12 + .text.avr-libc + 0x00000852 0xe C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + 0x00000852 eeprom_read_byte + .text.avr-libc + 0x00000860 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + 0x00000860 eeprom_read_word + .text.avr-libc + 0x00000868 0x6 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + 0x00000868 eeprom_write_word + .text.avr-libc + 0x0000086e 0x1c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + 0x0000086e eeprom_read_block + 0x00000872 eeprom_read_blraw + .text.avr-libc + 0x0000088a 0x1a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + 0x0000088a eeprom_write_byte + 0x0000088c eeprom_write_r18 + 0x000008a4 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000008a4 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + 0x000008a4 _exit + 0x000008a4 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000008a4 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + *(.fini0) + 0x000008a8 _etext = . + +.data 0x00800100 0x4 load address 0x000008a8 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.rgbled_sensitivity + 0x00800100 0x4 src/led.o + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.r*) + 0x00800104 . = ALIGN (0x2) + 0x00800104 _edata = . + 0x00800104 PROVIDE (__data_end, .) + +.bss 0x00800104 0x30 + 0x00800104 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.adc_averages + 0x00800104 0x1 src/adc.o + .bss.rgbled_read_sel + 0x00800105 0x1 src/led.o + .bss.temp_offset + 0x00800106 0x2 src/main.o + .bss.temperature + 0x00800108 0x1 src/main.o + .bss.pirate_sleep_mode + 0x00800109 0x1 src/main.o + .bss.tim0_centi + 0x0080010a 0x1 src/main.o + .bss.tim0_milli + 0x0080010b 0x1 src/main.o + *(COMMON) + COMMON 0x0080010c 0x15 src/adc.o + 0x0080010c adc_reread + 0x0080010d adc_result + 0x0080011f adc_busy + 0x00800120 adc_read_mode + COMMON 0x00800121 0x9 src/led.o + 0x00800121 rgbled_pwm_rt + 0x00800125 rgbled_pwm_lf + 0x00800129 timer1_mode + COMMON 0x0080012a 0xa src/main.o + 0x0080012a comm_timeout + 0x0080012b rgbled_light_level + 0x0080012f comm_data + 0x00800133 comm_data_idx + 0x00800134 PROVIDE (__bss_end, .) + 0x000008a8 __data_load_start = LOADADDR (.data) + 0x000008ac __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800134 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800134 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 src/adc.o + 0x31 (size before relaxing) + .comment 0x00000030 0x31 src/led.o + .comment 0x00000030 0x31 src/main.o + +.note.gnu.avr.deviceinfo + 0x00000000 0x3c + .note.gnu.avr.deviceinfo + 0x00000000 0x3c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x178 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x38 src/adc.o + .debug_aranges + 0x00000038 0x48 src/led.o + .debug_aranges + 0x00000080 0x58 src/main.o + .debug_aranges + 0x000000d8 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_aranges + 0x000000f8 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_aranges + 0x00000118 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_aranges + 0x00000138 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_aranges + 0x00000158 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x1493 + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x576 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_info 0x00000576 0x1b6 src/adc.o + .debug_info 0x0000072c 0x360 src/led.o + .debug_info 0x00000a8c 0x6af src/main.o + .debug_info 0x0000113b 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_info 0x000011e6 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_info 0x00001291 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_info 0x0000133c 0xac C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_info 0x000013e8 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_abbrev 0x00000000 0xb12 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x52b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_abbrev 0x0000052b 0x105 src/adc.o + .debug_abbrev 0x00000630 0x1f6 src/led.o + .debug_abbrev 0x00000826 0x288 src/main.o + .debug_abbrev 0x00000aae 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_abbrev 0x00000ac2 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_abbrev 0x00000ad6 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_abbrev 0x00000aea 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_abbrev 0x00000afe 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_line 0x00000000 0xe6a + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x10f C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_line 0x0000010f 0x1d0 src/adc.o + .debug_line 0x000002df 0x2bb src/led.o + .debug_line 0x0000059a 0x669 src/main.o + .debug_line 0x00000c03 0x74 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_line 0x00000c77 0x61 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_line 0x00000cd8 0x5b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_line 0x00000d33 0x9f C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_line 0x00000dd2 0x98 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_frame 0x00000000 0x230 + *(.debug_frame) + .debug_frame 0x00000000 0x8c src/adc.o + .debug_frame 0x0000008c 0x80 src/led.o + .debug_frame 0x0000010c 0x124 src/main.o + +.debug_str 0x00000000 0x6f2 + *(.debug_str) + .debug_str 0x00000000 0x1d9 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_str 0x000001d9 0x1eb src/adc.o + 0x22e (size before relaxing) + .debug_str 0x000003c4 0x14b src/led.o + 0x326 (size before relaxing) + .debug_str 0x0000050f 0x1e3 src/main.o + 0x4a4 (size before relaxing) + +.debug_loc 0x00000000 0x4a9 + *(.debug_loc) + .debug_loc 0x00000000 0xf6 src/adc.o + .debug_loc 0x000000f6 0xf3 src/led.o + .debug_loc 0x000001e9 0x2c0 src/main.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges 0x00000000 0xa8 + *(.debug_ranges) + .debug_ranges 0x00000000 0x28 src/adc.o + .debug_ranges 0x00000028 0x38 src/led.o + .debug_ranges 0x00000060 0x48 src/main.o + +.debug_macro + *(.debug_macro) +OUTPUT(wp_dc22_attiny88.elf elf32-avr) +LOAD linker stubs diff --git a/fw_dc22_attiny88/Debug/wp_dc22_attiny88.srec b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.srec new file mode 100644 index 0000000..77e6966 --- /dev/null +++ b/fw_dc22_attiny88/Debug/wp_dc22_attiny88.srec @@ -0,0 +1,142 @@ +S018000077705F646332325F617474696E7938382E7372656333 +S11300002DC047C046C045C044C043C042C041C0E3 +S113001040C03FC03EC03DC0AAC33BC03AC039C087 +S11300208BC037C036C034C3BDC1C0C1CAC1DBC177 +S1130030F8C116C228C227C2F9C103C224C223C20E +S113004022C221C220C209C20BC20AC21CC21BC2E4 +S11300501AC219C218C217C216C207C211241FBE7F +S1130060CFEFD2E0DEBFCDBF11E0A0E0B1E0E8EA1F +S1130070F8E002C005900D92A430B107D9F721E051 +S1130080A4E0B1E001C01D92A433B207E1F76DD240 +S113009009C4B6CFE4E6F0E080818E7F8083EAE78E +S11300A0F0E08FED8083ACE7B0E08C918F7D8C9392 +S11300B08081886880830895282F803188F4909106 +S11300C07C00907F982B90937C00883030F481E002 +S11300D001C0880F2A95EAF701C080E080937E0072 +S11300E0613021F480917C00806405C0623029F481 +S11300F080917C008F7B80937C00089590917A009E +S1130100292F207496FD15C080930C01662311F0ED +S1130110982F01C090E09093040190917C009F700F +S1130120906890931F0190917A00906490937A0064 +S113013001C021E0822F08951F920F920FB60F92F3 +S113014011242F934F935F938F939F93AF93BF93F8 +S1130150EF93FF93E0917C00EF7020910401222340 +S1130160D1F080910C012817B1F0E930A0F4AE2F42 +S1130170B0E0AA0FBB1FA35FBE4F4D915C911197D6 +S11301808091780090917900840F951F96958795BA +S113019011969C938E9380910C01882359F0809141 +S11301A00C01815080930C0180917A0080648093CB +S11301B07A0011C021110DC0E93058F4F0E08091AB +S11301C0780090917900EE0FFF1FE35FFE4F91835B +S11301D0808310921F01FF91EF91BF91AF919F9186 +S11301E08F915F914F912F910F900FBE0F901F90A1 +S11301F018958AB1806F8AB987B18F6087B98BB13E +S1130200806F8BB988B18F6088B90895CF93DF93DD +S11302108BB1806F8BB988B18F6088B9C8E8D0E0A2 +S11302208EEF8883AAE8B0E08C938AEF90E09093F5 +S11302308500809384003BB124E02D0D81E090E0A3 +S1130240AC0101C0440F2A95EAF7242F20952323FB +S11302502BB928B10D2C01C0880F0A94EAF78095B8 +S1130260822388B9ED2DF0E0EB5DFE4F8BEF90819A +S1130270282F291B2883ED2DF0E0EF5DFE4F9081A0 +S1130280891B8C93DF91CF9108959BB1906F9BB99B +S1130290E0E8F0E090819F70908397B1907F97B9E8 +S11302A095B7906195BF47B121E030E0B90102C034 +S11302B0660F771F8A95E2F7CB01462B47B998B1B1 +S11302C0907F98B92A9A98B1982B98B92A9878E08F +S11302D07A95F1F797B18095982397B998B18923C6 +S11302E088B985B78F7E85BF0895843038F4662336 +S11302F029F0E82FF0E0E050FF4F60830895837009 +S113030080930501089580910501E82FF0E0E05005 +S1130310FF4F9081911101C091E02E2DE11003C097 +S113032061E08FE012C0213019F460E080E018C071 +S1130330223061F490911F01992319F0EE24E39483 +S11303400895A3DF6FEF80910501B6CE4E2D50E0E6 +S1130350892F90E002964817590719F461E083E069 +S1130360CDCE8417950794F42150E22E80911F017D +S113037081110CC06FEF8FE09FDE3BDF8EEF809327 +S1130380800084B1866084B91092200108958F2D75 +S11303904F2D50E04A31510508F075C0FA01EC5E6A +S11303A0FF4F0994F12C10922A0108958091330192 +S11303B0882309F46CC0F090300183E0809333010A +S11303C050C0E0912F01E43020F4F0E0EB5DFE4FEB +S11303D006C0E83008F044C0F0E0E35EFE4F8091D0 +S11303E0300180833DC080913301882309F44FC0DC +S11303F080911D0190911E01892B09F444C06091E4 +S11304001D0170911E0180913001681B710987FDE7 +S1130410739570930701609306018EE390E024D2F4 +S11304201FC0809133018230D8F41DC08091200117 +S1130430811117C010922001E12C88E080932001E3 +S113044010C08091200181110CC010922001E12C78 +S113045080912F0154DF81E0F1CF84E08093090182 +S1130460F12C10922A0180E00895809133018823B1 +S113047071F080912F01843098F7609130016623E8 +S113048079F333DFEDCFF12C10922A0181E0089546 +S11304908093BB00ECEBF0E08081806880838081F6 +S11304A08F7B808380E008958F2D8830B9F0893068 +S11304B0C1F0843051F580912F01803428F490E00C +S11304C0C8D1E6DF81E006C08091BC008F7B8093B9 +S11304D0BC008FEFF12C10922A010895809108013D +S11304E00EC0E0912F01E370F0E0EE0FFF1FE35F19 +S11304F0FE4F808191819695879596958795C8DF63 +S1130500F12C10922A0181E008958091BC008F7B28 +S11305108093BC008FEF089580911D0190911E017E +S113052090910601891B982F959595959595891B12 +S113053008958E2DE11003C062E088E0BDCD8330C4 +S113054019F461E084E0DACD843070F08150E82E53 +S113055080911F01811108C061E08FE0ADDD109230 +S11305602001DADF80930801089580E88093610018 +S11305701092610082B3806F82BB1DB881E084B9A0 +S113058017B81AB8CFEFCEB9DEEFD5B9C8B9CBB921 +S113059030DE22E02093B8008CEF8093B90086EE21 +S11305A08093BA001092BD0085E48093BC008091D2 +S11305B064008A7F809364009BEF95BD8DE387BDC3 +S11305C016BC20936E00809164008C7F809364003D +S11305D0C0938900C0938800C0938A00109285005C +S11305E010928400D093800089E18093810010925E +S11305F0820080918000809329019093860084B1C9 +S1130600866084B910926F0045DD629923C042DD93 +S11306102FEF80E792E0215080409040E1F700C046 +S11306200000629917C0789488E08093200181DFEC +S113063080911F018111FCCF60911D0170911E01F9 +S113064070930701609306018EE390E00DD1109240 +S113065020010DC08EE390E003D1813322E09207A4 +S113066014F081E191E0909307018093060183B730 +S1130670897F90910901892B83BF10920901789495 +S113068083B7816083BF889583B78E7F83BFEFCFA5 +S11306901F920F920FB60F9211242F933F934F93F3 +S11306A05F936F937F938F939F93AF93BF93EF93D6 +S11306B0FF938091B900887F803AF1F160F4883625 +S11306C009F43FC028F4882391F18036D1F134C075 +S11306D0803839F031C0883B41F170F5883A29F10E +S11306E02BC08091BB00F1100FC0982F92959F7082 +S11306F0F92E982F9F7090932F011092330110922E +S11307002A0187FF1EC00AC0E0913301EF5FE37046 +S1130710E0933301F0E0E15DFE4F808338DE88230F +S113072081F08091BC008F7B0AC0BEDE0AC080913C +S1130730BC0080698093BC008091BC00806480937D +S1130740BC008091BC0080688093BC00FF91EF9155 +S1130750BF91AF919F918F917F916F915F914F91D5 +S11307603F912F910F900FBE0F901F9018951F92DD +S11307700F920FB60F9211242F933F934F935F93D1 +S11307806F937F938F939F93AF93BF93EF93FF9355 +S113079080910B018F5F883C18F480930B010CC08F +S11307A010920B0180910A018F5F843618F48093B4 +S11307B00A0102C010920A0187B58D3311F08DE34E +S11307C001C08EE387BD80912001882371F0809160 +S11307D02001813021F0883019F4ABDE01C093DDB3 +S11307E08E2D8F3F11F08F5FE82E80912001813094 +S11307F041F081E08D0D833010F4D82E01C0D12C4E +S113080005DDFF20A1F080912A018F5F80932A01EA +S1130810823368F0F12C10922A018091BC008F7B06 +S11308208093BC008091BC0080648093BC0086B53A +S1130830FF91EF91BF91AF919F918F917F916F91B4 +S11308405F914F913F912F910F900FBE0F901F908A +S11308501895F999FECF81BDF89A992780B5089526 +S1130860A8E1B0E042E005C010D0272F0FC0DC01A2 +S1130870862FE82FF999FECF05C0E1BDF89AE395DC +S113088000B40D924150C8F70895262FF999FECF70 +S11308901FBA81BD20BD0FB6F894FA9AF99A0FBE1B +S10B08A001960895F894FFCFBE +S10708A80101010144 +S9030000FC diff --git a/fw_dc22_attiny88/Release/Makefile b/fw_dc22_attiny88/Release/Makefile new file mode 100644 index 0000000..9cd9882 --- /dev/null +++ b/fw_dc22_attiny88/Release/Makefile @@ -0,0 +1,152 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := \ +../src + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../src/adc.c \ +../src/led.c \ +../src/main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +src/adc.o \ +src/led.o \ +src/main.o + +OBJS_AS_ARGS += \ +src/adc.o \ +src/led.o \ +src/main.o + +C_DEPS += \ +src/adc.d \ +src/led.d \ +src/main.d + +C_DEPS_AS_ARGS += \ +src/adc.d \ +src/led.d \ +src/main.d + +OUTPUT_FILE_PATH +=wp_dc22_attiny88.elf + +OUTPUT_FILE_PATH_AS_ARGS +=wp_dc22_attiny88.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler +src/adc.o: ../src/adc.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DNDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +src/led.o: ../src/led.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DNDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +src/main.o: ../src/main.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DNDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="wp_dc22_attiny88.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=attiny88 -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\gcc\dev\attiny88" + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "wp_dc22_attiny88.elf" "wp_dc22_attiny88.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "wp_dc22_attiny88.elf" "wp_dc22_attiny88.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "wp_dc22_attiny88.elf" > "wp_dc22_attiny88.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "wp_dc22_attiny88.elf" "wp_dc22_attiny88.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "wp_dc22_attiny88.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "wp_dc22_attiny88.elf" "wp_dc22_attiny88.a" "wp_dc22_attiny88.hex" "wp_dc22_attiny88.lss" "wp_dc22_attiny88.eep" "wp_dc22_attiny88.map" "wp_dc22_attiny88.srec" "wp_dc22_attiny88.usersignatures" + \ No newline at end of file diff --git a/fw_dc22_attiny88/Release/makedep.mk b/fw_dc22_attiny88/Release/makedep.mk new file mode 100644 index 0000000..089e3be --- /dev/null +++ b/fw_dc22_attiny88/Release/makedep.mk @@ -0,0 +1,10 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +src\adc.c + +src\led.c + +src\main.c + diff --git a/fw_dc22_attiny88/Release/src/adc.d b/fw_dc22_attiny88/Release/src/adc.d new file mode 100644 index 0000000..c7b1dde --- /dev/null +++ b/fw_dc22_attiny88/Release/src/adc.d @@ -0,0 +1,41 @@ +src/adc.d src/adc.o: ../src/adc.c ../src/adc.h ../src/config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h + +../src/adc.h: + +../src/config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: diff --git a/fw_dc22_attiny88/Release/src/adc.o b/fw_dc22_attiny88/Release/src/adc.o new file mode 100644 index 0000000000000000000000000000000000000000..87a84e37e140e3074c36cea5c261200231689701 GIT binary patch literal 2224 zcma)8-)|IE6h8X{+afw$f`UKd79?>&Guu_DL{V1(%L7U+_~StxraNP|$#%Dy9SALz zPFWNBK-ifbwxA)l&xF`M`GAS+gAYFV2lzM-Mxu#!Yx-)|@668KPB$@nlC$SK-#zy` zmwWHrGI!$C+mT3wghl8KZDvG+4-tKd!9#vQiu&mh`sLTAXU$)qvnszoXnNH@tjgU7 ztKK!I`uR22nqSCUmEL+PZDnY~c4o<*yY;;7&eFmlZOnVrSdb3ZqZ`z)Jj=aI>R@EU zLY1XaV=TbcOBU*T>$WpP2hs!P;@_xti9UNa(!7%1iQ)oKZ3_A09j~a9BPh4~mo9jN$W((|T)jgebPaP{8}h~0{D$kzOREBthZ$RZmyxbe|$@IjJ9>yz`Vo@*nxNNFMn>BPpS2dp;J71ngs|$M0EE!5>$R`cGe7+z`RZW>JX*!Cu zl9DUvs-cXP%Y+>xieg(+h`R#JXS@d<1OGJQGXei3;sBg^-tU8Op3CpWiviDfX(-^| zLfp>$jyCrwaGaaKct4}yxzFQpu3>%d7nkq@<2A(}^P%5^YmOl0-r<@kgg*uM0`q}B ze=36K^$E=D>)VYVSQfrLz~_L)Tn(7(XA$!uz8J!IeJF;SuMsZ?_$$OKaGuMU?~3Sk z16cIB4J`g$B$uZrO?3>>G}Lw>HNf+I|FCj8~ zO<2|!?A$v!SDKvEizb%%zwIeh@;8M)AHMN^hmFVB_QDy*ID!3J-E$c0h5uI_pLcg( zz8k_s-z$IUk4Sz3$9nuy3O&A$;r**YKxkm7gY5wGx5CDC znKtx)c@BF5F3y4nZr~Z`|0f6&+8m>TMEn87GMqnW*5LK=8_8=8>uE?B715N985H!2XDqO>ZKQHF&jPB-<$ou-RUCgOWwTS@4ffE z@69)FW-c5)(yu5ANm1xHRTxpmM|2axolZgrZK5Wc&Zpzkh0FQtfy;#}z*h=c;B3KX z-OJt2xjo-4E!x+Xvy-=%zO}FBrk73I%w42(E<^kB?RIzlgl*d2D70{>q0{md+k0B9 zwzeIGj(mL=Eo2*NZ+MDn>yx%@;rH$p+xD;Qzp`vjbo6X*?wFJwb7HFbYVQ8by&0c% zD{sbc73`%I+no3^VNTBG%?q;y>y8<;<_GevcCTH)UZ)z)Zkfhz-z)t)1`2b?nJaXD zK9`@{0XsKlpR<(WY(8zxwap?rh21aSxqklQywA$?Qt?!qva-}u>LxJhvnCVi9FfmT z&k#w!IWf~n3p2LX{mTYg2-??eT4?Q6iUB(fv=zui_DxiJ(Ei&EpGAxDWnNDUN4x#@ zRF7$UJ{#Qp-g>1Nv?sA5v)NkjEw=i9)i`Scwd2dExk!uGmeaX3W%8E-nZkxoxeq)` zg$52D+}qM|;GJXo9(^cm=mSUJ)=$Lak>Sx`IHtd>?biDAzE^hjZg1J8?bLeZvv*tf z40!3`syn8xnGhnCJnk^KO6%cyz3hFsx&in#7k?J`4Hw^9#ta^=YPeQikCfK&*HUwu!tH75u!z z*U?9?ychS=NPnzORqB+^bi*7sZcBxHo_l^-Bo?$Oh0$M9@JFxmBQ73E{)C0T?c2MAcwyby+cqX23 zVWd(GJ0VX&YX#=n_CC$t(prgmW@UaYu*`SnvavMd+?ER50{eo%hhX_T;ens~>=6F< zVV$1g=RSL(-sf?F@PCW*`OH}P9$DUm%6_=6%9}t=Ksle!kL#*iaDfD%?7sv%3YGOE zz}zSMlZ-_jgE8M6Bm?!fFoI~Q@u(3Tf;EyQJ1UV88Z$_9p1#J6L+4`ulp zzpnr+zbgDE;~0;r4t3Z20XzVeBKPGvb=ULZfZE~Xdi*Dp^*#o6*Xsh=2%i*LZwwB1 zy)M+_cZ%!Ph#2?x71UjCKM0?v6j|>JINbG4q8_j3diac$`@0M5t~Ushg-?pCHxGxq z-YDw%5afFNr{);f{~5|_141NZ>yb`aABZ2y&twynd*yE;pSipTKzbJezbpbS;oqDS2vq<8 literal 0 HcmV?d00001 diff --git a/fw_dc22_attiny88/Release/src/main.d b/fw_dc22_attiny88/Release/src/main.d new file mode 100644 index 0000000..4b23a97 --- /dev/null +++ b/fw_dc22_attiny88/Release/src/main.d @@ -0,0 +1,72 @@ +src/main.d src/main.o: ../src/main.c ../src/config.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sleep.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + ../src/i2c.h ../src/timer.h ../src/led.h ../src/adc.h \ + ../src/i2c_interrupt.h + +../src/config.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATtiny_DFP\1.3.172\include/avr/iotn88.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\eeprom.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sleep.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +../src/i2c.h: + +../src/timer.h: + +../src/led.h: + +../src/adc.h: + +../src/i2c_interrupt.h: diff --git a/fw_dc22_attiny88/Release/src/main.o b/fw_dc22_attiny88/Release/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..28f8dd26f2f196dda4e512ddae1c8dae2f147afe GIT binary patch literal 7080 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 E00cc500000 literal 0 HcmV?d00001 diff --git a/fw_dc22_attiny88/Release/wp_dc22_attiny88.hex b/fw_dc22_attiny88/Release/wp_dc22_attiny88.hex new file mode 100644 index 0000000..9e9ed19 --- /dev/null +++ b/fw_dc22_attiny88/Release/wp_dc22_attiny88.hex @@ -0,0 +1,141 @@ +:100000002DC047C046C045C044C043C042C041C0E7 +:1000100040C03FC03EC03DC0AAC33BC03AC039C08B +:100020008BC037C036C034C3BDC1C0C1CAC1DBC17B +:10003000F8C116C228C227C2F9C103C224C223C212 +:1000400022C221C220C209C20BC20AC21CC21BC2E8 +:100050001AC219C218C217C216C207C211241FBE83 +:10006000CFEFD2E0DEBFCDBF11E0A0E0B1E0E8EA23 +:10007000F8E002C005900D92A430B107D9F721E055 +:10008000A4E0B1E001C01D92A433B207E1F76DD244 +:1000900009C4B6CFE4E6F0E080818E7F8083EAE792 +:1000A000F0E08FED8083ACE7B0E08C918F7D8C9396 +:1000B0008081886880830895282F803188F490910A +:1000C0007C00907F982B90937C00883030F481E006 +:1000D00001C0880F2A95EAF701C080E080937E0076 +:1000E000613021F480917C00806405C0623029F485 +:1000F00080917C008F7B80937C00089590917A00A2 +:10010000292F207496FD15C080930C01662311F0F1 +:10011000982F01C090E09093040190917C009F7013 +:10012000906890931F0190917A00906490937A0068 +:1001300001C021E0822F08951F920F920FB60F92F7 +:1001400011242F934F935F938F939F93AF93BF93FC +:10015000EF93FF93E0917C00EF7020910401222344 +:10016000D1F080910C012817B1F0E930A0F4AE2F46 +:10017000B0E0AA0FBB1FA35FBE4F4D915C911197DA +:100180008091780090917900840F951F96958795BE +:1001900011969C938E9380910C01882359F0809145 +:1001A0000C01815080930C0180917A0080648093CF +:1001B0007A0011C021110DC0E93058F4F0E08091AF +:1001C000780090917900EE0FFF1FE35FFE4F91835F +:1001D000808310921F01FF91EF91BF91AF919F918A +:1001E0008F915F914F912F910F900FBE0F901F90A5 +:1001F00018958AB1806F8AB987B18F6087B98BB142 +:10020000806F8BB988B18F6088B90895CF93DF93E1 +:100210008BB1806F8BB988B18F6088B9C8E8D0E0A6 +:100220008EEF8883AAE8B0E08C938AEF90E09093F9 +:100230008500809384003BB124E02D0D81E090E0A7 +:10024000AC0101C0440F2A95EAF7242F20952323FF +:100250002BB928B10D2C01C0880F0A94EAF78095BC +:10026000822388B9ED2DF0E0EB5DFE4F8BEF90819E +:10027000282F291B2883ED2DF0E0EF5DFE4F9081A4 +:10028000891B8C93DF91CF9108959BB1906F9BB99F +:10029000E0E8F0E090819F70908397B1907F97B9EC +:1002A00095B7906195BF47B121E030E0B90102C038 +:1002B000660F771F8A95E2F7CB01462B47B998B1B5 +:1002C000907F98B92A9A98B1982B98B92A9878E093 +:1002D0007A95F1F797B18095982397B998B18923CA +:1002E00088B985B78F7E85BF0895843038F466233A +:1002F00029F0E82FF0E0E050FF4F6083089583700D +:1003000080930501089580910501E82FF0E0E05009 +:10031000FF4F9081911101C091E02E2DE11003C09B +:1003200061E08FE012C0213019F460E080E018C075 +:10033000223061F490911F01992319F0EE24E39487 +:100340000895A3DF6FEF80910501B6CE4E2D50E0EA +:10035000892F90E002964817590719F461E083E06D +:10036000CDCE8417950794F42150E22E80911F0181 +:1003700081110CC06FEF8FE09FDE3BDF8EEF80932B +:10038000800084B1866084B91092200108958F2D79 +:100390004F2D50E04A31510508F075C0FA01EC5E6E +:1003A000FF4F0994F12C10922A0108958091330196 +:1003B000882309F46CC0F090300183E0809333010E +:1003C00050C0E0912F01E43020F4F0E0EB5DFE4FEF +:1003D00006C0E83008F044C0F0E0E35EFE4F8091D4 +:1003E000300180833DC080913301882309F44FC0E0 +:1003F00080911D0190911E01892B09F444C06091E8 +:100400001D0170911E0180913001681B710987FDEB +:10041000739570930701609306018EE390E024D2F8 +:100420001FC0809133018230D8F41DC0809120011B +:10043000811117C010922001E12C88E080932001E7 +:1004400010C08091200181110CC010922001E12C7C +:1004500080912F0154DF81E0F1CF84E08093090186 +:10046000F12C10922A0180E00895809133018823B5 +:1004700071F080912F01843098F7609130016623EC +:1004800079F333DFEDCFF12C10922A0181E008954A +:100490008093BB00ECEBF0E08081806880838081FA +:1004A0008F7B808380E008958F2D8830B9F089306C +:1004B000C1F0843051F580912F01803428F490E010 +:1004C000C8D1E6DF81E006C08091BC008F7B8093BD +:1004D000BC008FEFF12C10922A0108958091080141 +:1004E0000EC0E0912F01E370F0E0EE0FFF1FE35F1D +:1004F000FE4F808191819695879596958795C8DF67 +:10050000F12C10922A0181E008958091BC008F7B2C +:100510008093BC008FEF089580911D0190911E0182 +:1005200090910601891B982F959595959595891B16 +:1005300008958E2DE11003C062E088E0BDCD8330C8 +:1005400019F461E084E0DACD843070F08150E82E57 +:1005500080911F01811108C061E08FE0ADDD109234 +:100560002001DADF80930801089580E8809361001C +:100570001092610082B3806F82BB1DB881E084B9A4 +:1005800017B81AB8CFEFCEB9DEEFD5B9C8B9CBB925 +:1005900030DE22E02093B8008CEF8093B90086EE25 +:1005A0008093BA001092BD0085E48093BC008091D6 +:1005B00064008A7F809364009BEF95BD8DE387BDC7 +:1005C00016BC20936E00809164008C7F8093640041 +:1005D000C0938900C0938800C0938A001092850060 +:1005E00010928400D093800089E180938100109262 +:1005F000820080918000809329019093860084B1CD +:10060000866084B910926F0045DD629923C042DD97 +:100610002FEF80E792E0215080409040E1F700C04A +:100620000000629917C0789488E08093200181DFF0 +:1006300080911F018111FCCF60911D0170911E01FD +:1006400070930701609306018EE390E00DD1109244 +:1006500020010DC08EE390E003D1813322E09207A8 +:1006600014F081E191E0909307018093060183B734 +:10067000897F90910901892B83BF10920901789499 +:1006800083B7816083BF889583B78E7F83BFEFCFA9 +:100690001F920F920FB60F9211242F933F934F93F7 +:1006A0005F936F937F938F939F93AF93BF93EF93DA +:1006B000FF938091B900887F803AF1F160F4883629 +:1006C00009F43FC028F4882391F18036D1F134C079 +:1006D000803839F031C0883B41F170F5883A29F112 +:1006E0002BC08091BB00F1100FC0982F92959F7086 +:1006F000F92E982F9F7090932F0110923301109232 +:100700002A0187FF1EC00AC0E0913301EF5FE3704A +:10071000E0933301F0E0E15DFE4F808338DE882313 +:1007200081F08091BC008F7B0AC0BEDE0AC0809140 +:10073000BC0080698093BC008091BC008064809381 +:10074000BC008091BC0080688093BC00FF91EF9159 +:10075000BF91AF919F918F917F916F915F914F91D9 +:100760003F912F910F900FBE0F901F9018951F92E1 +:100770000F920FB60F9211242F933F934F935F93D5 +:100780006F937F938F939F93AF93BF93EF93FF9359 +:1007900080910B018F5F883C18F480930B010CC093 +:1007A00010920B0180910A018F5F843618F48093B8 +:1007B0000A0102C010920A0187B58D3311F08DE352 +:1007C00001C08EE387BD80912001882371F0809164 +:1007D0002001813021F0883019F4ABDE01C093DDB7 +:1007E0008E2D8F3F11F08F5FE82E80912001813098 +:1007F00041F081E08D0D833010F4D82E01C0D12C52 +:1008000005DDFF20A1F080912A018F5F80932A01EE +:10081000823368F0F12C10922A018091BC008F7B0A +:100820008093BC008091BC0080648093BC0086B53E +:10083000FF91EF91BF91AF919F918F917F916F91B8 +:100840005F914F913F912F910F900FBE0F901F908E +:100850001895F999FECF81BDF89A992780B508952A +:10086000A8E1B0E042E005C010D0272F0FC0DC01A6 +:10087000862FE82FF999FECF05C0E1BDF89AE395E0 +:1008800000B40D924150C8F70895262FF999FECF74 +:100890001FBA81BD20BD0FB6F894FA9AF99A0FBE1F +:0808A00001960895F894FFCFC2 +:0408A8000101010148 +:00000001FF diff --git a/fw_dc22_attiny88/Release/wp_dc22_attiny88.lss b/fw_dc22_attiny88/Release/wp_dc22_attiny88.lss new file mode 100644 index 0000000..63d9d93 --- /dev/null +++ b/fw_dc22_attiny88/Release/wp_dc22_attiny88.lss @@ -0,0 +1,1060 @@ + +wp_dc22_attiny88.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000004 00800100 000008a8 0000093c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 000008a8 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000030 00800104 00800104 00000940 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000940 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 0000003c 00000000 00000000 00000970 2**2 + CONTENTS, READONLY + 5 .debug_aranges 000000a0 00000000 00000000 000009b0 2**3 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000008ce 00000000 00000000 00000a50 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 0000058f 00000000 00000000 0000131e 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000376 00000000 00000000 000018ad 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 000001d9 00000000 00000000 00001c23 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 2d c0 rjmp .+90 ; 0x5c <__ctors_end> + 2: 47 c0 rjmp .+142 ; 0x92 <__bad_interrupt> + 4: 46 c0 rjmp .+140 ; 0x92 <__bad_interrupt> + 6: 45 c0 rjmp .+138 ; 0x92 <__bad_interrupt> + 8: 44 c0 rjmp .+136 ; 0x92 <__bad_interrupt> + a: 43 c0 rjmp .+134 ; 0x92 <__bad_interrupt> + c: 42 c0 rjmp .+132 ; 0x92 <__bad_interrupt> + e: 41 c0 rjmp .+130 ; 0x92 <__bad_interrupt> + 10: 40 c0 rjmp .+128 ; 0x92 <__bad_interrupt> + 12: 3f c0 rjmp .+126 ; 0x92 <__bad_interrupt> + 14: 3e c0 rjmp .+124 ; 0x92 <__bad_interrupt> + 16: 3d c0 rjmp .+122 ; 0x92 <__bad_interrupt> + 18: aa c3 rjmp .+1876 ; 0x76e <__vector_12> + 1a: 3b c0 rjmp .+118 ; 0x92 <__bad_interrupt> + 1c: 3a c0 rjmp .+116 ; 0x92 <__bad_interrupt> + 1e: 39 c0 rjmp .+114 ; 0x92 <__bad_interrupt> + 20: 8b c0 rjmp .+278 ; 0x138 <__vector_16> + 22: 37 c0 rjmp .+110 ; 0x92 <__bad_interrupt> + 24: 36 c0 rjmp .+108 ; 0x92 <__bad_interrupt> + 26: 34 c3 rjmp .+1640 ; 0x690 <__vector_19> + 28: bd c1 rjmp .+890 ; 0x3a4 + 2a: c0 c1 rjmp .+896 ; 0x3ac + 2c: ca c1 rjmp .+916 ; 0x3c2 + 2e: db c1 rjmp .+950 ; 0x3e6 + 30: f8 c1 rjmp .+1008 ; 0x422 <__LOCK_REGION_LENGTH__+0x22> + 32: 16 c2 rjmp .+1068 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 34: 28 c2 rjmp .+1104 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 36: 27 c2 rjmp .+1102 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 38: f9 c1 rjmp .+1010 ; 0x42c <__LOCK_REGION_LENGTH__+0x2c> + 3a: 03 c2 rjmp .+1030 ; 0x442 <__LOCK_REGION_LENGTH__+0x42> + 3c: 24 c2 rjmp .+1096 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 3e: 23 c2 rjmp .+1094 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 40: 22 c2 rjmp .+1092 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 42: 21 c2 rjmp .+1090 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 44: 20 c2 rjmp .+1088 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 46: 09 c2 rjmp .+1042 ; 0x45a <__LOCK_REGION_LENGTH__+0x5a> + 48: 0b c2 rjmp .+1046 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 4a: 0a c2 rjmp .+1044 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 4c: 1c c2 rjmp .+1080 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 4e: 1b c2 rjmp .+1078 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 50: 1a c2 rjmp .+1076 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 52: 19 c2 rjmp .+1074 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 54: 18 c2 rjmp .+1072 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 56: 17 c2 rjmp .+1070 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 58: 16 c2 rjmp .+1068 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 5a: 07 c2 rjmp .+1038 ; 0x46a <__LOCK_REGION_LENGTH__+0x6a> + +0000005c <__ctors_end>: + 5c: 11 24 eor r1, r1 + 5e: 1f be out 0x3f, r1 ; 63 + 60: cf ef ldi r28, 0xFF ; 255 + 62: d2 e0 ldi r29, 0x02 ; 2 + 64: de bf out 0x3e, r29 ; 62 + 66: cd bf out 0x3d, r28 ; 61 + +00000068 <__do_copy_data>: + 68: 11 e0 ldi r17, 0x01 ; 1 + 6a: a0 e0 ldi r26, 0x00 ; 0 + 6c: b1 e0 ldi r27, 0x01 ; 1 + 6e: e8 ea ldi r30, 0xA8 ; 168 + 70: f8 e0 ldi r31, 0x08 ; 8 + 72: 02 c0 rjmp .+4 ; 0x78 <__do_copy_data+0x10> + 74: 05 90 lpm r0, Z+ + 76: 0d 92 st X+, r0 + 78: a4 30 cpi r26, 0x04 ; 4 + 7a: b1 07 cpc r27, r17 + 7c: d9 f7 brne .-10 ; 0x74 <__do_copy_data+0xc> + +0000007e <__do_clear_bss>: + 7e: 21 e0 ldi r18, 0x01 ; 1 + 80: a4 e0 ldi r26, 0x04 ; 4 + 82: b1 e0 ldi r27, 0x01 ; 1 + 84: 01 c0 rjmp .+2 ; 0x88 <.do_clear_bss_start> + +00000086 <.do_clear_bss_loop>: + 86: 1d 92 st X+, r1 + +00000088 <.do_clear_bss_start>: + 88: a4 33 cpi r26, 0x34 ; 52 + 8a: b2 07 cpc r27, r18 + 8c: e1 f7 brne .-8 ; 0x86 <.do_clear_bss_loop> + 8e: 6d d2 rcall .+1242 ; 0x56a
+ 90: 09 c4 rjmp .+2066 ; 0x8a4 <_exit> + +00000092 <__bad_interrupt>: + 92: b6 cf rjmp .-148 ; 0x0 <__vectors> + +00000094 : + 94: e4 e6 ldi r30, 0x64 ; 100 + 96: f0 e0 ldi r31, 0x00 ; 0 + 98: 80 81 ld r24, Z + 9a: 8e 7f andi r24, 0xFE ; 254 + 9c: 80 83 st Z, r24 + 9e: ea e7 ldi r30, 0x7A ; 122 + a0: f0 e0 ldi r31, 0x00 ; 0 + a2: 8f ed ldi r24, 0xDF ; 223 + a4: 80 83 st Z, r24 + a6: ac e7 ldi r26, 0x7C ; 124 + a8: b0 e0 ldi r27, 0x00 ; 0 + aa: 8c 91 ld r24, X + ac: 8f 7d andi r24, 0xDF ; 223 + ae: 8c 93 st X, r24 + b0: 80 81 ld r24, Z + b2: 88 68 ori r24, 0x88 ; 136 + b4: 80 83 st Z, r24 + b6: 08 95 ret + +000000b8 : + b8: 28 2f mov r18, r24 + ba: 80 31 cpi r24, 0x10 ; 16 + bc: 88 f4 brcc .+34 ; 0xe0 + be: 90 91 7c 00 lds r25, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + c2: 90 7f andi r25, 0xF0 ; 240 + c4: 98 2b or r25, r24 + c6: 90 93 7c 00 sts 0x007C, r25 ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + ca: 88 30 cpi r24, 0x08 ; 8 + cc: 30 f4 brcc .+12 ; 0xda + ce: 81 e0 ldi r24, 0x01 ; 1 + d0: 01 c0 rjmp .+2 ; 0xd4 + d2: 88 0f add r24, r24 + d4: 2a 95 dec r18 + d6: ea f7 brpl .-6 ; 0xd2 + d8: 01 c0 rjmp .+2 ; 0xdc + da: 80 e0 ldi r24, 0x00 ; 0 + dc: 80 93 7e 00 sts 0x007E, r24 ; 0x80007e <__EEPROM_REGION_LENGTH__+0x7f007e> + e0: 61 30 cpi r22, 0x01 ; 1 + e2: 21 f4 brne .+8 ; 0xec + e4: 80 91 7c 00 lds r24, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + e8: 80 64 ori r24, 0x40 ; 64 + ea: 05 c0 rjmp .+10 ; 0xf6 + ec: 62 30 cpi r22, 0x02 ; 2 + ee: 29 f4 brne .+10 ; 0xfa + f0: 80 91 7c 00 lds r24, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + f4: 8f 7b andi r24, 0xBF ; 191 + f6: 80 93 7c 00 sts 0x007C, r24 ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + fa: 08 95 ret + +000000fc : + fc: 90 91 7a 00 lds r25, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 100: 29 2f mov r18, r25 + 102: 20 74 andi r18, 0x40 ; 64 + 104: 96 fd sbrc r25, 6 + 106: 15 c0 rjmp .+42 ; 0x132 + 108: 80 93 0c 01 sts 0x010C, r24 ; 0x80010c + 10c: 66 23 and r22, r22 + 10e: 11 f0 breq .+4 ; 0x114 + 110: 98 2f mov r25, r24 + 112: 01 c0 rjmp .+2 ; 0x116 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: 90 93 04 01 sts 0x0104, r25 ; 0x800104 <__data_end> + 11a: 90 91 7c 00 lds r25, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + 11e: 9f 70 andi r25, 0x0F ; 15 + 120: 90 68 ori r25, 0x80 ; 128 + 122: 90 93 1f 01 sts 0x011F, r25 ; 0x80011f + 126: 90 91 7a 00 lds r25, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 12a: 90 64 ori r25, 0x40 ; 64 + 12c: 90 93 7a 00 sts 0x007A, r25 ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 130: 01 c0 rjmp .+2 ; 0x134 + 132: 21 e0 ldi r18, 0x01 ; 1 + 134: 82 2f mov r24, r18 + 136: 08 95 ret + +00000138 <__vector_16>: + 138: 1f 92 push r1 + 13a: 0f 92 push r0 + 13c: 0f b6 in r0, 0x3f ; 63 + 13e: 0f 92 push r0 + 140: 11 24 eor r1, r1 + 142: 2f 93 push r18 + 144: 4f 93 push r20 + 146: 5f 93 push r21 + 148: 8f 93 push r24 + 14a: 9f 93 push r25 + 14c: af 93 push r26 + 14e: bf 93 push r27 + 150: ef 93 push r30 + 152: ff 93 push r31 + 154: e0 91 7c 00 lds r30, 0x007C ; 0x80007c <__EEPROM_REGION_LENGTH__+0x7f007c> + 158: ef 70 andi r30, 0x0F ; 15 + 15a: 20 91 04 01 lds r18, 0x0104 ; 0x800104 <__data_end> + 15e: 22 23 and r18, r18 + 160: d1 f0 breq .+52 ; 0x196 <__vector_16+0x5e> + 162: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 166: 28 17 cp r18, r24 + 168: b1 f0 breq .+44 ; 0x196 <__vector_16+0x5e> + 16a: e9 30 cpi r30, 0x09 ; 9 + 16c: a0 f4 brcc .+40 ; 0x196 <__vector_16+0x5e> + 16e: ae 2f mov r26, r30 + 170: b0 e0 ldi r27, 0x00 ; 0 + 172: aa 0f add r26, r26 + 174: bb 1f adc r27, r27 + 176: a3 5f subi r26, 0xF3 ; 243 + 178: be 4f sbci r27, 0xFE ; 254 + 17a: 4d 91 ld r20, X+ + 17c: 5c 91 ld r21, X + 17e: 11 97 sbiw r26, 0x01 ; 1 + 180: 80 91 78 00 lds r24, 0x0078 ; 0x800078 <__EEPROM_REGION_LENGTH__+0x7f0078> + 184: 90 91 79 00 lds r25, 0x0079 ; 0x800079 <__EEPROM_REGION_LENGTH__+0x7f0079> + 188: 84 0f add r24, r20 + 18a: 95 1f adc r25, r21 + 18c: 96 95 lsr r25 + 18e: 87 95 ror r24 + 190: 11 96 adiw r26, 0x01 ; 1 + 192: 9c 93 st X, r25 + 194: 8e 93 st -X, r24 + 196: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 19a: 88 23 and r24, r24 + 19c: 59 f0 breq .+22 ; 0x1b4 <__vector_16+0x7c> + 19e: 80 91 0c 01 lds r24, 0x010C ; 0x80010c + 1a2: 81 50 subi r24, 0x01 ; 1 + 1a4: 80 93 0c 01 sts 0x010C, r24 ; 0x80010c + 1a8: 80 91 7a 00 lds r24, 0x007A ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 1ac: 80 64 ori r24, 0x40 ; 64 + 1ae: 80 93 7a 00 sts 0x007A, r24 ; 0x80007a <__EEPROM_REGION_LENGTH__+0x7f007a> + 1b2: 11 c0 rjmp .+34 ; 0x1d6 <__vector_16+0x9e> + 1b4: 21 11 cpse r18, r1 + 1b6: 0d c0 rjmp .+26 ; 0x1d2 <__vector_16+0x9a> + 1b8: e9 30 cpi r30, 0x09 ; 9 + 1ba: 58 f4 brcc .+22 ; 0x1d2 <__vector_16+0x9a> + 1bc: f0 e0 ldi r31, 0x00 ; 0 + 1be: 80 91 78 00 lds r24, 0x0078 ; 0x800078 <__EEPROM_REGION_LENGTH__+0x7f0078> + 1c2: 90 91 79 00 lds r25, 0x0079 ; 0x800079 <__EEPROM_REGION_LENGTH__+0x7f0079> + 1c6: ee 0f add r30, r30 + 1c8: ff 1f adc r31, r31 + 1ca: e3 5f subi r30, 0xF3 ; 243 + 1cc: fe 4f sbci r31, 0xFE ; 254 + 1ce: 91 83 std Z+1, r25 ; 0x01 + 1d0: 80 83 st Z, r24 + 1d2: 10 92 1f 01 sts 0x011F, r1 ; 0x80011f + 1d6: ff 91 pop r31 + 1d8: ef 91 pop r30 + 1da: bf 91 pop r27 + 1dc: af 91 pop r26 + 1de: 9f 91 pop r25 + 1e0: 8f 91 pop r24 + 1e2: 5f 91 pop r21 + 1e4: 4f 91 pop r20 + 1e6: 2f 91 pop r18 + 1e8: 0f 90 pop r0 + 1ea: 0f be out 0x3f, r0 ; 63 + 1ec: 0f 90 pop r0 + 1ee: 1f 90 pop r1 + 1f0: 18 95 reti + +000001f2 : + 1f2: 8a b1 in r24, 0x0a ; 10 + 1f4: 80 6f ori r24, 0xF0 ; 240 + 1f6: 8a b9 out 0x0a, r24 ; 10 + 1f8: 87 b1 in r24, 0x07 ; 7 + 1fa: 8f 60 ori r24, 0x0F ; 15 + 1fc: 87 b9 out 0x07, r24 ; 7 + 1fe: 8b b1 in r24, 0x0b ; 11 + 200: 80 6f ori r24, 0xF0 ; 240 + 202: 8b b9 out 0x0b, r24 ; 11 + 204: 88 b1 in r24, 0x08 ; 8 + 206: 8f 60 ori r24, 0x0F ; 15 + 208: 88 b9 out 0x08, r24 ; 8 + 20a: 08 95 ret + +0000020c : + 20c: cf 93 push r28 + 20e: df 93 push r29 + 210: 8b b1 in r24, 0x0b ; 11 + 212: 80 6f ori r24, 0xF0 ; 240 + 214: 8b b9 out 0x0b, r24 ; 11 + 216: 88 b1 in r24, 0x08 ; 8 + 218: 8f 60 ori r24, 0x0F ; 15 + 21a: 88 b9 out 0x08, r24 ; 8 + 21c: c8 e8 ldi r28, 0x88 ; 136 + 21e: d0 e0 ldi r29, 0x00 ; 0 + 220: 8e ef ldi r24, 0xFE ; 254 + 222: 88 83 st Y, r24 + 224: aa e8 ldi r26, 0x8A ; 138 + 226: b0 e0 ldi r27, 0x00 ; 0 + 228: 8c 93 st X, r24 + 22a: 8a ef ldi r24, 0xFA ; 250 + 22c: 90 e0 ldi r25, 0x00 ; 0 + 22e: 90 93 85 00 sts 0x0085, r25 ; 0x800085 <__EEPROM_REGION_LENGTH__+0x7f0085> + 232: 80 93 84 00 sts 0x0084, r24 ; 0x800084 <__EEPROM_REGION_LENGTH__+0x7f0084> + 236: 3b b1 in r19, 0x0b ; 11 + 238: 24 e0 ldi r18, 0x04 ; 4 + 23a: 2d 0d add r18, r13 + 23c: 81 e0 ldi r24, 0x01 ; 1 + 23e: 90 e0 ldi r25, 0x00 ; 0 + 240: ac 01 movw r20, r24 + 242: 01 c0 rjmp .+2 ; 0x246 + 244: 44 0f add r20, r20 + 246: 2a 95 dec r18 + 248: ea f7 brpl .-6 ; 0x244 + 24a: 24 2f mov r18, r20 + 24c: 20 95 com r18 + 24e: 23 23 and r18, r19 + 250: 2b b9 out 0x0b, r18 ; 11 + 252: 28 b1 in r18, 0x08 ; 8 + 254: 0d 2c mov r0, r13 + 256: 01 c0 rjmp .+2 ; 0x25a + 258: 88 0f add r24, r24 + 25a: 0a 94 dec r0 + 25c: ea f7 brpl .-6 ; 0x258 + 25e: 80 95 com r24 + 260: 82 23 and r24, r18 + 262: 88 b9 out 0x08, r24 ; 8 + 264: ed 2d mov r30, r13 + 266: f0 e0 ldi r31, 0x00 ; 0 + 268: eb 5d subi r30, 0xDB ; 219 + 26a: fe 4f sbci r31, 0xFE ; 254 + 26c: 8b ef ldi r24, 0xFB ; 251 + 26e: 90 81 ld r25, Z + 270: 28 2f mov r18, r24 + 272: 29 1b sub r18, r25 + 274: 28 83 st Y, r18 + 276: ed 2d mov r30, r13 + 278: f0 e0 ldi r31, 0x00 ; 0 + 27a: ef 5d subi r30, 0xDF ; 223 + 27c: fe 4f sbci r31, 0xFE ; 254 + 27e: 90 81 ld r25, Z + 280: 89 1b sub r24, r25 + 282: 8c 93 st X, r24 + 284: df 91 pop r29 + 286: cf 91 pop r28 + 288: 08 95 ret + +0000028a : + 28a: 9b b1 in r25, 0x0b ; 11 + 28c: 90 6f ori r25, 0xF0 ; 240 + 28e: 9b b9 out 0x0b, r25 ; 11 + 290: e0 e8 ldi r30, 0x80 ; 128 + 292: f0 e0 ldi r31, 0x00 ; 0 + 294: 90 81 ld r25, Z + 296: 9f 70 andi r25, 0x0F ; 15 + 298: 90 83 st Z, r25 + 29a: 97 b1 in r25, 0x07 ; 7 + 29c: 90 7f andi r25, 0xF0 ; 240 + 29e: 97 b9 out 0x07, r25 ; 7 + 2a0: 95 b7 in r25, 0x35 ; 53 + 2a2: 90 61 ori r25, 0x10 ; 16 + 2a4: 95 bf out 0x35, r25 ; 53 + 2a6: 47 b1 in r20, 0x07 ; 7 + 2a8: 21 e0 ldi r18, 0x01 ; 1 + 2aa: 30 e0 ldi r19, 0x00 ; 0 + 2ac: b9 01 movw r22, r18 + 2ae: 02 c0 rjmp .+4 ; 0x2b4 + 2b0: 66 0f add r22, r22 + 2b2: 77 1f adc r23, r23 + 2b4: 8a 95 dec r24 + 2b6: e2 f7 brpl .-8 ; 0x2b0 + 2b8: cb 01 movw r24, r22 + 2ba: 46 2b or r20, r22 + 2bc: 47 b9 out 0x07, r20 ; 7 + 2be: 98 b1 in r25, 0x08 ; 8 + 2c0: 90 7f andi r25, 0xF0 ; 240 + 2c2: 98 b9 out 0x08, r25 ; 8 + 2c4: 2a 9a sbi 0x05, 2 ; 5 + 2c6: 98 b1 in r25, 0x08 ; 8 + 2c8: 98 2b or r25, r24 + 2ca: 98 b9 out 0x08, r25 ; 8 + 2cc: 2a 98 cbi 0x05, 2 ; 5 + 2ce: 78 e0 ldi r23, 0x08 ; 8 + 2d0: 7a 95 dec r23 + 2d2: f1 f7 brne .-4 ; 0x2d0 + 2d4: 97 b1 in r25, 0x07 ; 7 + 2d6: 80 95 com r24 + 2d8: 98 23 and r25, r24 + 2da: 97 b9 out 0x07, r25 ; 7 + 2dc: 98 b1 in r25, 0x08 ; 8 + 2de: 89 23 and r24, r25 + 2e0: 88 b9 out 0x08, r24 ; 8 + 2e2: 85 b7 in r24, 0x35 ; 53 + 2e4: 8f 7e andi r24, 0xEF ; 239 + 2e6: 85 bf out 0x35, r24 ; 53 + 2e8: 08 95 ret + +000002ea : + 2ea: 84 30 cpi r24, 0x04 ; 4 + 2ec: 38 f4 brcc .+14 ; 0x2fc + 2ee: 66 23 and r22, r22 + 2f0: 29 f0 breq .+10 ; 0x2fc + 2f2: e8 2f mov r30, r24 + 2f4: f0 e0 ldi r31, 0x00 ; 0 + 2f6: e0 50 subi r30, 0x00 ; 0 + 2f8: ff 4f sbci r31, 0xFF ; 255 + 2fa: 60 83 st Z, r22 + 2fc: 08 95 ret + +000002fe : + 2fe: 83 70 andi r24, 0x03 ; 3 + 300: 80 93 05 01 sts 0x0105, r24 ; 0x800105 + 304: 08 95 ret + +00000306 : + 306: 80 91 05 01 lds r24, 0x0105 ; 0x800105 + 30a: e8 2f mov r30, r24 + 30c: f0 e0 ldi r31, 0x00 ; 0 + 30e: e0 50 subi r30, 0x00 ; 0 + 310: ff 4f sbci r31, 0xFF ; 255 + 312: 90 81 ld r25, Z + 314: 91 11 cpse r25, r1 + 316: 01 c0 rjmp .+2 ; 0x31a + 318: 91 e0 ldi r25, 0x01 ; 1 + 31a: 2e 2d mov r18, r14 + 31c: e1 10 cpse r14, r1 + 31e: 03 c0 rjmp .+6 ; 0x326 + 320: 61 e0 ldi r22, 0x01 ; 1 + 322: 8f e0 ldi r24, 0x0F ; 15 + 324: 12 c0 rjmp .+36 ; 0x34a + 326: 21 30 cpi r18, 0x01 ; 1 + 328: 19 f4 brne .+6 ; 0x330 + 32a: 60 e0 ldi r22, 0x00 ; 0 + 32c: 80 e0 ldi r24, 0x00 ; 0 + 32e: 18 c0 rjmp .+48 ; 0x360 + 330: 22 30 cpi r18, 0x02 ; 2 + 332: 61 f4 brne .+24 ; 0x34c + 334: 90 91 1f 01 lds r25, 0x011F ; 0x80011f + 338: 99 23 and r25, r25 + 33a: 19 f0 breq .+6 ; 0x342 + 33c: ee 24 eor r14, r14 + 33e: e3 94 inc r14 + 340: 08 95 ret + 342: a3 df rcall .-186 ; 0x28a + 344: 6f ef ldi r22, 0xFF ; 255 + 346: 80 91 05 01 lds r24, 0x0105 ; 0x800105 + 34a: b6 ce rjmp .-660 ; 0xb8 + 34c: 4e 2d mov r20, r14 + 34e: 50 e0 ldi r21, 0x00 ; 0 + 350: 89 2f mov r24, r25 + 352: 90 e0 ldi r25, 0x00 ; 0 + 354: 02 96 adiw r24, 0x02 ; 2 + 356: 48 17 cp r20, r24 + 358: 59 07 cpc r21, r25 + 35a: 19 f4 brne .+6 ; 0x362 + 35c: 61 e0 ldi r22, 0x01 ; 1 + 35e: 83 e0 ldi r24, 0x03 ; 3 + 360: cd ce rjmp .-614 ; 0xfc + 362: 84 17 cp r24, r20 + 364: 95 07 cpc r25, r21 + 366: 94 f4 brge .+36 ; 0x38c + 368: 21 50 subi r18, 0x01 ; 1 + 36a: e2 2e mov r14, r18 + 36c: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 370: 81 11 cpse r24, r1 + 372: 0c c0 rjmp .+24 ; 0x38c + 374: 6f ef ldi r22, 0xFF ; 255 + 376: 8f e0 ldi r24, 0x0F ; 15 + 378: 9f de rcall .-706 ; 0xb8 + 37a: 3b df rcall .-394 ; 0x1f2 + 37c: 8e ef ldi r24, 0xFE ; 254 + 37e: 80 93 80 00 sts 0x0080, r24 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 382: 84 b1 in r24, 0x04 ; 4 + 384: 86 60 ori r24, 0x06 ; 6 + 386: 84 b9 out 0x04, r24 ; 4 + 388: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 38c: 08 95 ret + +0000038e : + 38e: 8f 2d mov r24, r15 + 390: 4f 2d mov r20, r15 + 392: 50 e0 ldi r21, 0x00 ; 0 + 394: 4a 31 cpi r20, 0x1A ; 26 + 396: 51 05 cpc r21, r1 + 398: 08 f0 brcs .+2 ; 0x39c + 39a: 75 c0 rjmp .+234 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 39c: fa 01 movw r30, r20 + 39e: ec 5e subi r30, 0xEC ; 236 + 3a0: ff 4f sbci r31, 0xFF ; 255 + 3a2: 09 94 ijmp + 3a4: f1 2c mov r15, r1 + 3a6: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 3aa: 08 95 ret + 3ac: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 3b0: 88 23 and r24, r24 + 3b2: 09 f4 brne .+2 ; 0x3b6 + 3b4: 6c c0 rjmp .+216 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + 3b6: f0 90 30 01 lds r15, 0x0130 ; 0x800130 + 3ba: 83 e0 ldi r24, 0x03 ; 3 + 3bc: 80 93 33 01 sts 0x0133, r24 ; 0x800133 + 3c0: 50 c0 rjmp .+160 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 3c2: e0 91 2f 01 lds r30, 0x012F ; 0x80012f + 3c6: e4 30 cpi r30, 0x04 ; 4 + 3c8: 20 f4 brcc .+8 ; 0x3d2 + 3ca: f0 e0 ldi r31, 0x00 ; 0 + 3cc: eb 5d subi r30, 0xDB ; 219 + 3ce: fe 4f sbci r31, 0xFE ; 254 + 3d0: 06 c0 rjmp .+12 ; 0x3de + 3d2: e8 30 cpi r30, 0x08 ; 8 + 3d4: 08 f0 brcs .+2 ; 0x3d8 + 3d6: 44 c0 rjmp .+136 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 3d8: f0 e0 ldi r31, 0x00 ; 0 + 3da: e3 5e subi r30, 0xE3 ; 227 + 3dc: fe 4f sbci r31, 0xFE ; 254 + 3de: 80 91 30 01 lds r24, 0x0130 ; 0x800130 + 3e2: 80 83 st Z, r24 + 3e4: 3d c0 rjmp .+122 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 3e6: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 3ea: 88 23 and r24, r24 + 3ec: 09 f4 brne .+2 ; 0x3f0 + 3ee: 4f c0 rjmp .+158 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + 3f0: 80 91 1d 01 lds r24, 0x011D ; 0x80011d + 3f4: 90 91 1e 01 lds r25, 0x011E ; 0x80011e + 3f8: 89 2b or r24, r25 + 3fa: 09 f4 brne .+2 ; 0x3fe + 3fc: 44 c0 rjmp .+136 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 3fe: 60 91 1d 01 lds r22, 0x011D ; 0x80011d + 402: 70 91 1e 01 lds r23, 0x011E ; 0x80011e + 406: 80 91 30 01 lds r24, 0x0130 ; 0x800130 + 40a: 68 1b sub r22, r24 + 40c: 71 09 sbc r23, r1 + 40e: 87 fd sbrc r24, 7 + 410: 73 95 inc r23 + 412: 70 93 07 01 sts 0x0107, r23 ; 0x800107 + 416: 60 93 06 01 sts 0x0106, r22 ; 0x800106 + 41a: 8e e3 ldi r24, 0x3E ; 62 + 41c: 90 e0 ldi r25, 0x00 ; 0 + 41e: 24 d2 rcall .+1096 ; 0x868 + 420: 1f c0 rjmp .+62 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 422: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 426: 82 30 cpi r24, 0x02 ; 2 + 428: d8 f4 brcc .+54 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 42a: 1d c0 rjmp .+58 ; 0x466 <__LOCK_REGION_LENGTH__+0x66> + 42c: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 430: 81 11 cpse r24, r1 + 432: 17 c0 rjmp .+46 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 434: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 438: e1 2c mov r14, r1 + 43a: 88 e0 ldi r24, 0x08 ; 8 + 43c: 80 93 20 01 sts 0x0120, r24 ; 0x800120 + 440: 10 c0 rjmp .+32 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 442: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 446: 81 11 cpse r24, r1 + 448: 0c c0 rjmp .+24 ; 0x462 <__LOCK_REGION_LENGTH__+0x62> + 44a: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 44e: e1 2c mov r14, r1 + 450: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 454: 54 df rcall .-344 ; 0x2fe + 456: 81 e0 ldi r24, 0x01 ; 1 + 458: f1 cf rjmp .-30 ; 0x43c <__LOCK_REGION_LENGTH__+0x3c> + 45a: 84 e0 ldi r24, 0x04 ; 4 + 45c: 80 93 09 01 sts 0x0109, r24 ; 0x800109 + 460: f1 2c mov r15, r1 + 462: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 466: 80 e0 ldi r24, 0x00 ; 0 + 468: 08 95 ret + 46a: 80 91 33 01 lds r24, 0x0133 ; 0x800133 + 46e: 88 23 and r24, r24 + 470: 71 f0 breq .+28 ; 0x48e <__LOCK_REGION_LENGTH__+0x8e> + 472: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 476: 84 30 cpi r24, 0x04 ; 4 + 478: 98 f7 brcc .-26 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 47a: 60 91 30 01 lds r22, 0x0130 ; 0x800130 + 47e: 66 23 and r22, r22 + 480: 79 f3 breq .-34 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 482: 33 df rcall .-410 ; 0x2ea + 484: ed cf rjmp .-38 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 486: f1 2c mov r15, r1 + 488: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 48c: 81 e0 ldi r24, 0x01 ; 1 + 48e: 08 95 ret + +00000490 : + 490: 80 93 bb 00 sts 0x00BB, r24 ; 0x8000bb <__EEPROM_REGION_LENGTH__+0x7f00bb> + 494: ec eb ldi r30, 0xBC ; 188 + 496: f0 e0 ldi r31, 0x00 ; 0 + 498: 80 81 ld r24, Z + 49a: 80 68 ori r24, 0x80 ; 128 + 49c: 80 83 st Z, r24 + 49e: 80 81 ld r24, Z + 4a0: 8f 7b andi r24, 0xBF ; 191 + 4a2: 80 83 st Z, r24 + 4a4: 80 e0 ldi r24, 0x00 ; 0 + 4a6: 08 95 ret + +000004a8 : + 4a8: 8f 2d mov r24, r15 + 4aa: 88 30 cpi r24, 0x08 ; 8 + 4ac: b9 f0 breq .+46 ; 0x4dc + 4ae: 89 30 cpi r24, 0x09 ; 9 + 4b0: c1 f0 breq .+48 ; 0x4e2 + 4b2: 84 30 cpi r24, 0x04 ; 4 + 4b4: 51 f5 brne .+84 ; 0x50a + 4b6: 80 91 2f 01 lds r24, 0x012F ; 0x80012f + 4ba: 80 34 cpi r24, 0x40 ; 64 + 4bc: 28 f4 brcc .+10 ; 0x4c8 + 4be: 90 e0 ldi r25, 0x00 ; 0 + 4c0: c8 d1 rcall .+912 ; 0x852 + 4c2: e6 df rcall .-52 ; 0x490 + 4c4: 81 e0 ldi r24, 0x01 ; 1 + 4c6: 06 c0 rjmp .+12 ; 0x4d4 + 4c8: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 4cc: 8f 7b andi r24, 0xBF ; 191 + 4ce: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 4d2: 8f ef ldi r24, 0xFF ; 255 + 4d4: f1 2c mov r15, r1 + 4d6: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 4da: 08 95 ret + 4dc: 80 91 08 01 lds r24, 0x0108 ; 0x800108 + 4e0: 0e c0 rjmp .+28 ; 0x4fe + 4e2: e0 91 2f 01 lds r30, 0x012F ; 0x80012f + 4e6: e3 70 andi r30, 0x03 ; 3 + 4e8: f0 e0 ldi r31, 0x00 ; 0 + 4ea: ee 0f add r30, r30 + 4ec: ff 1f adc r31, r31 + 4ee: e3 5f subi r30, 0xF3 ; 243 + 4f0: fe 4f sbci r31, 0xFE ; 254 + 4f2: 80 81 ld r24, Z + 4f4: 91 81 ldd r25, Z+1 ; 0x01 + 4f6: 96 95 lsr r25 + 4f8: 87 95 ror r24 + 4fa: 96 95 lsr r25 + 4fc: 87 95 ror r24 + 4fe: c8 df rcall .-112 ; 0x490 + 500: f1 2c mov r15, r1 + 502: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 506: 81 e0 ldi r24, 0x01 ; 1 + 508: 08 95 ret + 50a: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 50e: 8f 7b andi r24, 0xBF ; 191 + 510: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 514: 8f ef ldi r24, 0xFF ; 255 + 516: 08 95 ret + +00000518 : + 518: 80 91 1d 01 lds r24, 0x011D ; 0x80011d + 51c: 90 91 1e 01 lds r25, 0x011E ; 0x80011e + 520: 90 91 06 01 lds r25, 0x0106 ; 0x800106 + 524: 89 1b sub r24, r25 + 526: 98 2f mov r25, r24 + 528: 95 95 asr r25 + 52a: 95 95 asr r25 + 52c: 95 95 asr r25 + 52e: 89 1b sub r24, r25 + 530: 08 95 ret + +00000532 : + 532: 8e 2d mov r24, r14 + 534: e1 10 cpse r14, r1 + 536: 03 c0 rjmp .+6 ; 0x53e + 538: 62 e0 ldi r22, 0x02 ; 2 + 53a: 88 e0 ldi r24, 0x08 ; 8 + 53c: bd cd rjmp .-1158 ; 0xb8 + 53e: 83 30 cpi r24, 0x03 ; 3 + 540: 19 f4 brne .+6 ; 0x548 + 542: 61 e0 ldi r22, 0x01 ; 1 + 544: 84 e0 ldi r24, 0x04 ; 4 + 546: da cd rjmp .-1100 ; 0xfc + 548: 84 30 cpi r24, 0x04 ; 4 + 54a: 70 f0 brcs .+28 ; 0x568 + 54c: 81 50 subi r24, 0x01 ; 1 + 54e: e8 2e mov r14, r24 + 550: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 554: 81 11 cpse r24, r1 + 556: 08 c0 rjmp .+16 ; 0x568 + 558: 61 e0 ldi r22, 0x01 ; 1 + 55a: 8f e0 ldi r24, 0x0F ; 15 + 55c: ad dd rcall .-1190 ; 0xb8 + 55e: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 562: da df rcall .-76 ; 0x518 + 564: 80 93 08 01 sts 0x0108, r24 ; 0x800108 + 568: 08 95 ret + +0000056a
: + 56a: 80 e8 ldi r24, 0x80 ; 128 + 56c: 80 93 61 00 sts 0x0061, r24 ; 0x800061 <__EEPROM_REGION_LENGTH__+0x7f0061> + 570: 10 92 61 00 sts 0x0061, r1 ; 0x800061 <__EEPROM_REGION_LENGTH__+0x7f0061> + 574: 82 b3 in r24, 0x12 ; 18 + 576: 80 6f ori r24, 0xF0 ; 240 + 578: 82 bb out 0x12, r24 ; 18 + 57a: 1d b8 out 0x0d, r1 ; 13 + 57c: 81 e0 ldi r24, 0x01 ; 1 + 57e: 84 b9 out 0x04, r24 ; 4 + 580: 17 b8 out 0x07, r1 ; 7 + 582: 1a b8 out 0x0a, r1 ; 10 + 584: cf ef ldi r28, 0xFF ; 255 + 586: ce b9 out 0x0e, r28 ; 14 + 588: de ef ldi r29, 0xFE ; 254 + 58a: d5 b9 out 0x05, r29 ; 5 + 58c: c8 b9 out 0x08, r28 ; 8 + 58e: cb b9 out 0x0b, r28 ; 11 + 590: 30 de rcall .-928 ; 0x1f2 + 592: 22 e0 ldi r18, 0x02 ; 2 + 594: 20 93 b8 00 sts 0x00B8, r18 ; 0x8000b8 <__EEPROM_REGION_LENGTH__+0x7f00b8> + 598: 8c ef ldi r24, 0xFC ; 252 + 59a: 80 93 b9 00 sts 0x00B9, r24 ; 0x8000b9 <__EEPROM_REGION_LENGTH__+0x7f00b9> + 59e: 86 ee ldi r24, 0xE6 ; 230 + 5a0: 80 93 ba 00 sts 0x00BA, r24 ; 0x8000ba <__EEPROM_REGION_LENGTH__+0x7f00ba> + 5a4: 10 92 bd 00 sts 0x00BD, r1 ; 0x8000bd <__EEPROM_REGION_LENGTH__+0x7f00bd> + 5a8: 85 e4 ldi r24, 0x45 ; 69 + 5aa: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 5ae: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5b2: 8a 7f andi r24, 0xFA ; 250 + 5b4: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5b8: 9b ef ldi r25, 0xFB ; 251 + 5ba: 95 bd out 0x25, r25 ; 37 + 5bc: 8d e3 ldi r24, 0x3D ; 61 + 5be: 87 bd out 0x27, r24 ; 39 + 5c0: 16 bc out 0x26, r1 ; 38 + 5c2: 20 93 6e 00 sts 0x006E, r18 ; 0x80006e <__EEPROM_REGION_LENGTH__+0x7f006e> + 5c6: 80 91 64 00 lds r24, 0x0064 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5ca: 8c 7f andi r24, 0xFC ; 252 + 5cc: 80 93 64 00 sts 0x0064, r24 ; 0x800064 <__EEPROM_REGION_LENGTH__+0x7f0064> + 5d0: c0 93 89 00 sts 0x0089, r28 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089> + 5d4: c0 93 88 00 sts 0x0088, r28 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088> + 5d8: c0 93 8a 00 sts 0x008A, r28 ; 0x80008a <__EEPROM_REGION_LENGTH__+0x7f008a> + 5dc: 10 92 85 00 sts 0x0085, r1 ; 0x800085 <__EEPROM_REGION_LENGTH__+0x7f0085> + 5e0: 10 92 84 00 sts 0x0084, r1 ; 0x800084 <__EEPROM_REGION_LENGTH__+0x7f0084> + 5e4: d0 93 80 00 sts 0x0080, r29 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 5e8: 89 e1 ldi r24, 0x19 ; 25 + 5ea: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081> + 5ee: 10 92 82 00 sts 0x0082, r1 ; 0x800082 <__EEPROM_REGION_LENGTH__+0x7f0082> + 5f2: 80 91 80 00 lds r24, 0x0080 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 5f6: 80 93 29 01 sts 0x0129, r24 ; 0x800129 + 5fa: 90 93 86 00 sts 0x0086, r25 ; 0x800086 <__EEPROM_REGION_LENGTH__+0x7f0086> + 5fe: 84 b1 in r24, 0x04 ; 4 + 600: 86 60 ori r24, 0x06 ; 6 + 602: 84 b9 out 0x04, r24 ; 4 + 604: 10 92 6f 00 sts 0x006F, r1 ; 0x80006f <__EEPROM_REGION_LENGTH__+0x7f006f> + 608: 45 dd rcall .-1398 ; 0x94 + 60a: 62 99 sbic 0x0c, 2 ; 12 + 60c: 23 c0 rjmp .+70 ; 0x654 + 60e: 42 dd rcall .-1404 ; 0x94 + 610: 2f ef ldi r18, 0xFF ; 255 + 612: 80 e7 ldi r24, 0x70 ; 112 + 614: 92 e0 ldi r25, 0x02 ; 2 + 616: 21 50 subi r18, 0x01 ; 1 + 618: 80 40 sbci r24, 0x00 ; 0 + 61a: 90 40 sbci r25, 0x00 ; 0 + 61c: e1 f7 brne .-8 ; 0x616 + 61e: 00 c0 rjmp .+0 ; 0x620 + 620: 00 00 nop + 622: 62 99 sbic 0x0c, 2 ; 12 + 624: 17 c0 rjmp .+46 ; 0x654 + 626: 78 94 sei + 628: 88 e0 ldi r24, 0x08 ; 8 + 62a: 80 93 20 01 sts 0x0120, r24 ; 0x800120 + 62e: 81 df rcall .-254 ; 0x532 + 630: 80 91 1f 01 lds r24, 0x011F ; 0x80011f + 634: 81 11 cpse r24, r1 + 636: fc cf rjmp .-8 ; 0x630 + 638: 60 91 1d 01 lds r22, 0x011D ; 0x80011d + 63c: 70 91 1e 01 lds r23, 0x011E ; 0x80011e + 640: 70 93 07 01 sts 0x0107, r23 ; 0x800107 + 644: 60 93 06 01 sts 0x0106, r22 ; 0x800106 + 648: 8e e3 ldi r24, 0x3E ; 62 + 64a: 90 e0 ldi r25, 0x00 ; 0 + 64c: 0d d1 rcall .+538 ; 0x868 + 64e: 10 92 20 01 sts 0x0120, r1 ; 0x800120 + 652: 0d c0 rjmp .+26 ; 0x66e + 654: 8e e3 ldi r24, 0x3E ; 62 + 656: 90 e0 ldi r25, 0x00 ; 0 + 658: 03 d1 rcall .+518 ; 0x860 + 65a: 81 33 cpi r24, 0x31 ; 49 + 65c: 22 e0 ldi r18, 0x02 ; 2 + 65e: 92 07 cpc r25, r18 + 660: 14 f0 brlt .+4 ; 0x666 + 662: 81 e1 ldi r24, 0x11 ; 17 + 664: 91 e0 ldi r25, 0x01 ; 1 + 666: 90 93 07 01 sts 0x0107, r25 ; 0x800107 + 66a: 80 93 06 01 sts 0x0106, r24 ; 0x800106 + 66e: 83 b7 in r24, 0x33 ; 51 + 670: 89 7f andi r24, 0xF9 ; 249 + 672: 90 91 09 01 lds r25, 0x0109 ; 0x800109 + 676: 89 2b or r24, r25 + 678: 83 bf out 0x33, r24 ; 51 + 67a: 10 92 09 01 sts 0x0109, r1 ; 0x800109 + 67e: 78 94 sei + 680: 83 b7 in r24, 0x33 ; 51 + 682: 81 60 ori r24, 0x01 ; 1 + 684: 83 bf out 0x33, r24 ; 51 + 686: 88 95 sleep + 688: 83 b7 in r24, 0x33 ; 51 + 68a: 8e 7f andi r24, 0xFE ; 254 + 68c: 83 bf out 0x33, r24 ; 51 + 68e: ef cf rjmp .-34 ; 0x66e + +00000690 <__vector_19>: + 690: 1f 92 push r1 + 692: 0f 92 push r0 + 694: 0f b6 in r0, 0x3f ; 63 + 696: 0f 92 push r0 + 698: 11 24 eor r1, r1 + 69a: 2f 93 push r18 + 69c: 3f 93 push r19 + 69e: 4f 93 push r20 + 6a0: 5f 93 push r21 + 6a2: 6f 93 push r22 + 6a4: 7f 93 push r23 + 6a6: 8f 93 push r24 + 6a8: 9f 93 push r25 + 6aa: af 93 push r26 + 6ac: bf 93 push r27 + 6ae: ef 93 push r30 + 6b0: ff 93 push r31 + 6b2: 80 91 b9 00 lds r24, 0x00B9 ; 0x8000b9 <__EEPROM_REGION_LENGTH__+0x7f00b9> + 6b6: 88 7f andi r24, 0xF8 ; 248 + 6b8: 80 3a cpi r24, 0xA0 ; 160 + 6ba: f1 f1 breq .+124 ; 0x738 <__vector_19+0xa8> + 6bc: 60 f4 brcc .+24 ; 0x6d6 <__vector_19+0x46> + 6be: 88 36 cpi r24, 0x68 ; 104 + 6c0: 09 f4 brne .+2 ; 0x6c4 <__vector_19+0x34> + 6c2: 3f c0 rjmp .+126 ; 0x742 <__vector_19+0xb2> + 6c4: 28 f4 brcc .+10 ; 0x6d0 <__vector_19+0x40> + 6c6: 88 23 and r24, r24 + 6c8: 91 f1 breq .+100 ; 0x72e <__vector_19+0x9e> + 6ca: 80 36 cpi r24, 0x60 ; 96 + 6cc: d1 f1 breq .+116 ; 0x742 <__vector_19+0xb2> + 6ce: 34 c0 rjmp .+104 ; 0x738 <__vector_19+0xa8> + 6d0: 80 38 cpi r24, 0x80 ; 128 + 6d2: 39 f0 breq .+14 ; 0x6e2 <__vector_19+0x52> + 6d4: 31 c0 rjmp .+98 ; 0x738 <__vector_19+0xa8> + 6d6: 88 3b cpi r24, 0xB8 ; 184 + 6d8: 41 f1 breq .+80 ; 0x72a <__vector_19+0x9a> + 6da: 70 f5 brcc .+92 ; 0x738 <__vector_19+0xa8> + 6dc: 88 3a cpi r24, 0xA8 ; 168 + 6de: 29 f1 breq .+74 ; 0x72a <__vector_19+0x9a> + 6e0: 2b c0 rjmp .+86 ; 0x738 <__vector_19+0xa8> + 6e2: 80 91 bb 00 lds r24, 0x00BB ; 0x8000bb <__EEPROM_REGION_LENGTH__+0x7f00bb> + 6e6: f1 10 cpse r15, r1 + 6e8: 0f c0 rjmp .+30 ; 0x708 <__vector_19+0x78> + 6ea: 98 2f mov r25, r24 + 6ec: 92 95 swap r25 + 6ee: 9f 70 andi r25, 0x0F ; 15 + 6f0: f9 2e mov r15, r25 + 6f2: 98 2f mov r25, r24 + 6f4: 9f 70 andi r25, 0x0F ; 15 + 6f6: 90 93 2f 01 sts 0x012F, r25 ; 0x80012f + 6fa: 10 92 33 01 sts 0x0133, r1 ; 0x800133 + 6fe: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 702: 87 ff sbrs r24, 7 + 704: 1e c0 rjmp .+60 ; 0x742 <__vector_19+0xb2> + 706: 0a c0 rjmp .+20 ; 0x71c <__vector_19+0x8c> + 708: e0 91 33 01 lds r30, 0x0133 ; 0x800133 + 70c: ef 5f subi r30, 0xFF ; 255 + 70e: e3 70 andi r30, 0x03 ; 3 + 710: e0 93 33 01 sts 0x0133, r30 ; 0x800133 + 714: f0 e0 ldi r31, 0x00 ; 0 + 716: e1 5d subi r30, 0xD1 ; 209 + 718: fe 4f sbci r31, 0xFE ; 254 + 71a: 80 83 st Z, r24 + 71c: 38 de rcall .-912 ; 0x38e + 71e: 88 23 and r24, r24 + 720: 81 f0 breq .+32 ; 0x742 <__vector_19+0xb2> + 722: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 726: 8f 7b andi r24, 0xBF ; 191 + 728: 0a c0 rjmp .+20 ; 0x73e <__vector_19+0xae> + 72a: be de rcall .-644 ; 0x4a8 + 72c: 0a c0 rjmp .+20 ; 0x742 <__vector_19+0xb2> + 72e: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 732: 80 69 ori r24, 0x90 ; 144 + 734: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 738: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 73c: 80 64 ori r24, 0x40 ; 64 + 73e: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 742: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 746: 80 68 ori r24, 0x80 ; 128 + 748: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 74c: ff 91 pop r31 + 74e: ef 91 pop r30 + 750: bf 91 pop r27 + 752: af 91 pop r26 + 754: 9f 91 pop r25 + 756: 8f 91 pop r24 + 758: 7f 91 pop r23 + 75a: 6f 91 pop r22 + 75c: 5f 91 pop r21 + 75e: 4f 91 pop r20 + 760: 3f 91 pop r19 + 762: 2f 91 pop r18 + 764: 0f 90 pop r0 + 766: 0f be out 0x3f, r0 ; 63 + 768: 0f 90 pop r0 + 76a: 1f 90 pop r1 + 76c: 18 95 reti + +0000076e <__vector_12>: + 76e: 1f 92 push r1 + 770: 0f 92 push r0 + 772: 0f b6 in r0, 0x3f ; 63 + 774: 0f 92 push r0 + 776: 11 24 eor r1, r1 + 778: 2f 93 push r18 + 77a: 3f 93 push r19 + 77c: 4f 93 push r20 + 77e: 5f 93 push r21 + 780: 6f 93 push r22 + 782: 7f 93 push r23 + 784: 8f 93 push r24 + 786: 9f 93 push r25 + 788: af 93 push r26 + 78a: bf 93 push r27 + 78c: ef 93 push r30 + 78e: ff 93 push r31 + 790: 80 91 0b 01 lds r24, 0x010B ; 0x80010b + 794: 8f 5f subi r24, 0xFF ; 255 + 796: 88 3c cpi r24, 0xC8 ; 200 + 798: 18 f4 brcc .+6 ; 0x7a0 <__vector_12+0x32> + 79a: 80 93 0b 01 sts 0x010B, r24 ; 0x80010b + 79e: 0c c0 rjmp .+24 ; 0x7b8 <__vector_12+0x4a> + 7a0: 10 92 0b 01 sts 0x010B, r1 ; 0x80010b + 7a4: 80 91 0a 01 lds r24, 0x010A ; 0x80010a + 7a8: 8f 5f subi r24, 0xFF ; 255 + 7aa: 84 36 cpi r24, 0x64 ; 100 + 7ac: 18 f4 brcc .+6 ; 0x7b4 <__vector_12+0x46> + 7ae: 80 93 0a 01 sts 0x010A, r24 ; 0x80010a + 7b2: 02 c0 rjmp .+4 ; 0x7b8 <__vector_12+0x4a> + 7b4: 10 92 0a 01 sts 0x010A, r1 ; 0x80010a + 7b8: 87 b5 in r24, 0x27 ; 39 + 7ba: 8d 33 cpi r24, 0x3D ; 61 + 7bc: 11 f0 breq .+4 ; 0x7c2 <__vector_12+0x54> + 7be: 8d e3 ldi r24, 0x3D ; 61 + 7c0: 01 c0 rjmp .+2 ; 0x7c4 <__vector_12+0x56> + 7c2: 8e e3 ldi r24, 0x3E ; 62 + 7c4: 87 bd out 0x27, r24 ; 39 + 7c6: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7ca: 88 23 and r24, r24 + 7cc: 71 f0 breq .+28 ; 0x7ea <__vector_12+0x7c> + 7ce: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7d2: 81 30 cpi r24, 0x01 ; 1 + 7d4: 21 f0 breq .+8 ; 0x7de <__vector_12+0x70> + 7d6: 88 30 cpi r24, 0x08 ; 8 + 7d8: 19 f4 brne .+6 ; 0x7e0 <__vector_12+0x72> + 7da: ab de rcall .-682 ; 0x532 + 7dc: 01 c0 rjmp .+2 ; 0x7e0 <__vector_12+0x72> + 7de: 93 dd rcall .-1242 ; 0x306 + 7e0: 8e 2d mov r24, r14 + 7e2: 8f 3f cpi r24, 0xFF ; 255 + 7e4: 11 f0 breq .+4 ; 0x7ea <__vector_12+0x7c> + 7e6: 8f 5f subi r24, 0xFF ; 255 + 7e8: e8 2e mov r14, r24 + 7ea: 80 91 20 01 lds r24, 0x0120 ; 0x800120 + 7ee: 81 30 cpi r24, 0x01 ; 1 + 7f0: 41 f0 breq .+16 ; 0x802 <__vector_12+0x94> + 7f2: 81 e0 ldi r24, 0x01 ; 1 + 7f4: 8d 0d add r24, r13 + 7f6: 83 30 cpi r24, 0x03 ; 3 + 7f8: 10 f4 brcc .+4 ; 0x7fe <__vector_12+0x90> + 7fa: d8 2e mov r13, r24 + 7fc: 01 c0 rjmp .+2 ; 0x800 <__vector_12+0x92> + 7fe: d1 2c mov r13, r1 + 800: 05 dd rcall .-1526 ; 0x20c + 802: ff 20 and r15, r15 + 804: a1 f0 breq .+40 ; 0x82e <__vector_12+0xc0> + 806: 80 91 2a 01 lds r24, 0x012A ; 0x80012a + 80a: 8f 5f subi r24, 0xFF ; 255 + 80c: 80 93 2a 01 sts 0x012A, r24 ; 0x80012a + 810: 82 33 cpi r24, 0x32 ; 50 + 812: 68 f0 brcs .+26 ; 0x82e <__vector_12+0xc0> + 814: f1 2c mov r15, r1 + 816: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + 81a: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 81e: 8f 7b andi r24, 0xBF ; 191 + 820: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 824: 80 91 bc 00 lds r24, 0x00BC ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 828: 80 64 ori r24, 0x40 ; 64 + 82a: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__EEPROM_REGION_LENGTH__+0x7f00bc> + 82e: 86 b5 in r24, 0x26 ; 38 + 830: ff 91 pop r31 + 832: ef 91 pop r30 + 834: bf 91 pop r27 + 836: af 91 pop r26 + 838: 9f 91 pop r25 + 83a: 8f 91 pop r24 + 83c: 7f 91 pop r23 + 83e: 6f 91 pop r22 + 840: 5f 91 pop r21 + 842: 4f 91 pop r20 + 844: 3f 91 pop r19 + 846: 2f 91 pop r18 + 848: 0f 90 pop r0 + 84a: 0f be out 0x3f, r0 ; 63 + 84c: 0f 90 pop r0 + 84e: 1f 90 pop r1 + 850: 18 95 reti + +00000852 : + 852: f9 99 sbic 0x1f, 1 ; 31 + 854: fe cf rjmp .-4 ; 0x852 + 856: 81 bd out 0x21, r24 ; 33 + 858: f8 9a sbi 0x1f, 0 ; 31 + 85a: 99 27 eor r25, r25 + 85c: 80 b5 in r24, 0x20 ; 32 + 85e: 08 95 ret + +00000860 : + 860: a8 e1 ldi r26, 0x18 ; 24 + 862: b0 e0 ldi r27, 0x00 ; 0 + 864: 42 e0 ldi r20, 0x02 ; 2 + 866: 05 c0 rjmp .+10 ; 0x872 + +00000868 : + 868: 10 d0 rcall .+32 ; 0x88a + 86a: 27 2f mov r18, r23 + 86c: 0f c0 rjmp .+30 ; 0x88c + +0000086e : + 86e: dc 01 movw r26, r24 + 870: 86 2f mov r24, r22 + +00000872 : + 872: e8 2f mov r30, r24 + 874: f9 99 sbic 0x1f, 1 ; 31 + 876: fe cf rjmp .-4 ; 0x874 + 878: 05 c0 rjmp .+10 ; 0x884 + 87a: e1 bd out 0x21, r30 ; 33 + 87c: f8 9a sbi 0x1f, 0 ; 31 + 87e: e3 95 inc r30 + 880: 00 b4 in r0, 0x20 ; 32 + 882: 0d 92 st X+, r0 + 884: 41 50 subi r20, 0x01 ; 1 + 886: c8 f7 brcc .-14 ; 0x87a + 888: 08 95 ret + +0000088a : + 88a: 26 2f mov r18, r22 + +0000088c : + 88c: f9 99 sbic 0x1f, 1 ; 31 + 88e: fe cf rjmp .-4 ; 0x88c + 890: 1f ba out 0x1f, r1 ; 31 + 892: 81 bd out 0x21, r24 ; 33 + 894: 20 bd out 0x20, r18 ; 32 + 896: 0f b6 in r0, 0x3f ; 63 + 898: f8 94 cli + 89a: fa 9a sbi 0x1f, 2 ; 31 + 89c: f9 9a sbi 0x1f, 1 ; 31 + 89e: 0f be out 0x3f, r0 ; 63 + 8a0: 01 96 adiw r24, 0x01 ; 1 + 8a2: 08 95 ret + +000008a4 <_exit>: + 8a4: f8 94 cli + +000008a6 <__stop_program>: + 8a6: ff cf rjmp .-2 ; 0x8a6 <__stop_program> diff --git a/fw_dc22_attiny88/Release/wp_dc22_attiny88.map b/fw_dc22_attiny88/Release/wp_dc22_attiny88.map new file mode 100644 index 0000000..20fd6b3 --- /dev/null +++ b/fw_dc22_attiny88/Release/wp_dc22_attiny88.map @@ -0,0 +1,613 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + src/led.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + src/adc.o (__do_clear_bss) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + src/main.o (eeprom_read_byte) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + src/main.o (eeprom_read_word) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + src/main.o (eeprom_write_word) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) (eeprom_read_blraw) +C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) (eeprom_write_byte) + +Allocating common symbols +Common symbol size file + +comm_timeout 0x1 src/main.o +adc_reread 0x1 src/adc.o +rgbled_pwm_rt 0x4 src/led.o +adc_result 0x12 src/adc.o +rgbled_pwm_lf 0x4 src/led.o +adc_busy 0x1 src/adc.o +rgbled_light_level 0x4 src/main.o +comm_data 0x4 src/main.o +adc_read_mode 0x1 src/adc.o +comm_data_idx 0x1 src/main.o +timer1_mode 0x1 src/led.o + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .text 0x00000000 0x0 src/adc.o + .data 0x00000000 0x0 src/adc.o + .bss 0x00000000 0x0 src/adc.o + .text 0x00000000 0x0 src/led.o + .data 0x00000000 0x0 src/led.o + .bss 0x00000000 0x0 src/led.o + .text 0x00000000 0x0 src/main.o + .data 0x00000000 0x0 src/main.o + .bss 0x00000000 0x0 src/main.o + .avr.prop 0x00000000 0x16 src/main.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .text 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00002000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o +LOAD src/adc.o +LOAD src/led.o +LOAD src/main.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr25\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a +END GROUP + 0x00002000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x2000 + 0x0000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x00010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x8a8 + *(.vectors) + .vectors 0x00000000 0x28 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + .progmem.gcc_sw_table.pegleg_cmd + 0x00000028 0x34 src/main.o + 0x0000005c . = ALIGN (0x2) + 0x0000005c __trampolines_start = . + *(.trampolines) + .trampolines 0x0000005c 0x0 linker stubs + *(.trampolines*) + 0x0000005c __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x0000005c . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x0000005c __ctors_start = . + *(.ctors) + 0x0000005c __ctors_end = . + 0x0000005c __dtors_start = . + *(.dtors) + 0x0000005c __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000005c 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x0000005c __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000005c 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000068 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_copy_data.o) + 0x00000068 __do_copy_data + .init4 0x0000007e 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_clear_bss.o) + 0x0000007e __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000008e 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + *(.init9) + *(.text) + .text 0x00000092 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + 0x00000092 __vector_1 + 0x00000092 __bad_interrupt + 0x00000092 __vector_6 + 0x00000092 __vector_3 + 0x00000092 __vector_11 + 0x00000092 __vector_13 + 0x00000092 __vector_17 + 0x00000092 __vector_7 + 0x00000092 __vector_5 + 0x00000092 __vector_4 + 0x00000092 __vector_9 + 0x00000092 __vector_2 + 0x00000092 __vector_15 + 0x00000092 __vector_8 + 0x00000092 __vector_14 + 0x00000092 __vector_10 + 0x00000092 __vector_18 + 0x00000094 . = ALIGN (0x2) + *(.text.*) + .text.adc_init + 0x00000094 0x24 src/adc.o + 0x00000094 adc_init + .text.adc_channel + 0x000000b8 0x44 src/adc.o + 0x000000b8 adc_channel + .text.adc_start + 0x000000fc 0x3c src/adc.o + 0x000000fc adc_start + .text.__vector_16 + 0x00000138 0xba src/adc.o + 0x00000138 __vector_16 + .text.rgbled_io_init + 0x000001f2 0x1a src/led.o + 0x000001f2 rgbled_io_init + .text.rgbled_update + 0x0000020c 0x7e src/led.o + 0x0000020c rgbled_update + .text.rgbled_sensor_init + 0x0000028a 0x60 src/led.o + 0x0000028a rgbled_sensor_init + .text.rgbled_sensor_sensitivity + 0x000002ea 0x14 src/led.o + 0x000002ea rgbled_sensor_sensitivity + .text.rgbled_sensor_read_idx + 0x000002fe 0x8 src/led.o + 0x000002fe rgbled_sensor_read_idx + .text.rgbled_sensor_read + 0x00000306 0x88 src/led.o + 0x00000306 rgbled_sensor_read + .text.pegleg_cmd + 0x0000038e 0x102 src/main.o + .text.i2c_slave_tx.constprop.4 + 0x00000490 0x18 src/main.o + .text.pegleg_data_tx + 0x000004a8 0x70 src/main.o + .text.tempsensor_process + 0x00000518 0x1a src/main.o + 0x00000518 tempsensor_process + .text.tempsensor_read + 0x00000532 0x38 src/main.o + 0x00000532 tempsensor_read + .text.startup.main + 0x0000056a 0x126 src/main.o + 0x0000056a main + .text.__vector_19 + 0x00000690 0xde src/main.o + 0x00000690 __vector_19 + .text.__vector_12 + 0x0000076e 0xe4 src/main.o + 0x0000076e __vector_12 + .text.avr-libc + 0x00000852 0xe C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + 0x00000852 eeprom_read_byte + .text.avr-libc + 0x00000860 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + 0x00000860 eeprom_read_word + .text.avr-libc + 0x00000868 0x6 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + 0x00000868 eeprom_write_word + .text.avr-libc + 0x0000086e 0x1c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + 0x0000086e eeprom_read_block + 0x00000872 eeprom_read_blraw + .text.avr-libc + 0x0000088a 0x1a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + 0x0000088a eeprom_write_byte + 0x0000088c eeprom_write_r18 + 0x000008a4 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000008a4 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + 0x000008a4 _exit + 0x000008a4 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000008a4 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr25\libgcc.a(_exit.o) + *(.fini0) + 0x000008a8 _etext = . + +.data 0x00800100 0x4 load address 0x000008a8 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.rgbled_sensitivity + 0x00800100 0x4 src/led.o + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.r*) + 0x00800104 . = ALIGN (0x2) + 0x00800104 _edata = . + 0x00800104 PROVIDE (__data_end, .) + +.bss 0x00800104 0x30 + 0x00800104 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.adc_averages + 0x00800104 0x1 src/adc.o + .bss.rgbled_read_sel + 0x00800105 0x1 src/led.o + .bss.temp_offset + 0x00800106 0x2 src/main.o + .bss.temperature + 0x00800108 0x1 src/main.o + .bss.pirate_sleep_mode + 0x00800109 0x1 src/main.o + .bss.tim0_centi + 0x0080010a 0x1 src/main.o + .bss.tim0_milli + 0x0080010b 0x1 src/main.o + *(COMMON) + COMMON 0x0080010c 0x15 src/adc.o + 0x0080010c adc_reread + 0x0080010d adc_result + 0x0080011f adc_busy + 0x00800120 adc_read_mode + COMMON 0x00800121 0x9 src/led.o + 0x00800121 rgbled_pwm_rt + 0x00800125 rgbled_pwm_lf + 0x00800129 timer1_mode + COMMON 0x0080012a 0xa src/main.o + 0x0080012a comm_timeout + 0x0080012b rgbled_light_level + 0x0080012f comm_data + 0x00800133 comm_data_idx + 0x00800134 PROVIDE (__bss_end, .) + 0x000008a8 __data_load_start = LOADADDR (.data) + 0x000008ac __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800134 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800134 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 src/adc.o + 0x31 (size before relaxing) + .comment 0x00000030 0x31 src/led.o + .comment 0x00000030 0x31 src/main.o + +.note.gnu.avr.deviceinfo + 0x00000000 0x3c + .note.gnu.avr.deviceinfo + 0x00000000 0x3c C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0xa0 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_aranges + 0x00000020 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_aranges + 0x00000040 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_aranges + 0x00000060 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_aranges + 0x00000080 0x20 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x8ce + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x576 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_info 0x00000576 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_info 0x00000621 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_info 0x000006cc 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_info 0x00000777 0xac C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_info 0x00000823 0xab C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_abbrev 0x00000000 0x58f + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x52b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_abbrev 0x0000052b 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_abbrev 0x0000053f 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_abbrev 0x00000553 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_abbrev 0x00000567 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_abbrev 0x0000057b 0x14 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_line 0x00000000 0x376 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x10f C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + .debug_line 0x0000010f 0x74 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_byte.o) + .debug_line 0x00000183 0x61 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_word.o) + .debug_line 0x000001e4 0x5b C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_word.o) + .debug_line 0x0000023f 0x9f C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eerd_block.o) + .debug_line 0x000002de 0x98 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25\libattiny88.a(eewr_byte.o) + +.debug_frame + *(.debug_frame) + +.debug_str 0x00000000 0x1d9 + *(.debug_str) + .debug_str 0x00000000 0x1d9 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATtiny_DFP/1.3.172/gcc/dev/attiny88/avr25/crtattiny88.o + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges + *(.debug_ranges) + +.debug_macro + *(.debug_macro) +OUTPUT(wp_dc22_attiny88.elf elf32-avr) +LOAD linker stubs diff --git a/fw_dc22_attiny88/Release/wp_dc22_attiny88.srec b/fw_dc22_attiny88/Release/wp_dc22_attiny88.srec new file mode 100644 index 0000000..77e6966 --- /dev/null +++ b/fw_dc22_attiny88/Release/wp_dc22_attiny88.srec @@ -0,0 +1,142 @@ +S018000077705F646332325F617474696E7938382E7372656333 +S11300002DC047C046C045C044C043C042C041C0E3 +S113001040C03FC03EC03DC0AAC33BC03AC039C087 +S11300208BC037C036C034C3BDC1C0C1CAC1DBC177 +S1130030F8C116C228C227C2F9C103C224C223C20E +S113004022C221C220C209C20BC20AC21CC21BC2E4 +S11300501AC219C218C217C216C207C211241FBE7F +S1130060CFEFD2E0DEBFCDBF11E0A0E0B1E0E8EA1F +S1130070F8E002C005900D92A430B107D9F721E051 +S1130080A4E0B1E001C01D92A433B207E1F76DD240 +S113009009C4B6CFE4E6F0E080818E7F8083EAE78E +S11300A0F0E08FED8083ACE7B0E08C918F7D8C9392 +S11300B08081886880830895282F803188F4909106 +S11300C07C00907F982B90937C00883030F481E002 +S11300D001C0880F2A95EAF701C080E080937E0072 +S11300E0613021F480917C00806405C0623029F481 +S11300F080917C008F7B80937C00089590917A009E +S1130100292F207496FD15C080930C01662311F0ED +S1130110982F01C090E09093040190917C009F700F +S1130120906890931F0190917A00906490937A0064 +S113013001C021E0822F08951F920F920FB60F92F3 +S113014011242F934F935F938F939F93AF93BF93F8 +S1130150EF93FF93E0917C00EF7020910401222340 +S1130160D1F080910C012817B1F0E930A0F4AE2F42 +S1130170B0E0AA0FBB1FA35FBE4F4D915C911197D6 +S11301808091780090917900840F951F96958795BA +S113019011969C938E9380910C01882359F0809141 +S11301A00C01815080930C0180917A0080648093CB +S11301B07A0011C021110DC0E93058F4F0E08091AB +S11301C0780090917900EE0FFF1FE35FFE4F91835B +S11301D0808310921F01FF91EF91BF91AF919F9186 +S11301E08F915F914F912F910F900FBE0F901F90A1 +S11301F018958AB1806F8AB987B18F6087B98BB13E +S1130200806F8BB988B18F6088B90895CF93DF93DD +S11302108BB1806F8BB988B18F6088B9C8E8D0E0A2 +S11302208EEF8883AAE8B0E08C938AEF90E09093F5 +S11302308500809384003BB124E02D0D81E090E0A3 +S1130240AC0101C0440F2A95EAF7242F20952323FB +S11302502BB928B10D2C01C0880F0A94EAF78095B8 +S1130260822388B9ED2DF0E0EB5DFE4F8BEF90819A +S1130270282F291B2883ED2DF0E0EF5DFE4F9081A0 +S1130280891B8C93DF91CF9108959BB1906F9BB99B +S1130290E0E8F0E090819F70908397B1907F97B9E8 +S11302A095B7906195BF47B121E030E0B90102C034 +S11302B0660F771F8A95E2F7CB01462B47B998B1B1 +S11302C0907F98B92A9A98B1982B98B92A9878E08F +S11302D07A95F1F797B18095982397B998B18923C6 +S11302E088B985B78F7E85BF0895843038F4662336 +S11302F029F0E82FF0E0E050FF4F60830895837009 +S113030080930501089580910501E82FF0E0E05005 +S1130310FF4F9081911101C091E02E2DE11003C097 +S113032061E08FE012C0213019F460E080E018C071 +S1130330223061F490911F01992319F0EE24E39483 +S11303400895A3DF6FEF80910501B6CE4E2D50E0E6 +S1130350892F90E002964817590719F461E083E069 +S1130360CDCE8417950794F42150E22E80911F017D +S113037081110CC06FEF8FE09FDE3BDF8EEF809327 +S1130380800084B1866084B91092200108958F2D75 +S11303904F2D50E04A31510508F075C0FA01EC5E6A +S11303A0FF4F0994F12C10922A0108958091330192 +S11303B0882309F46CC0F090300183E0809333010A +S11303C050C0E0912F01E43020F4F0E0EB5DFE4FEB +S11303D006C0E83008F044C0F0E0E35EFE4F8091D0 +S11303E0300180833DC080913301882309F44FC0DC +S11303F080911D0190911E01892B09F444C06091E4 +S11304001D0170911E0180913001681B710987FDE7 +S1130410739570930701609306018EE390E024D2F4 +S11304201FC0809133018230D8F41DC08091200117 +S1130430811117C010922001E12C88E080932001E3 +S113044010C08091200181110CC010922001E12C78 +S113045080912F0154DF81E0F1CF84E08093090182 +S1130460F12C10922A0180E00895809133018823B1 +S113047071F080912F01843098F7609130016623E8 +S113048079F333DFEDCFF12C10922A0181E0089546 +S11304908093BB00ECEBF0E08081806880838081F6 +S11304A08F7B808380E008958F2D8830B9F0893068 +S11304B0C1F0843051F580912F01803428F490E00C +S11304C0C8D1E6DF81E006C08091BC008F7B8093B9 +S11304D0BC008FEFF12C10922A010895809108013D +S11304E00EC0E0912F01E370F0E0EE0FFF1FE35F19 +S11304F0FE4F808191819695879596958795C8DF63 +S1130500F12C10922A0181E008958091BC008F7B28 +S11305108093BC008FEF089580911D0190911E017E +S113052090910601891B982F959595959595891B12 +S113053008958E2DE11003C062E088E0BDCD8330C4 +S113054019F461E084E0DACD843070F08150E82E53 +S113055080911F01811108C061E08FE0ADDD109230 +S11305602001DADF80930801089580E88093610018 +S11305701092610082B3806F82BB1DB881E084B9A0 +S113058017B81AB8CFEFCEB9DEEFD5B9C8B9CBB921 +S113059030DE22E02093B8008CEF8093B90086EE21 +S11305A08093BA001092BD0085E48093BC008091D2 +S11305B064008A7F809364009BEF95BD8DE387BDC3 +S11305C016BC20936E00809164008C7F809364003D +S11305D0C0938900C0938800C0938A00109285005C +S11305E010928400D093800089E18093810010925E +S11305F0820080918000809329019093860084B1C9 +S1130600866084B910926F0045DD629923C042DD93 +S11306102FEF80E792E0215080409040E1F700C046 +S11306200000629917C0789488E08093200181DFEC +S113063080911F018111FCCF60911D0170911E01F9 +S113064070930701609306018EE390E00DD1109240 +S113065020010DC08EE390E003D1813322E09207A4 +S113066014F081E191E0909307018093060183B730 +S1130670897F90910901892B83BF10920901789495 +S113068083B7816083BF889583B78E7F83BFEFCFA5 +S11306901F920F920FB60F9211242F933F934F93F3 +S11306A05F936F937F938F939F93AF93BF93EF93D6 +S11306B0FF938091B900887F803AF1F160F4883625 +S11306C009F43FC028F4882391F18036D1F134C075 +S11306D0803839F031C0883B41F170F5883A29F10E +S11306E02BC08091BB00F1100FC0982F92959F7082 +S11306F0F92E982F9F7090932F011092330110922E +S11307002A0187FF1EC00AC0E0913301EF5FE37046 +S1130710E0933301F0E0E15DFE4F808338DE88230F +S113072081F08091BC008F7B0AC0BEDE0AC080913C +S1130730BC0080698093BC008091BC00806480937D +S1130740BC008091BC0080688093BC00FF91EF9155 +S1130750BF91AF919F918F917F916F915F914F91D5 +S11307603F912F910F900FBE0F901F9018951F92DD +S11307700F920FB60F9211242F933F934F935F93D1 +S11307806F937F938F939F93AF93BF93EF93FF9355 +S113079080910B018F5F883C18F480930B010CC08F +S11307A010920B0180910A018F5F843618F48093B4 +S11307B00A0102C010920A0187B58D3311F08DE34E +S11307C001C08EE387BD80912001882371F0809160 +S11307D02001813021F0883019F4ABDE01C093DDB3 +S11307E08E2D8F3F11F08F5FE82E80912001813094 +S11307F041F081E08D0D833010F4D82E01C0D12C4E +S113080005DDFF20A1F080912A018F5F80932A01EA +S1130810823368F0F12C10922A018091BC008F7B06 +S11308208093BC008091BC0080648093BC0086B53A +S1130830FF91EF91BF91AF919F918F917F916F91B4 +S11308405F914F913F912F910F900FBE0F901F908A +S11308501895F999FECF81BDF89A992780B5089526 +S1130860A8E1B0E042E005C010D0272F0FC0DC01A2 +S1130870862FE82FF999FECF05C0E1BDF89AE395DC +S113088000B40D924150C8F70895262FF999FECF70 +S11308901FBA81BD20BD0FB6F894FA9AF99A0FBE1B +S10B08A001960895F894FFCFBE +S10708A80101010144 +S9030000FC diff --git a/fw_dc22_attiny88/bin/wp_dc22_attiny88.elf b/fw_dc22_attiny88/bin/wp_dc22_attiny88.elf new file mode 100644 index 0000000000000000000000000000000000000000..c2f4fb16eceacd5af6198253be32155feeee647f GIT binary patch literal 22748 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