From f84e8b0321064b0a19ca0d2af6ac983892fbff95 Mon Sep 17 00:00:00 2001
From: true <trueserve@users.noreply.github.com>
Date: Sat, 11 Feb 2023 04:52:17 -0800
Subject: [PATCH] Renamed ATTINY88 firmware directory

---
 fw_attiny88/.vs/wp_dc22_attiny88/v14/.atsuo   |  Bin 0 -> 56320 bytes
 fw_attiny88/Debug/Makefile                    |  152 ++
 fw_attiny88/Debug/makedep.mk                  |   10 +
 fw_attiny88/Debug/src/adc.d                   |   41 +
 fw_attiny88/Debug/src/adc.o                   |  Bin 0 -> 7108 bytes
 fw_attiny88/Debug/src/led.d                   |   52 +
 fw_attiny88/Debug/src/led.o                   |  Bin 0 -> 9908 bytes
 fw_attiny88/Debug/src/main.d                  |   72 +
 fw_attiny88/Debug/src/main.o                  |  Bin 0 -> 20416 bytes
 fw_attiny88/Debug/wp_dc22_attiny88.eep        |    1 +
 .../Debug}/wp_dc22_attiny88.elf               |  Bin
 .../Debug}/wp_dc22_attiny88.hex               |    0
 fw_attiny88/Debug/wp_dc22_attiny88.lss        | 1838 +++++++++++++++++
 fw_attiny88/Debug/wp_dc22_attiny88.map        |  643 ++++++
 fw_attiny88/Debug/wp_dc22_attiny88.srec       |  142 ++
 fw_attiny88/Release/Makefile                  |  152 ++
 fw_attiny88/Release/makedep.mk                |   10 +
 fw_attiny88/Release/src/adc.d                 |   41 +
 fw_attiny88/Release/src/adc.o                 |  Bin 0 -> 2224 bytes
 fw_attiny88/Release/src/led.d                 |   52 +
 fw_attiny88/Release/src/led.o                 |  Bin 0 -> 3020 bytes
 fw_attiny88/Release/src/main.d                |   72 +
 fw_attiny88/Release/src/main.o                |  Bin 0 -> 7080 bytes
 fw_attiny88/Release/wp_dc22_attiny88.eep      |    1 +
 fw_attiny88/Release/wp_dc22_attiny88.elf      |  Bin 0 -> 11872 bytes
 fw_attiny88/Release/wp_dc22_attiny88.hex      |  141 ++
 fw_attiny88/Release/wp_dc22_attiny88.lss      | 1060 ++++++++++
 fw_attiny88/Release/wp_dc22_attiny88.map      |  613 ++++++
 fw_attiny88/Release/wp_dc22_attiny88.srec     |  142 ++
 fw_attiny88/bin/wp_dc22_attiny88.elf          |  Bin 0 -> 22748 bytes
 fw_attiny88/bin/wp_dc22_attiny88.hex          |  141 ++
 {attiny88_main => fw_attiny88}/src/adc.c      |    0
 {attiny88_main => fw_attiny88}/src/adc.h      |    0
 {attiny88_main => fw_attiny88}/src/config.h   |    0
 {attiny88_main => fw_attiny88}/src/i2c.h      |    0
 .../src/i2c_interrupt.h                       |    0
 {attiny88_main => fw_attiny88}/src/led.c      |    0
 {attiny88_main => fw_attiny88}/src/led.h      |    0
 {attiny88_main => fw_attiny88}/src/main.c     |    0
 {attiny88_main => fw_attiny88}/src/timer.h    |    0
 .../wp_dc22_attiny88.atsln                    |    0
 .../wp_dc22_attiny88.componentinfo.xml        |    0
 .../wp_dc22_attiny88.cproj                    |    0
 43 files changed, 5376 insertions(+)
 create mode 100644 fw_attiny88/.vs/wp_dc22_attiny88/v14/.atsuo
 create mode 100644 fw_attiny88/Debug/Makefile
 create mode 100644 fw_attiny88/Debug/makedep.mk
 create mode 100644 fw_attiny88/Debug/src/adc.d
 create mode 100644 fw_attiny88/Debug/src/adc.o
 create mode 100644 fw_attiny88/Debug/src/led.d
 create mode 100644 fw_attiny88/Debug/src/led.o
 create mode 100644 fw_attiny88/Debug/src/main.d
 create mode 100644 fw_attiny88/Debug/src/main.o
 create mode 100644 fw_attiny88/Debug/wp_dc22_attiny88.eep
 rename {attiny88_main/bin => fw_attiny88/Debug}/wp_dc22_attiny88.elf (100%)
 rename {attiny88_main/bin => fw_attiny88/Debug}/wp_dc22_attiny88.hex (100%)
 create mode 100644 fw_attiny88/Debug/wp_dc22_attiny88.lss
 create mode 100644 fw_attiny88/Debug/wp_dc22_attiny88.map
 create mode 100644 fw_attiny88/Debug/wp_dc22_attiny88.srec
 create mode 100644 fw_attiny88/Release/Makefile
 create mode 100644 fw_attiny88/Release/makedep.mk
 create mode 100644 fw_attiny88/Release/src/adc.d
 create mode 100644 fw_attiny88/Release/src/adc.o
 create mode 100644 fw_attiny88/Release/src/led.d
 create mode 100644 fw_attiny88/Release/src/led.o
 create mode 100644 fw_attiny88/Release/src/main.d
 create mode 100644 fw_attiny88/Release/src/main.o
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.eep
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.elf
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.hex
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.lss
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.map
 create mode 100644 fw_attiny88/Release/wp_dc22_attiny88.srec
 create mode 100644 fw_attiny88/bin/wp_dc22_attiny88.elf
 create mode 100644 fw_attiny88/bin/wp_dc22_attiny88.hex
 rename {attiny88_main => fw_attiny88}/src/adc.c (100%)
 rename {attiny88_main => fw_attiny88}/src/adc.h (100%)
 rename {attiny88_main => fw_attiny88}/src/config.h (100%)
 rename {attiny88_main => fw_attiny88}/src/i2c.h (100%)
 rename {attiny88_main => fw_attiny88}/src/i2c_interrupt.h (100%)
 rename {attiny88_main => fw_attiny88}/src/led.c (100%)
 rename {attiny88_main => fw_attiny88}/src/led.h (100%)
 rename {attiny88_main => fw_attiny88}/src/main.c (100%)
 rename {attiny88_main => fw_attiny88}/src/timer.h (100%)
 rename {attiny88_main => fw_attiny88}/wp_dc22_attiny88.atsln (100%)
 rename {attiny88_main => fw_attiny88}/wp_dc22_attiny88.componentinfo.xml (100%)
 rename {attiny88_main => fw_attiny88}/wp_dc22_attiny88.cproj (100%)

diff --git a/fw_attiny88/.vs/wp_dc22_attiny88/v14/.atsuo b/fw_attiny88/.vs/wp_dc22_attiny88/v14/.atsuo
new file mode 100644
index 0000000000000000000000000000000000000000..8b16402e60bcba23b13ddfabd58e7b9aeccb67b7
GIT binary patch
literal 56320
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

literal 0
HcmV?d00001

diff --git a/fw_attiny88/Debug/Makefile b/fw_attiny88/Debug/Makefile
new file mode 100644
index 0000000..45071f7
--- /dev/null
+++ b/fw_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_attiny88/Debug/makedep.mk b/fw_attiny88/Debug/makedep.mk
new file mode 100644
index 0000000..089e3be
--- /dev/null
+++ b/fw_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_attiny88/Debug/src/adc.d b/fw_attiny88/Debug/src/adc.d
new file mode 100644
index 0000000..c7b1dde
--- /dev/null
+++ b/fw_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_attiny88/Debug/src/adc.o b/fw_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_attiny88/Debug/src/led.d b/fw_attiny88/Debug/src/led.d
new file mode 100644
index 0000000..cfed90d
--- /dev/null
+++ b/fw_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_attiny88/Debug/src/led.o b/fw_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_attiny88/Debug/src/main.d b/fw_attiny88/Debug/src/main.d
new file mode 100644
index 0000000..4b23a97
--- /dev/null
+++ b/fw_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_attiny88/Debug/src/main.o b/fw_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_attiny88/Debug/wp_dc22_attiny88.eep b/fw_attiny88/Debug/wp_dc22_attiny88.eep
new file mode 100644
index 0000000..7c166a1
--- /dev/null
+++ b/fw_attiny88/Debug/wp_dc22_attiny88.eep
@@ -0,0 +1 @@
+:00000001FF
diff --git a/attiny88_main/bin/wp_dc22_attiny88.elf b/fw_attiny88/Debug/wp_dc22_attiny88.elf
similarity index 100%
rename from attiny88_main/bin/wp_dc22_attiny88.elf
rename to fw_attiny88/Debug/wp_dc22_attiny88.elf
diff --git a/attiny88_main/bin/wp_dc22_attiny88.hex b/fw_attiny88/Debug/wp_dc22_attiny88.hex
similarity index 100%
rename from attiny88_main/bin/wp_dc22_attiny88.hex
rename to fw_attiny88/Debug/wp_dc22_attiny88.hex
diff --git a/fw_attiny88/Debug/wp_dc22_attiny88.lss b/fw_attiny88/Debug/wp_dc22_attiny88.lss
new file mode 100644
index 0000000..5178e91
--- /dev/null
+++ b/fw_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 <pegleg_cmd+0x16>
+  2a:	c0 c1       	rjmp	.+896    	; 0x3ac <pegleg_cmd+0x1e>
+  2c:	ca c1       	rjmp	.+916    	; 0x3c2 <pegleg_cmd+0x34>
+  2e:	db c1       	rjmp	.+950    	; 0x3e6 <pegleg_cmd+0x58>
+  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 <main>
+  90:	09 c4       	rjmp	.+2066   	; 0x8a4 <_exit>
+
+00000092 <__bad_interrupt>:
+  92:	b6 cf       	rjmp	.-148    	; 0x0 <__vectors>
+
+00000094 <adc_init>:
+
+/* 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 <adc_channel>:
+}
+
+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 <adc_channel+0x28>
+		// 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 <adc_channel+0x22>
+  ce:	81 e0       	ldi	r24, 0x01	; 1
+  d0:	01 c0       	rjmp	.+2      	; 0xd4 <adc_channel+0x1c>
+  d2:	88 0f       	add	r24, r24
+  d4:	2a 95       	dec	r18
+  d6:	ea f7       	brpl	.-6      	; 0xd2 <adc_channel+0x1a>
+  d8:	01 c0       	rjmp	.+2      	; 0xdc <adc_channel+0x24>
+  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 <adc_channel+0x34>
+		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 <adc_channel+0x3e>
+	} else if (vref == ADC_REF_BANDGAP) {
+  ec:	62 30       	cpi	r22, 0x02	; 2
+  ee:	29 f4       	brne	.+10     	; 0xfa <adc_channel+0x42>
+		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 <adc_start>:
+}
+
+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 <adc_start+0x36>
+		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_reread>
+	adc_averages = enable_averaging ? reread : 0;
+ 10c:	66 23       	and	r22, r22
+ 10e:	11 f0       	breq	.+4      	; 0x114 <adc_start+0x18>
+ 110:	98 2f       	mov	r25, r24
+ 112:	01 c0       	rjmp	.+2      	; 0x116 <adc_start+0x1a>
+ 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 <adc_busy>
+	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 <adc_start+0x38>
+
+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 <adc_reread>
+ 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 <adc_reread>
+ 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 <adc_reread>
+ 1a2:	81 50       	subi	r24, 0x01	; 1
+ 1a4:	80 93 0c 01 	sts	0x010C, r24	; 0x80010c <adc_reread>
+		// 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 <adc_busy>
+	}
+ 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 <rgbled_io_init>:
+{
+	// 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 <rgbled_update>:
+}
+
+  // 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 <rgbled_update+0x3a>
+ 244:	44 0f       	add	r20, r20
+ 246:	2a 95       	dec	r18
+ 248:	ea f7       	brpl	.-6      	; 0x244 <rgbled_update+0x38>
+ 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 <rgbled_update+0x4e>
+ 258:	88 0f       	add	r24, r24
+ 25a:	0a 94       	dec	r0
+ 25c:	ea f7       	brpl	.-6      	; 0x258 <rgbled_update+0x4c>
+ 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 <rgbled_sensor_init>:
+  // 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 <rgbled_sensor_init+0x2a>
+ 2b0:	66 0f       	add	r22, r22
+ 2b2:	77 1f       	adc	r23, r23
+ 2b4:	8a 95       	dec	r24
+ 2b6:	e2 f7       	brpl	.-8      	; 0x2b0 <rgbled_sensor_init+0x26>
+ 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 <rgbled_sensor_init+0x46>
+	_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 <rgbled_sensor_sensitivity>:
+}
+
+  // 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 <rgbled_sensor_sensitivity+0x12>
+		if (sensitivity) {
+ 2ee:	66 23       	and	r22, r22
+ 2f0:	29 f0       	breq	.+10     	; 0x2fc <rgbled_sensor_sensitivity+0x12>
+			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 <rgbled_sensor_read_idx>:
+	}
+}
+
+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 <rgbled_read_sel>
+ 304:	08 95       	ret
+
+00000306 <rgbled_sensor_read>:
+
+void rgbled_sensor_read()
+{
+	uint8_t sens;
+	
+	sens = rgbled_sensitivity[rgbled_read_sel];
+ 306:	80 91 05 01 	lds	r24, 0x0105	; 0x800105 <rgbled_read_sel>
+ 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 <rgbled_sensor_read+0x14>
+ 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 <rgbled_sensor_read+0x20>
+		// 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 <rgbled_sensor_read+0x44>
+	} else if (adc_read_step == 1) {
+ 326:	21 30       	cpi	r18, 0x01	; 1
+ 328:	19 f4       	brne	.+6      	; 0x330 <rgbled_sensor_read+0x2a>
+		adc_start(0, 0);
+ 32a:	60 e0       	ldi	r22, 0x00	; 0
+ 32c:	80 e0       	ldi	r24, 0x00	; 0
+ 32e:	18 c0       	rjmp	.+48     	; 0x360 <rgbled_sensor_read+0x5a>
+	} else if (adc_read_step == 2) {
+ 330:	22 30       	cpi	r18, 0x02	; 2
+ 332:	61 f4       	brne	.+24     	; 0x34c <rgbled_sensor_read+0x46>
+		// if the ADC is done, charge up LED for reading
+		if (adc_busy) {
+ 334:	90 91 1f 01 	lds	r25, 0x011F	; 0x80011f <adc_busy>
+ 338:	99 23       	and	r25, r25
+ 33a:	19 f0       	breq	.+6      	; 0x342 <rgbled_sensor_read+0x3c>
+			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 <rgbled_sensor_init>
+			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 <rgbled_read_sel>
+ 34a:	b6 ce       	rjmp	.-660    	; 0xb8 <adc_channel>
+		}
+	} 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 <rgbled_sensor_read+0x5c>
+		// 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 <adc_start>
+	} 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 <rgbled_sensor_read+0x86>
+		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 <adc_busy>
+ 370:	81 11       	cpse	r24, r1
+ 372:	0c c0       	rjmp	.+24     	; 0x38c <rgbled_sensor_read+0x86>
+			// 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 <adc_channel>
+			rgbled_io_init(); 							// set LED pins up again
+ 37a:	3b df       	rcall	.-394    	; 0x1f2 <rgbled_io_init>
+}
+
+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 <adc_read_mode>
+ 38c:	08 95       	ret
+
+0000038e <pegleg_cmd>:
+	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 <pegleg_cmd+0xe>
+ 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 <comm_timeout>
+			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 <comm_data_idx>
+ 3b0:	88 23       	and	r24, r24
+ 3b2:	09 f4       	brne	.+2      	; 0x3b6 <pegleg_cmd+0x28>
+ 3b4:	6c c0       	rjmp	.+216    	; 0x48e <__LOCK_REGION_LENGTH__+0x8e>
+				comm_cmd = comm_data[1];
+ 3b6:	f0 90 30 01 	lds	r15, 0x0130	; 0x800130 <comm_data+0x1>
+				// 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 <comm_data_idx>
+ 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 <comm_data>
+ 3c6:	e4 30       	cpi	r30, 0x04	; 4
+ 3c8:	20 f4       	brcc	.+8      	; 0x3d2 <pegleg_cmd+0x44>
+				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 <pegleg_cmd+0x50>
+			} else if (comm_data[0] < 8) {
+ 3d2:	e8 30       	cpi	r30, 0x08	; 8
+ 3d4:	08 f0       	brcs	.+2      	; 0x3d8 <pegleg_cmd+0x4a>
+ 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 <comm_data+0x1>
+ 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 <comm_data_idx>
+ 3ea:	88 23       	and	r24, r24
+ 3ec:	09 f4       	brne	.+2      	; 0x3f0 <pegleg_cmd+0x62>
+ 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 <adc_result+0x10>
+ 3f4:	90 91 1e 01 	lds	r25, 0x011E	; 0x80011e <adc_result+0x11>
+ 3f8:	89 2b       	or	r24, r25
+ 3fa:	09 f4       	brne	.+2      	; 0x3fe <pegleg_cmd+0x70>
+ 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 <adc_result+0x10>
+ 402:	70 91 1e 01 	lds	r23, 0x011E	; 0x80011e <adc_result+0x11>
+ 406:	80 91 30 01 	lds	r24, 0x0130	; 0x800130 <comm_data+0x1>
+ 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 <temp_offset+0x1>
+ 416:	60 93 06 01 	sts	0x0106, r22	; 0x800106 <temp_offset>
+ 					// 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 <eeprom_write_word>
+ 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 <comm_data_idx>
+ 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 <adc_read_mode>
+ 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_mode>
+				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 <adc_read_mode>
+ 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 <adc_read_mode>
+ 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_mode>
+				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 <comm_data>
+ 454:	54 df       	rcall	.-344    	; 0x2fe <rgbled_sensor_read_idx>
+				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 <pirate_sleep_mode>
+			// 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>
+			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 <led 0-3> <sens 1-200>
+			if (comm_data_idx >= 1) {
+ 46a:	80 91 33 01 	lds	r24, 0x0133	; 0x800133 <comm_data_idx>
+ 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 <comm_data>
+ 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 <comm_data+0x1>
+ 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 <rgbled_sensor_sensitivity>
+ 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 <comm_timeout>
+			return 1;
+ 48c:	81 e0       	ldi	r24, 0x01	; 1
+		}
+	}
+	
+	return 0;
+}
+ 48e:	08 95       	ret
+
+00000490 <i2c_slave_tx.constprop.4>:
+
+/* 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 <pegleg_data_tx>:
+/* 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 <pegleg_data_tx+0x34>
+ 4ae:	89 30       	cpi	r24, 0x09	; 9
+ 4b0:	c1 f0       	breq	.+48     	; 0x4e2 <pegleg_data_tx+0x3a>
+ 4b2:	84 30       	cpi	r24, 0x04	; 4
+ 4b4:	51 f5       	brne	.+84     	; 0x50a <pegleg_data_tx+0x62>
+		case MODE_EEPROM_READ: {
+			if (comm_data[0] < 64) {
+ 4b6:	80 91 2f 01 	lds	r24, 0x012F	; 0x80012f <comm_data>
+ 4ba:	80 34       	cpi	r24, 0x40	; 64
+ 4bc:	28 f4       	brcc	.+10     	; 0x4c8 <pegleg_data_tx+0x20>
+				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 <eeprom_read_byte>
+ 4c2:	e6 df       	rcall	.-52     	; 0x490 <i2c_slave_tx.constprop.4>
+				ret = 1;
+ 4c4:	81 e0       	ldi	r24, 0x01	; 1
+ 4c6:	06 c0       	rjmp	.+12     	; 0x4d4 <pegleg_data_tx+0x2c>
+			} 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 <comm_timeout>
+ 4da:	08 95       	ret
+			return ret;
+		}
+		
+		case MODE_TEMPSENSOR_READ: {
+			i2c_slave_tx(temperature, 1);
+ 4dc:	80 91 08 01 	lds	r24, 0x0108	; 0x800108 <temperature>
+ 4e0:	0e c0       	rjmp	.+28     	; 0x4fe <pegleg_data_tx+0x56>
+			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 <comm_data>
+ 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 <i2c_slave_tx.constprop.4>
+			comm_cmd = 0;
+ 500:	f1 2c       	mov	r15, r1
+			comm_timeout = 0;
+ 502:	10 92 2a 01 	sts	0x012A, r1	; 0x80012a <comm_timeout>
+			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 <tempsensor_process>:
+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 <adc_result+0x10>
+ 51c:	90 91 1e 01 	lds	r25, 0x011E	; 0x80011e <adc_result+0x11>
+ 520:	90 91 06 01 	lds	r25, 0x0106	; 0x800106 <temp_offset>
+ 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 <tempsensor_read>:
+
+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 <tempsensor_read+0xc>
+		// 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 <adc_channel>
+		
+	} else if (adc_read_step == 3) {
+ 53e:	83 30       	cpi	r24, 0x03	; 3
+ 540:	19 f4       	brne	.+6      	; 0x548 <tempsensor_read+0x16>
+		// 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 <adc_start>
+		
+	} else if (adc_read_step > 3) {
+ 548:	84 30       	cpi	r24, 0x04	; 4
+ 54a:	70 f0       	brcs	.+28     	; 0x568 <tempsensor_read+0x36>
+		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 <adc_busy>
+ 554:	81 11       	cpse	r24, r1
+ 556:	08 c0       	rjmp	.+16     	; 0x568 <tempsensor_read+0x36>
+			// 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_channel>
+			adc_read_mode = 0;
+ 55e:	10 92 20 01 	sts	0x0120, r1	; 0x800120 <adc_read_mode>
+			temperature = tempsensor_process();
+ 562:	da df       	rcall	.-76     	; 0x518 <tempsensor_process>
+ 564:	80 93 08 01 	sts	0x0108, r24	; 0x800108 <temperature>
+ 568:	08 95       	ret
+
+0000056a <main>:
+/* 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 <rgbled_io_init>
+/* 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 <timer1_mode>
+
+	// 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 <adc_init>
+	// 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 <main+0xea>
+		// turn on the ADC, wait for it to warm up
+		adc_init();
+ 60e:	42 dd       	rcall	.-1404   	; 0x94 <adc_init>
+	#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 <main+0xac>
+ 61e:	00 c0       	rjmp	.+0      	; 0x620 <main+0xb6>
+ 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 <main+0xea>
+			// 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 <adc_read_mode>
+			tempsensor_read();
+ 62e:	81 df       	rcall	.-254    	; 0x532 <tempsensor_read>
+			while (adc_busy);
+ 630:	80 91 1f 01 	lds	r24, 0x011F	; 0x80011f <adc_busy>
+ 634:	81 11       	cpse	r24, r1
+ 636:	fc cf       	rjmp	.-8      	; 0x630 <main+0xc6>
+			
+			// here's our correction factor!
+			temp_offset = adc_result[ADC_CHAN_TEMP];
+ 638:	60 91 1d 01 	lds	r22, 0x011D	; 0x80011d <adc_result+0x10>
+ 63c:	70 91 1e 01 	lds	r23, 0x011E	; 0x80011e <adc_result+0x11>
+ 640:	70 93 07 01 	sts	0x0107, r23	; 0x800107 <temp_offset+0x1>
+ 644:	60 93 06 01 	sts	0x0106, r22	; 0x800106 <temp_offset>
+			
+			// 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 <eeprom_write_word>
+			
+			// and that's it - we're done.
+			adc_read_mode = 0;
+ 64e:	10 92 20 01 	sts	0x0120, r1	; 0x800120 <adc_read_mode>
+ 652:	0d c0       	rjmp	.+26     	; 0x66e <main+0x104>
+			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 <eeprom_read_word>
+	
+	// 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 <main+0xfc>
+		// 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 <temp_offset+0x1>
+ 66a:	80 93 06 01 	sts	0x0106, r24	; 0x800106 <temp_offset>
+	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 <pirate_sleep_mode>
+ 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 <pirate_sleep_mode>
+		
+		// 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 <main+0x104>
+
+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 <comm_data>
+	
+		// clear our data watchdog and data index
+		comm_data_idx = 0;
+ 6fa:	10 92 33 01 	sts	0x0133, r1	; 0x800133 <comm_data_idx>
+		comm_timeout = 0;
+ 6fe:	10 92 2a 01 	sts	0x012A, r1	; 0x80012a <comm_timeout>
+	
+		// 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 <comm_data_idx>
+ 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_idx>
+		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 <pegleg_cmd>
+ 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 <pegleg_data_tx>
+			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 <tim0_milli>
+ 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 <tim0_milli>
+ 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_milli>
+		tim0_centi++;
+ 7a4:	80 91 0a 01 	lds	r24, 0x010A	; 0x80010a <tim0_centi>
+ 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 <tim0_centi>
+ 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 <tim0_centi>
+		}
+	}
+	
+	// 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 <adc_read_mode>
+ 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 <adc_read_mode>
+ 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 <tempsensor_read>
+				break;
+ 7dc:	01 c0       	rjmp	.+2      	; 0x7e0 <__vector_12+0x72>
+			}
+			case ADC_MODE_LIGHTSENSOR: {
+				rgbled_sensor_read();
+ 7de:	93 dd       	rcall	.-1242   	; 0x306 <rgbled_sensor_read>
+				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 <adc_read_mode>
+ 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 <rgbled_update>
+	}
+	
+	
+	/* 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 <comm_timeout>
+ 80a:	8f 5f       	subi	r24, 0xFF	; 255
+ 80c:	80 93 2a 01 	sts	0x012A, r24	; 0x80012a <comm_timeout>
+ 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 <comm_timeout>
+			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 <eeprom_read_byte>:
+ 852:	f9 99       	sbic	0x1f, 1	; 31
+ 854:	fe cf       	rjmp	.-4      	; 0x852 <eeprom_read_byte>
+ 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 <eeprom_read_word>:
+ 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 <eeprom_read_blraw>
+
+00000868 <eeprom_write_word>:
+ 868:	10 d0       	rcall	.+32     	; 0x88a <eeprom_write_byte>
+ 86a:	27 2f       	mov	r18, r23
+ 86c:	0f c0       	rjmp	.+30     	; 0x88c <eeprom_write_r18>
+
+0000086e <eeprom_read_block>:
+ 86e:	dc 01       	movw	r26, r24
+ 870:	86 2f       	mov	r24, r22
+
+00000872 <eeprom_read_blraw>:
+ 872:	e8 2f       	mov	r30, r24
+ 874:	f9 99       	sbic	0x1f, 1	; 31
+ 876:	fe cf       	rjmp	.-4      	; 0x874 <eeprom_read_blraw+0x2>
+ 878:	05 c0       	rjmp	.+10     	; 0x884 <eeprom_read_blraw+0x12>
+ 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 <eeprom_read_blraw+0x8>
+ 888:	08 95       	ret
+
+0000088a <eeprom_write_byte>:
+ 88a:	26 2f       	mov	r18, r22
+
+0000088c <eeprom_write_r18>:
+ 88c:	f9 99       	sbic	0x1f, 1	; 31
+ 88e:	fe cf       	rjmp	.-4      	; 0x88c <eeprom_write_r18>
+ 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_attiny88/Debug/wp_dc22_attiny88.map b/fw_attiny88/Debug/wp_dc22_attiny88.map
new file mode 100644
index 0000000..f22afa5
--- /dev/null
+++ b/fw_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_attiny88/Debug/wp_dc22_attiny88.srec b/fw_attiny88/Debug/wp_dc22_attiny88.srec
new file mode 100644
index 0000000..77e6966
--- /dev/null
+++ b/fw_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_attiny88/Release/Makefile b/fw_attiny88/Release/Makefile
new file mode 100644
index 0000000..9cd9882
--- /dev/null
+++ b/fw_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_attiny88/Release/makedep.mk b/fw_attiny88/Release/makedep.mk
new file mode 100644
index 0000000..089e3be
--- /dev/null
+++ b/fw_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_attiny88/Release/src/adc.d b/fw_attiny88/Release/src/adc.d
new file mode 100644
index 0000000..c7b1dde
--- /dev/null
+++ b/fw_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_attiny88/Release/src/adc.o b/fw_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<XhV9wNSbJ&8&bRRl*_!Rn5H<FC
zSJJ)pWKF6`-%7Q_{<M4ARotq(<gU2)-8Hx6dYHL3HQ*5KgQA6)+8t^BhV^}uUiI!s
z-zAqvR<rLoA3KSgmU9uErs)f*o?NV7ttS?5yVqTwvk=UkAK|rGSgWO3?G+@b!D`s0
zVD_I<E9s3ivrfgT^w)@5&YE-IS#g$}s-rlkowOs_()W^`wD;6$_}H;m22yW+Fsd9;
z#wJW<_}%xFv!zlYmscl>%1iQ)oKZ3_A09j~a9BPh4~mo9jN$W((|T)jgebP<bUBZP
zhmpsq2h8gocD>aP{8}h~0{D$kzOREBthZ$RZmyxbe|$@IjJ9><J@jh8uttO)?i%mw
z%DcyR(8-`;KjKb`(|bXF+|ResCqaJH&wFSbvE7R(L4UQ3uKZF^f6uS)qpQLAPDHN9
zfo_?<j9eJ+9jRJQ&XJ;=8BtCuN*kPNgV7ViJ}@Vz6hj~P@r-Vif&?=a^@47w<9eB8
zl!@Ym=>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}<vQkf~oZN!C<TC7BOPW<u`V4B5~N>Lw>HNf+I|FCj8~
zO<2|!?A$v!SDKvEizb%%zwIeh@;8M)AHMN^hmFVB_QDy*ID!3J-E$c0h5uI_pLcg(
zz8k_s-z<o5-ABlei=tqRQ+|u$@GP8d7m{;`I8OiN;xSx7`Vb!0<MTWU7bg0Sf(YxG
zNX~*|J$`qEUI93)_cQW)aA87^->$IUk4Sz3$9nuy3O&A$;r**YKxkm7gY5wGx5CDC
znKtx)c@BF5F3y4nZr~Z`|0f6&+8m>TMEn87GMqnW*5LK=8_8=8>uE?<zzGw2{{Tk2
BT7Lil

literal 0
HcmV?d00001

diff --git a/fw_attiny88/Release/src/led.d b/fw_attiny88/Release/src/led.d
new file mode 100644
index 0000000..cfed90d
--- /dev/null
+++ b/fw_attiny88/Release/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_attiny88/Release/src/led.o b/fw_attiny88/Release/src/led.o
new file mode 100644
index 0000000000000000000000000000000000000000..9accea763560ea7c247fa4a1d00f3be8389bf9ab
GIT binary patch
literal 3020
zcma)7Piz!r6o0d`$hNhXRtRdNw6wue+G(qR1pEU6ZDR=802(#K*=@VfP4-`Q2Wc_F
z)-JFu1g0)yi^Q0CGQ@*>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^=YPeQ<sNUbZCR?R-
zRh)OPh)OlIPf%W|P(vjMq*5In6&~JGA?~&!D%DpAkow5_>ikCfK&*HUwu!tH75u!z
z*U?9?ychS=NPnzORq<JHmH@N~r+J$RWFxc*_jA`_c;XJPqn`xNI=r49z?SZ%RR1p#
zXT#m9mBV#-J-9o+S@0(0a(~;Z;xBQs5UzKiic=&sq79R-ANT8nx?TcDO5oVx0S6e-
zgq{qYcJR4SGA>B+^bi*7sZcBxHo_l<jd2pLWGKk~h~(k89*%_#NzWukf<{QP#M!7G
zIpt=_awgY~C)X?%u7B87M4ZjTBV)3n%T2+NVSVUKYTN;M%VIG!$<CA!#IB5-<<a;^
zNU+qIh(Sg;8cO!*j$7A9;`(qrF|Ok-f;cdykx($H52aGH8)vN65$%P273u-r1N)Zn
z^ZfdS{|M|!Xw7C^AUun;0>^-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#J<Tw{kOW?#;_mJCIL
zYa(Lo9}S2JbzYIjM%@Gd*rf98|7%96ciHfo!nhsjFTcdva6B3f#rUNDpEM(lKQlag
zEc|TUB0oW`a57d!@Ns!BBF?k;UwJ%R)%)^yU5eb7XV0C-@8o%zBw|btK>6L+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|_<nvtw;g}Rz?@u_~bMPYqGRC<Q*9kwL1q<i(m7sIwJXU-T
t%6oDkfrqe>141NZ>yb`aABZ2y&twynd*yE;pSipTKzbJezbpbS;oqDS2vq<8

literal 0
HcmV?d00001

diff --git a/fw_attiny88/Release/src/main.d b/fw_attiny88/Release/src/main.d
new file mode 100644
index 0000000..4b23a97
--- /dev/null
+++ b/fw_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_attiny88/Release/src/main.o b/fw_attiny88/Release/src/main.o
new file mode 100644
index 0000000000000000000000000000000000000000..28f8dd26f2f196dda4e512ddae1c8dae2f147afe
GIT binary patch
literal 7080
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
VV8+81QfI}Ew;G3MsnyZM`yX`Nn}h%W

literal 0
HcmV?d00001

diff --git a/fw_attiny88/Release/wp_dc22_attiny88.eep b/fw_attiny88/Release/wp_dc22_attiny88.eep
new file mode 100644
index 0000000..7c166a1
--- /dev/null
+++ b/fw_attiny88/Release/wp_dc22_attiny88.eep
@@ -0,0 +1 @@
+:00000001FF
diff --git a/fw_attiny88/Release/wp_dc22_attiny88.elf b/fw_attiny88/Release/wp_dc22_attiny88.elf
new file mode 100644
index 0000000000000000000000000000000000000000..f5947b88c9908d03d1494ffef9bb39f0d96c7336
GIT binary patch
literal 11872
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
E00cc500000

literal 0
HcmV?d00001

diff --git a/fw_attiny88/Release/wp_dc22_attiny88.hex b/fw_attiny88/Release/wp_dc22_attiny88.hex
new file mode 100644
index 0000000..9e9ed19
--- /dev/null
+++ b/fw_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_attiny88/Release/wp_dc22_attiny88.lss b/fw_attiny88/Release/wp_dc22_attiny88.lss
new file mode 100644
index 0000000..63d9d93
--- /dev/null
+++ b/fw_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 <pegleg_cmd+0x16>
+  2a:	c0 c1       	rjmp	.+896    	; 0x3ac <pegleg_cmd+0x1e>
+  2c:	ca c1       	rjmp	.+916    	; 0x3c2 <pegleg_cmd+0x34>
+  2e:	db c1       	rjmp	.+950    	; 0x3e6 <pegleg_cmd+0x58>
+  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 <main>
+  90:	09 c4       	rjmp	.+2066   	; 0x8a4 <_exit>
+
+00000092 <__bad_interrupt>:
+  92:	b6 cf       	rjmp	.-148    	; 0x0 <__vectors>
+
+00000094 <adc_init>:
+  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 <adc_channel>:
+  b8:	28 2f       	mov	r18, r24
+  ba:	80 31       	cpi	r24, 0x10	; 16
+  bc:	88 f4       	brcc	.+34     	; 0xe0 <adc_channel+0x28>
+  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 <adc_channel+0x22>
+  ce:	81 e0       	ldi	r24, 0x01	; 1
+  d0:	01 c0       	rjmp	.+2      	; 0xd4 <adc_channel+0x1c>
+  d2:	88 0f       	add	r24, r24
+  d4:	2a 95       	dec	r18
+  d6:	ea f7       	brpl	.-6      	; 0xd2 <adc_channel+0x1a>
+  d8:	01 c0       	rjmp	.+2      	; 0xdc <adc_channel+0x24>
+  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 <adc_channel+0x34>
+  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 <adc_channel+0x3e>
+  ec:	62 30       	cpi	r22, 0x02	; 2
+  ee:	29 f4       	brne	.+10     	; 0xfa <adc_channel+0x42>
+  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 <adc_start>:
+  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 <adc_start+0x36>
+ 108:	80 93 0c 01 	sts	0x010C, r24	; 0x80010c <adc_reread>
+ 10c:	66 23       	and	r22, r22
+ 10e:	11 f0       	breq	.+4      	; 0x114 <adc_start+0x18>
+ 110:	98 2f       	mov	r25, r24
+ 112:	01 c0       	rjmp	.+2      	; 0x116 <adc_start+0x1a>
+ 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 <adc_busy>
+ 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 <adc_start+0x38>
+ 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 <adc_reread>
+ 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 <adc_reread>
+ 19a:	88 23       	and	r24, r24
+ 19c:	59 f0       	breq	.+22     	; 0x1b4 <__vector_16+0x7c>
+ 19e:	80 91 0c 01 	lds	r24, 0x010C	; 0x80010c <adc_reread>
+ 1a2:	81 50       	subi	r24, 0x01	; 1
+ 1a4:	80 93 0c 01 	sts	0x010C, r24	; 0x80010c <adc_reread>
+ 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 <adc_busy>
+ 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 <rgbled_io_init>:
+ 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 <rgbled_update>:
+ 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 <rgbled_update+0x3a>
+ 244:	44 0f       	add	r20, r20
+ 246:	2a 95       	dec	r18
+ 248:	ea f7       	brpl	.-6      	; 0x244 <rgbled_update+0x38>
+ 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 <rgbled_update+0x4e>
+ 258:	88 0f       	add	r24, r24
+ 25a:	0a 94       	dec	r0
+ 25c:	ea f7       	brpl	.-6      	; 0x258 <rgbled_update+0x4c>
+ 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 <rgbled_sensor_init>:
+ 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 <rgbled_sensor_init+0x2a>
+ 2b0:	66 0f       	add	r22, r22
+ 2b2:	77 1f       	adc	r23, r23
+ 2b4:	8a 95       	dec	r24
+ 2b6:	e2 f7       	brpl	.-8      	; 0x2b0 <rgbled_sensor_init+0x26>
+ 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 <rgbled_sensor_init+0x46>
+ 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 <rgbled_sensor_sensitivity>:
+ 2ea:	84 30       	cpi	r24, 0x04	; 4
+ 2ec:	38 f4       	brcc	.+14     	; 0x2fc <rgbled_sensor_sensitivity+0x12>
+ 2ee:	66 23       	and	r22, r22
+ 2f0:	29 f0       	breq	.+10     	; 0x2fc <rgbled_sensor_sensitivity+0x12>
+ 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 <rgbled_sensor_read_idx>:
+ 2fe:	83 70       	andi	r24, 0x03	; 3
+ 300:	80 93 05 01 	sts	0x0105, r24	; 0x800105 <rgbled_read_sel>
+ 304:	08 95       	ret
+
+00000306 <rgbled_sensor_read>:
+ 306:	80 91 05 01 	lds	r24, 0x0105	; 0x800105 <rgbled_read_sel>
+ 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 <rgbled_sensor_read+0x14>
+ 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 <rgbled_sensor_read+0x20>
+ 320:	61 e0       	ldi	r22, 0x01	; 1
+ 322:	8f e0       	ldi	r24, 0x0F	; 15
+ 324:	12 c0       	rjmp	.+36     	; 0x34a <rgbled_sensor_read+0x44>
+ 326:	21 30       	cpi	r18, 0x01	; 1
+ 328:	19 f4       	brne	.+6      	; 0x330 <rgbled_sensor_read+0x2a>
+ 32a:	60 e0       	ldi	r22, 0x00	; 0
+ 32c:	80 e0       	ldi	r24, 0x00	; 0
+ 32e:	18 c0       	rjmp	.+48     	; 0x360 <rgbled_sensor_read+0x5a>
+ 330:	22 30       	cpi	r18, 0x02	; 2
+ 332:	61 f4       	brne	.+24     	; 0x34c <rgbled_sensor_read+0x46>
+ 334:	90 91 1f 01 	lds	r25, 0x011F	; 0x80011f <adc_busy>
+ 338:	99 23       	and	r25, r25
+ 33a:	19 f0       	breq	.+6      	; 0x342 <rgbled_sensor_read+0x3c>
+ 33c:	ee 24       	eor	r14, r14
+ 33e:	e3 94       	inc	r14
+ 340:	08 95       	ret
+ 342:	a3 df       	rcall	.-186    	; 0x28a <rgbled_sensor_init>
+ 344:	6f ef       	ldi	r22, 0xFF	; 255
+ 346:	80 91 05 01 	lds	r24, 0x0105	; 0x800105 <rgbled_read_sel>
+ 34a:	b6 ce       	rjmp	.-660    	; 0xb8 <adc_channel>
+ 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 <rgbled_sensor_read+0x5c>
+ 35c:	61 e0       	ldi	r22, 0x01	; 1
+ 35e:	83 e0       	ldi	r24, 0x03	; 3
+ 360:	cd ce       	rjmp	.-614    	; 0xfc <adc_start>
+ 362:	84 17       	cp	r24, r20
+ 364:	95 07       	cpc	r25, r21
+ 366:	94 f4       	brge	.+36     	; 0x38c <rgbled_sensor_read+0x86>
+ 368:	21 50       	subi	r18, 0x01	; 1
+ 36a:	e2 2e       	mov	r14, r18
+ 36c:	80 91 1f 01 	lds	r24, 0x011F	; 0x80011f <adc_busy>
+ 370:	81 11       	cpse	r24, r1
+ 372:	0c c0       	rjmp	.+24     	; 0x38c <rgbled_sensor_read+0x86>
+ 374:	6f ef       	ldi	r22, 0xFF	; 255
+ 376:	8f e0       	ldi	r24, 0x0F	; 15
+ 378:	9f de       	rcall	.-706    	; 0xb8 <adc_channel>
+ 37a:	3b df       	rcall	.-394    	; 0x1f2 <rgbled_io_init>
+ 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 <adc_read_mode>
+ 38c:	08 95       	ret
+
+0000038e <pegleg_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 <pegleg_cmd+0xe>
+ 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 <comm_timeout>
+ 3aa:	08 95       	ret
+ 3ac:	80 91 33 01 	lds	r24, 0x0133	; 0x800133 <comm_data_idx>
+ 3b0:	88 23       	and	r24, r24
+ 3b2:	09 f4       	brne	.+2      	; 0x3b6 <pegleg_cmd+0x28>
+ 3b4:	6c c0       	rjmp	.+216    	; 0x48e <__LOCK_REGION_LENGTH__+0x8e>
+ 3b6:	f0 90 30 01 	lds	r15, 0x0130	; 0x800130 <comm_data+0x1>
+ 3ba:	83 e0       	ldi	r24, 0x03	; 3
+ 3bc:	80 93 33 01 	sts	0x0133, r24	; 0x800133 <comm_data_idx>
+ 3c0:	50 c0       	rjmp	.+160    	; 0x462 <__LOCK_REGION_LENGTH__+0x62>
+ 3c2:	e0 91 2f 01 	lds	r30, 0x012F	; 0x80012f <comm_data>
+ 3c6:	e4 30       	cpi	r30, 0x04	; 4
+ 3c8:	20 f4       	brcc	.+8      	; 0x3d2 <pegleg_cmd+0x44>
+ 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 <pegleg_cmd+0x50>
+ 3d2:	e8 30       	cpi	r30, 0x08	; 8
+ 3d4:	08 f0       	brcs	.+2      	; 0x3d8 <pegleg_cmd+0x4a>
+ 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 <comm_data+0x1>
+ 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 <comm_data_idx>
+ 3ea:	88 23       	and	r24, r24
+ 3ec:	09 f4       	brne	.+2      	; 0x3f0 <pegleg_cmd+0x62>
+ 3ee:	4f c0       	rjmp	.+158    	; 0x48e <__LOCK_REGION_LENGTH__+0x8e>
+ 3f0:	80 91 1d 01 	lds	r24, 0x011D	; 0x80011d <adc_result+0x10>
+ 3f4:	90 91 1e 01 	lds	r25, 0x011E	; 0x80011e <adc_result+0x11>
+ 3f8:	89 2b       	or	r24, r25
+ 3fa:	09 f4       	brne	.+2      	; 0x3fe <pegleg_cmd+0x70>
+ 3fc:	44 c0       	rjmp	.+136    	; 0x486 <__LOCK_REGION_LENGTH__+0x86>
+ 3fe:	60 91 1d 01 	lds	r22, 0x011D	; 0x80011d <adc_result+0x10>
+ 402:	70 91 1e 01 	lds	r23, 0x011E	; 0x80011e <adc_result+0x11>
+ 406:	80 91 30 01 	lds	r24, 0x0130	; 0x800130 <comm_data+0x1>
+ 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 <temp_offset+0x1>
+ 416:	60 93 06 01 	sts	0x0106, r22	; 0x800106 <temp_offset>
+ 41a:	8e e3       	ldi	r24, 0x3E	; 62
+ 41c:	90 e0       	ldi	r25, 0x00	; 0
+ 41e:	24 d2       	rcall	.+1096   	; 0x868 <eeprom_write_word>
+ 420:	1f c0       	rjmp	.+62     	; 0x460 <__LOCK_REGION_LENGTH__+0x60>
+ 422:	80 91 33 01 	lds	r24, 0x0133	; 0x800133 <comm_data_idx>
+ 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 <adc_read_mode>
+ 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 <adc_read_mode>
+ 438:	e1 2c       	mov	r14, r1
+ 43a:	88 e0       	ldi	r24, 0x08	; 8
+ 43c:	80 93 20 01 	sts	0x0120, r24	; 0x800120 <adc_read_mode>
+ 440:	10 c0       	rjmp	.+32     	; 0x462 <__LOCK_REGION_LENGTH__+0x62>
+ 442:	80 91 20 01 	lds	r24, 0x0120	; 0x800120 <adc_read_mode>
+ 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 <adc_read_mode>
+ 44e:	e1 2c       	mov	r14, r1
+ 450:	80 91 2f 01 	lds	r24, 0x012F	; 0x80012f <comm_data>
+ 454:	54 df       	rcall	.-344    	; 0x2fe <rgbled_sensor_read_idx>
+ 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 <pirate_sleep_mode>
+ 460:	f1 2c       	mov	r15, r1
+ 462:	10 92 2a 01 	sts	0x012A, r1	; 0x80012a <comm_timeout>
+ 466:	80 e0       	ldi	r24, 0x00	; 0
+ 468:	08 95       	ret
+ 46a:	80 91 33 01 	lds	r24, 0x0133	; 0x800133 <comm_data_idx>
+ 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 <comm_data>
+ 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 <comm_data+0x1>
+ 47e:	66 23       	and	r22, r22
+ 480:	79 f3       	breq	.-34     	; 0x460 <__LOCK_REGION_LENGTH__+0x60>
+ 482:	33 df       	rcall	.-410    	; 0x2ea <rgbled_sensor_sensitivity>
+ 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 <comm_timeout>
+ 48c:	81 e0       	ldi	r24, 0x01	; 1
+ 48e:	08 95       	ret
+
+00000490 <i2c_slave_tx.constprop.4>:
+ 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 <pegleg_data_tx>:
+ 4a8:	8f 2d       	mov	r24, r15
+ 4aa:	88 30       	cpi	r24, 0x08	; 8
+ 4ac:	b9 f0       	breq	.+46     	; 0x4dc <pegleg_data_tx+0x34>
+ 4ae:	89 30       	cpi	r24, 0x09	; 9
+ 4b0:	c1 f0       	breq	.+48     	; 0x4e2 <pegleg_data_tx+0x3a>
+ 4b2:	84 30       	cpi	r24, 0x04	; 4
+ 4b4:	51 f5       	brne	.+84     	; 0x50a <pegleg_data_tx+0x62>
+ 4b6:	80 91 2f 01 	lds	r24, 0x012F	; 0x80012f <comm_data>
+ 4ba:	80 34       	cpi	r24, 0x40	; 64
+ 4bc:	28 f4       	brcc	.+10     	; 0x4c8 <pegleg_data_tx+0x20>
+ 4be:	90 e0       	ldi	r25, 0x00	; 0
+ 4c0:	c8 d1       	rcall	.+912    	; 0x852 <eeprom_read_byte>
+ 4c2:	e6 df       	rcall	.-52     	; 0x490 <i2c_slave_tx.constprop.4>
+ 4c4:	81 e0       	ldi	r24, 0x01	; 1
+ 4c6:	06 c0       	rjmp	.+12     	; 0x4d4 <pegleg_data_tx+0x2c>
+ 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 <comm_timeout>
+ 4da:	08 95       	ret
+ 4dc:	80 91 08 01 	lds	r24, 0x0108	; 0x800108 <temperature>
+ 4e0:	0e c0       	rjmp	.+28     	; 0x4fe <pegleg_data_tx+0x56>
+ 4e2:	e0 91 2f 01 	lds	r30, 0x012F	; 0x80012f <comm_data>
+ 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 <i2c_slave_tx.constprop.4>
+ 500:	f1 2c       	mov	r15, r1
+ 502:	10 92 2a 01 	sts	0x012A, r1	; 0x80012a <comm_timeout>
+ 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 <tempsensor_process>:
+ 518:	80 91 1d 01 	lds	r24, 0x011D	; 0x80011d <adc_result+0x10>
+ 51c:	90 91 1e 01 	lds	r25, 0x011E	; 0x80011e <adc_result+0x11>
+ 520:	90 91 06 01 	lds	r25, 0x0106	; 0x800106 <temp_offset>
+ 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 <tempsensor_read>:
+ 532:	8e 2d       	mov	r24, r14
+ 534:	e1 10       	cpse	r14, r1
+ 536:	03 c0       	rjmp	.+6      	; 0x53e <tempsensor_read+0xc>
+ 538:	62 e0       	ldi	r22, 0x02	; 2
+ 53a:	88 e0       	ldi	r24, 0x08	; 8
+ 53c:	bd cd       	rjmp	.-1158   	; 0xb8 <adc_channel>
+ 53e:	83 30       	cpi	r24, 0x03	; 3
+ 540:	19 f4       	brne	.+6      	; 0x548 <tempsensor_read+0x16>
+ 542:	61 e0       	ldi	r22, 0x01	; 1
+ 544:	84 e0       	ldi	r24, 0x04	; 4
+ 546:	da cd       	rjmp	.-1100   	; 0xfc <adc_start>
+ 548:	84 30       	cpi	r24, 0x04	; 4
+ 54a:	70 f0       	brcs	.+28     	; 0x568 <tempsensor_read+0x36>
+ 54c:	81 50       	subi	r24, 0x01	; 1
+ 54e:	e8 2e       	mov	r14, r24
+ 550:	80 91 1f 01 	lds	r24, 0x011F	; 0x80011f <adc_busy>
+ 554:	81 11       	cpse	r24, r1
+ 556:	08 c0       	rjmp	.+16     	; 0x568 <tempsensor_read+0x36>
+ 558:	61 e0       	ldi	r22, 0x01	; 1
+ 55a:	8f e0       	ldi	r24, 0x0F	; 15
+ 55c:	ad dd       	rcall	.-1190   	; 0xb8 <adc_channel>
+ 55e:	10 92 20 01 	sts	0x0120, r1	; 0x800120 <adc_read_mode>
+ 562:	da df       	rcall	.-76     	; 0x518 <tempsensor_process>
+ 564:	80 93 08 01 	sts	0x0108, r24	; 0x800108 <temperature>
+ 568:	08 95       	ret
+
+0000056a <main>:
+ 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 <rgbled_io_init>
+ 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 <timer1_mode>
+ 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 <adc_init>
+ 60a:	62 99       	sbic	0x0c, 2	; 12
+ 60c:	23 c0       	rjmp	.+70     	; 0x654 <main+0xea>
+ 60e:	42 dd       	rcall	.-1404   	; 0x94 <adc_init>
+ 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 <main+0xac>
+ 61e:	00 c0       	rjmp	.+0      	; 0x620 <main+0xb6>
+ 620:	00 00       	nop
+ 622:	62 99       	sbic	0x0c, 2	; 12
+ 624:	17 c0       	rjmp	.+46     	; 0x654 <main+0xea>
+ 626:	78 94       	sei
+ 628:	88 e0       	ldi	r24, 0x08	; 8
+ 62a:	80 93 20 01 	sts	0x0120, r24	; 0x800120 <adc_read_mode>
+ 62e:	81 df       	rcall	.-254    	; 0x532 <tempsensor_read>
+ 630:	80 91 1f 01 	lds	r24, 0x011F	; 0x80011f <adc_busy>
+ 634:	81 11       	cpse	r24, r1
+ 636:	fc cf       	rjmp	.-8      	; 0x630 <main+0xc6>
+ 638:	60 91 1d 01 	lds	r22, 0x011D	; 0x80011d <adc_result+0x10>
+ 63c:	70 91 1e 01 	lds	r23, 0x011E	; 0x80011e <adc_result+0x11>
+ 640:	70 93 07 01 	sts	0x0107, r23	; 0x800107 <temp_offset+0x1>
+ 644:	60 93 06 01 	sts	0x0106, r22	; 0x800106 <temp_offset>
+ 648:	8e e3       	ldi	r24, 0x3E	; 62
+ 64a:	90 e0       	ldi	r25, 0x00	; 0
+ 64c:	0d d1       	rcall	.+538    	; 0x868 <eeprom_write_word>
+ 64e:	10 92 20 01 	sts	0x0120, r1	; 0x800120 <adc_read_mode>
+ 652:	0d c0       	rjmp	.+26     	; 0x66e <main+0x104>
+ 654:	8e e3       	ldi	r24, 0x3E	; 62
+ 656:	90 e0       	ldi	r25, 0x00	; 0
+ 658:	03 d1       	rcall	.+518    	; 0x860 <eeprom_read_word>
+ 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 <main+0xfc>
+ 662:	81 e1       	ldi	r24, 0x11	; 17
+ 664:	91 e0       	ldi	r25, 0x01	; 1
+ 666:	90 93 07 01 	sts	0x0107, r25	; 0x800107 <temp_offset+0x1>
+ 66a:	80 93 06 01 	sts	0x0106, r24	; 0x800106 <temp_offset>
+ 66e:	83 b7       	in	r24, 0x33	; 51
+ 670:	89 7f       	andi	r24, 0xF9	; 249
+ 672:	90 91 09 01 	lds	r25, 0x0109	; 0x800109 <pirate_sleep_mode>
+ 676:	89 2b       	or	r24, r25
+ 678:	83 bf       	out	0x33, r24	; 51
+ 67a:	10 92 09 01 	sts	0x0109, r1	; 0x800109 <pirate_sleep_mode>
+ 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 <main+0x104>
+
+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 <comm_data>
+ 6fa:	10 92 33 01 	sts	0x0133, r1	; 0x800133 <comm_data_idx>
+ 6fe:	10 92 2a 01 	sts	0x012A, r1	; 0x80012a <comm_timeout>
+ 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 <comm_data_idx>
+ 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_idx>
+ 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 <pegleg_cmd>
+ 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 <pegleg_data_tx>
+ 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 <tim0_milli>
+ 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 <tim0_milli>
+ 79e:	0c c0       	rjmp	.+24     	; 0x7b8 <__vector_12+0x4a>
+ 7a0:	10 92 0b 01 	sts	0x010B, r1	; 0x80010b <tim0_milli>
+ 7a4:	80 91 0a 01 	lds	r24, 0x010A	; 0x80010a <tim0_centi>
+ 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 <tim0_centi>
+ 7b2:	02 c0       	rjmp	.+4      	; 0x7b8 <__vector_12+0x4a>
+ 7b4:	10 92 0a 01 	sts	0x010A, r1	; 0x80010a <tim0_centi>
+ 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 <adc_read_mode>
+ 7ca:	88 23       	and	r24, r24
+ 7cc:	71 f0       	breq	.+28     	; 0x7ea <__vector_12+0x7c>
+ 7ce:	80 91 20 01 	lds	r24, 0x0120	; 0x800120 <adc_read_mode>
+ 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 <tempsensor_read>
+ 7dc:	01 c0       	rjmp	.+2      	; 0x7e0 <__vector_12+0x72>
+ 7de:	93 dd       	rcall	.-1242   	; 0x306 <rgbled_sensor_read>
+ 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 <adc_read_mode>
+ 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 <rgbled_update>
+ 802:	ff 20       	and	r15, r15
+ 804:	a1 f0       	breq	.+40     	; 0x82e <__vector_12+0xc0>
+ 806:	80 91 2a 01 	lds	r24, 0x012A	; 0x80012a <comm_timeout>
+ 80a:	8f 5f       	subi	r24, 0xFF	; 255
+ 80c:	80 93 2a 01 	sts	0x012A, r24	; 0x80012a <comm_timeout>
+ 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 <comm_timeout>
+ 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 <eeprom_read_byte>:
+ 852:	f9 99       	sbic	0x1f, 1	; 31
+ 854:	fe cf       	rjmp	.-4      	; 0x852 <eeprom_read_byte>
+ 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 <eeprom_read_word>:
+ 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 <eeprom_read_blraw>
+
+00000868 <eeprom_write_word>:
+ 868:	10 d0       	rcall	.+32     	; 0x88a <eeprom_write_byte>
+ 86a:	27 2f       	mov	r18, r23
+ 86c:	0f c0       	rjmp	.+30     	; 0x88c <eeprom_write_r18>
+
+0000086e <eeprom_read_block>:
+ 86e:	dc 01       	movw	r26, r24
+ 870:	86 2f       	mov	r24, r22
+
+00000872 <eeprom_read_blraw>:
+ 872:	e8 2f       	mov	r30, r24
+ 874:	f9 99       	sbic	0x1f, 1	; 31
+ 876:	fe cf       	rjmp	.-4      	; 0x874 <eeprom_read_blraw+0x2>
+ 878:	05 c0       	rjmp	.+10     	; 0x884 <eeprom_read_blraw+0x12>
+ 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 <eeprom_read_blraw+0x8>
+ 888:	08 95       	ret
+
+0000088a <eeprom_write_byte>:
+ 88a:	26 2f       	mov	r18, r22
+
+0000088c <eeprom_write_r18>:
+ 88c:	f9 99       	sbic	0x1f, 1	; 31
+ 88e:	fe cf       	rjmp	.-4      	; 0x88c <eeprom_write_r18>
+ 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_attiny88/Release/wp_dc22_attiny88.map b/fw_attiny88/Release/wp_dc22_attiny88.map
new file mode 100644
index 0000000..20fd6b3
--- /dev/null
+++ b/fw_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_attiny88/Release/wp_dc22_attiny88.srec b/fw_attiny88/Release/wp_dc22_attiny88.srec
new file mode 100644
index 0000000..77e6966
--- /dev/null
+++ b/fw_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_attiny88/bin/wp_dc22_attiny88.elf b/fw_attiny88/bin/wp_dc22_attiny88.elf
new file mode 100644
index 0000000000000000000000000000000000000000..c2f4fb16eceacd5af6198253be32155feeee647f
GIT binary patch
literal 22748
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

literal 0
HcmV?d00001

diff --git a/fw_attiny88/bin/wp_dc22_attiny88.hex b/fw_attiny88/bin/wp_dc22_attiny88.hex
new file mode 100644
index 0000000..9e9ed19
--- /dev/null
+++ b/fw_attiny88/bin/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/attiny88_main/src/adc.c b/fw_attiny88/src/adc.c
similarity index 100%
rename from attiny88_main/src/adc.c
rename to fw_attiny88/src/adc.c
diff --git a/attiny88_main/src/adc.h b/fw_attiny88/src/adc.h
similarity index 100%
rename from attiny88_main/src/adc.h
rename to fw_attiny88/src/adc.h
diff --git a/attiny88_main/src/config.h b/fw_attiny88/src/config.h
similarity index 100%
rename from attiny88_main/src/config.h
rename to fw_attiny88/src/config.h
diff --git a/attiny88_main/src/i2c.h b/fw_attiny88/src/i2c.h
similarity index 100%
rename from attiny88_main/src/i2c.h
rename to fw_attiny88/src/i2c.h
diff --git a/attiny88_main/src/i2c_interrupt.h b/fw_attiny88/src/i2c_interrupt.h
similarity index 100%
rename from attiny88_main/src/i2c_interrupt.h
rename to fw_attiny88/src/i2c_interrupt.h
diff --git a/attiny88_main/src/led.c b/fw_attiny88/src/led.c
similarity index 100%
rename from attiny88_main/src/led.c
rename to fw_attiny88/src/led.c
diff --git a/attiny88_main/src/led.h b/fw_attiny88/src/led.h
similarity index 100%
rename from attiny88_main/src/led.h
rename to fw_attiny88/src/led.h
diff --git a/attiny88_main/src/main.c b/fw_attiny88/src/main.c
similarity index 100%
rename from attiny88_main/src/main.c
rename to fw_attiny88/src/main.c
diff --git a/attiny88_main/src/timer.h b/fw_attiny88/src/timer.h
similarity index 100%
rename from attiny88_main/src/timer.h
rename to fw_attiny88/src/timer.h
diff --git a/attiny88_main/wp_dc22_attiny88.atsln b/fw_attiny88/wp_dc22_attiny88.atsln
similarity index 100%
rename from attiny88_main/wp_dc22_attiny88.atsln
rename to fw_attiny88/wp_dc22_attiny88.atsln
diff --git a/attiny88_main/wp_dc22_attiny88.componentinfo.xml b/fw_attiny88/wp_dc22_attiny88.componentinfo.xml
similarity index 100%
rename from attiny88_main/wp_dc22_attiny88.componentinfo.xml
rename to fw_attiny88/wp_dc22_attiny88.componentinfo.xml
diff --git a/attiny88_main/wp_dc22_attiny88.cproj b/fw_attiny88/wp_dc22_attiny88.cproj
similarity index 100%
rename from attiny88_main/wp_dc22_attiny88.cproj
rename to fw_attiny88/wp_dc22_attiny88.cproj