From 7f2d49b333c8d7c8afb0c54fc8e22041e176ecc5 Mon Sep 17 00:00:00 2001 From: Julian Date: Sat, 1 Jul 2023 12:37:05 +0200 Subject: [PATCH] Initial commit --- PoolClock.atsln | 34 + PoolClock/Debug/Makefile | 129 + PoolClock/Debug/PoolClock.eep | 1 + PoolClock/Debug/PoolClock.elf | Bin 0 -> 13704 bytes PoolClock/Debug/PoolClock.hex | 48 + PoolClock/Debug/PoolClock.lss | 715 ++++++ PoolClock/Debug/PoolClock.map | 503 ++++ PoolClock/Debug/PoolClock.srec | 49 + PoolClock/Debug/PoolClockWaterTemp.eep | 1 + PoolClock/Debug/PoolClockWaterTemp.elf | Bin 0 -> 30552 bytes PoolClock/Debug/PoolClockWaterTemp.hex | 171 ++ PoolClock/Debug/PoolClockWaterTemp.lss | 2104 +++++++++++++++++ PoolClock/Debug/PoolClockWaterTemp.map | 593 +++++ PoolClock/Debug/PoolClockWaterTemp.srec | 172 ++ PoolClock/Debug/main.d | 49 + PoolClock/Debug/main.o | Bin 0 -> 52232 bytes PoolClock/Debug/makedep.mk | 6 + .../PoolClockWaterTemp.componentinfo.xml | 86 + PoolClock/PoolClockWaterTemp.cproj | 139 ++ PoolClock/main - Kopie.c | 266 +++ PoolClock/main.c | 559 +++++ PoolClockAirTemp/Debug/Makefile | 129 + PoolClockAirTemp/Debug/PoolClockAirTemp.eep | 1 + PoolClockAirTemp/Debug/PoolClockAirTemp.elf | Bin 0 -> 15044 bytes PoolClockAirTemp/Debug/PoolClockAirTemp.hex | 77 + PoolClockAirTemp/Debug/PoolClockAirTemp.lss | 837 +++++++ PoolClockAirTemp/Debug/PoolClockAirTemp.map | 582 +++++ PoolClockAirTemp/Debug/PoolClockAirTemp.srec | 78 + PoolClockAirTemp/Debug/main.d | 49 + PoolClockAirTemp/Debug/main.o | Bin 0 -> 16808 bytes PoolClockAirTemp/Debug/makedep.mk | 6 + .../PoolClockAirTemp.componentinfo.xml | 86 + PoolClockAirTemp/PoolClockAirTemp.cproj | 126 + PoolClockAirTemp/main.c | 302 +++ PoolClockHumidity/Debug/Makefile | 129 + PoolClockHumidity/Debug/PoolClockHumidity.eep | 1 + PoolClockHumidity/Debug/PoolClockHumidity.elf | Bin 0 -> 29748 bytes PoolClockHumidity/Debug/PoolClockHumidity.hex | 148 ++ PoolClockHumidity/Debug/PoolClockHumidity.lss | 1958 +++++++++++++++ PoolClockHumidity/Debug/PoolClockHumidity.map | 514 ++++ .../Debug/PoolClockHumidity.srec | 149 ++ PoolClockHumidity/Debug/main.d | 49 + PoolClockHumidity/Debug/main.o | Bin 0 -> 52652 bytes PoolClockHumidity/Debug/makedep.mk | 6 + .../PoolClockHumidity.componentinfo.xml | 86 + PoolClockHumidity/PoolClockHumidity.cproj | 126 + PoolClockHumidity/main.c | 558 +++++ README.md | 1 + 48 files changed, 11623 insertions(+) create mode 100644 PoolClock.atsln create mode 100644 PoolClock/Debug/Makefile create mode 100644 PoolClock/Debug/PoolClock.eep create mode 100644 PoolClock/Debug/PoolClock.elf create mode 100644 PoolClock/Debug/PoolClock.hex create mode 100644 PoolClock/Debug/PoolClock.lss create mode 100644 PoolClock/Debug/PoolClock.map create mode 100644 PoolClock/Debug/PoolClock.srec create mode 100644 PoolClock/Debug/PoolClockWaterTemp.eep create mode 100644 PoolClock/Debug/PoolClockWaterTemp.elf create mode 100644 PoolClock/Debug/PoolClockWaterTemp.hex create mode 100644 PoolClock/Debug/PoolClockWaterTemp.lss create mode 100644 PoolClock/Debug/PoolClockWaterTemp.map create mode 100644 PoolClock/Debug/PoolClockWaterTemp.srec create mode 100644 PoolClock/Debug/main.d create mode 100644 PoolClock/Debug/main.o create mode 100644 PoolClock/Debug/makedep.mk create mode 100644 PoolClock/PoolClockWaterTemp.componentinfo.xml create mode 100644 PoolClock/PoolClockWaterTemp.cproj create mode 100644 PoolClock/main - Kopie.c create mode 100644 PoolClock/main.c create mode 100644 PoolClockAirTemp/Debug/Makefile create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.eep create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.elf create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.hex create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.lss create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.map create mode 100644 PoolClockAirTemp/Debug/PoolClockAirTemp.srec create mode 100644 PoolClockAirTemp/Debug/main.d create mode 100644 PoolClockAirTemp/Debug/main.o create mode 100644 PoolClockAirTemp/Debug/makedep.mk create mode 100644 PoolClockAirTemp/PoolClockAirTemp.componentinfo.xml create mode 100644 PoolClockAirTemp/PoolClockAirTemp.cproj create mode 100644 PoolClockAirTemp/main.c create mode 100644 PoolClockHumidity/Debug/Makefile create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.eep create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.elf create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.hex create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.lss create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.map create mode 100644 PoolClockHumidity/Debug/PoolClockHumidity.srec create mode 100644 PoolClockHumidity/Debug/main.d create mode 100644 PoolClockHumidity/Debug/main.o create mode 100644 PoolClockHumidity/Debug/makedep.mk create mode 100644 PoolClockHumidity/PoolClockHumidity.componentinfo.xml create mode 100644 PoolClockHumidity/PoolClockHumidity.cproj create mode 100644 PoolClockHumidity/main.c create mode 100644 README.md diff --git a/PoolClock.atsln b/PoolClock.atsln new file mode 100644 index 0000000..e19b382 --- /dev/null +++ b/PoolClock.atsln @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "PoolClockWaterTemp", "PoolClock\PoolClockWaterTemp.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "PoolClockHumidity", "PoolClockHumidity\PoolClockHumidity.cproj", "{568DA8C2-E6FE-4E7C-A24E-9E4900DAB3C9}" +EndProject +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "PoolClockAirTemp", "PoolClockAirTemp\PoolClockAirTemp.cproj", "{0C83E3A6-3DDD-4274-8944-AE653DC4AC74}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR + {568DA8C2-E6FE-4E7C-A24E-9E4900DAB3C9}.Debug|AVR.ActiveCfg = Debug|AVR + {568DA8C2-E6FE-4E7C-A24E-9E4900DAB3C9}.Debug|AVR.Build.0 = Debug|AVR + {568DA8C2-E6FE-4E7C-A24E-9E4900DAB3C9}.Release|AVR.ActiveCfg = Release|AVR + {568DA8C2-E6FE-4E7C-A24E-9E4900DAB3C9}.Release|AVR.Build.0 = Release|AVR + {0C83E3A6-3DDD-4274-8944-AE653DC4AC74}.Debug|AVR.ActiveCfg = Debug|AVR + {0C83E3A6-3DDD-4274-8944-AE653DC4AC74}.Debug|AVR.Build.0 = Debug|AVR + {0C83E3A6-3DDD-4274-8944-AE653DC4AC74}.Release|AVR.ActiveCfg = Release|AVR + {0C83E3A6-3DDD-4274-8944-AE653DC4AC74}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PoolClock/Debug/Makefile b/PoolClock/Debug/Makefile new file mode 100644 index 0000000..6e0ae41 --- /dev/null +++ b/PoolClock/Debug/Makefile @@ -0,0 +1,129 @@ +################################################################################ +# 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 := + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +main.o + +OBJS_AS_ARGS += \ +main.o + +C_DEPS += \ +main.d + +C_DEPS_AS_ARGS += \ +main.d + +OUTPUT_FILE_PATH +=PoolClockWaterTemp.elf + +OUTPUT_FILE_PATH_AS_ARGS +=PoolClockWaterTemp.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler + + + +./%.o: .././%.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\ATmega_DFP\1.2.132\include" -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega88pa -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" -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="PoolClockWaterTemp.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega88pa -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + @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 "PoolClockWaterTemp.elf" "PoolClockWaterTemp.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 "PoolClockWaterTemp.elf" "PoolClockWaterTemp.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "PoolClockWaterTemp.elf" > "PoolClockWaterTemp.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 "PoolClockWaterTemp.elf" "PoolClockWaterTemp.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "PoolClockWaterTemp.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "PoolClockWaterTemp.elf" "PoolClockWaterTemp.a" "PoolClockWaterTemp.hex" "PoolClockWaterTemp.lss" "PoolClockWaterTemp.eep" "PoolClockWaterTemp.map" "PoolClockWaterTemp.srec" "PoolClockWaterTemp.usersignatures" + \ No newline at end of file diff --git a/PoolClock/Debug/PoolClock.eep b/PoolClock/Debug/PoolClock.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/PoolClock/Debug/PoolClock.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/PoolClock/Debug/PoolClock.elf b/PoolClock/Debug/PoolClock.elf new file mode 100644 index 0000000000000000000000000000000000000000..26485238da320b44536d448b599e273c0386b28a GIT binary patch literal 13704 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 literal 0 HcmV?d00001 diff --git a/PoolClock/Debug/PoolClock.hex b/PoolClock/Debug/PoolClock.hex new file mode 100644 index 0000000..b42b763 --- /dev/null +++ b/PoolClock/Debug/PoolClock.hex @@ -0,0 +1,48 @@ +:1000000019C033C032C031C030C02FC02EC02DC087 +:100010002CC02BC02AC029C028C027C026C025C09C +:1000200024C023C022C021C020C01FC01EC01DC0CC +:100030001CC01BC011241FBECFEFD4E0DEBFCDBF5C +:1000400011E0A0E0B1E0EEEDF2E002C005900D920B +:10005000AE30B107D9F721E0AEE0B1E001C01D92AA +:10006000A431B207E1F7E0D038C1CACF8FEF8AB927 +:1000700087E084B93B9843982FEF81E19AE72150BC +:1000800080409040E1F700C0000008951BB884E074 +:1000900085B986E08A95F1F700C0E0911301F0E0A0 +:1000A000E050FF4F80818BB987E893E10197F1F72A +:1000B00000C000001BB882E085B996E09A95F1F780 +:1000C00000C0E0911201F0E0E050FF4F80818BB959 +:1000D00087E893E10197F1F700C000001BB881E0C9 +:1000E00085B996E09A95F1F700C08DEA8BB987E85B +:1000F00093E10197F1F700C0000008950F931F935B +:10010000CF93DF9300D000D01F92CDB7DEB73B98DE +:1001100089EC07C036E03A95F1F700C0815009F448 +:100120006EC03399F7CF86E507C096E09A95F1F750 +:1001300000C0815009F465C0339BF7CF86E507C046 +:10014000A6E0AA95F1F700C0815009F45CC033998C +:10015000F7CFFE01319685E0DF011D928A95E9F720 +:10016000AE014A5F5F4F22C0B6E0BA95F1F700C01A +:10017000915011F44AC098E3339BF6CF38EC3A958E +:10018000F1F7220F339908C00BC0A6E0AA95F1F74A +:1001900000C0915011F43BC09EE23399F6CF21602C +:1001A000815049F721934E175F0719F088E020E04E +:1001B000E2CFA981B0E0EA81F0E06B8170E04C8190 +:1001C00050E09D012E0F3F1F260F371F240F351FB4 +:1001D00033270D8110E020173107D9F4BA2FAA2751 +:1001E000EA0FFB1FF0931101E0931001762F6627B1 +:1001F000460F571F50930F0140930E010BC082E032 +:1002000009C083E007C084E005C085E003C086E044 +:1002100001C087E00F900F900F900F900F90DF912B +:10022000CF911F910F91089521DF8AE080931301F0 +:100230008BE080931201C0E0D0E01CE03AC0339B19 +:1002400002C03B9A4398CE3E83E0D80790F156DF38 +:10025000811129C0E0911001F09111019F01ADECD5 +:10026000BCEC2FD0AC0156954795569547955695C1 +:100270004795509311014093100136952795369577 +:100280002795ABE7B4E11DD0969587958093130130 +:10029000880F982F990F990F890F481B40931201CF +:1002A000C0E0D0E006C01093130180931201C0E0BB +:1002B000D0E02196EBDEC93E83E0D80708F0BFCF3F +:1002C000F8CFA29FB001B39FC001A39F01D0B29FFE +:0E02D000700D811D1124911D0895F894FFCF2B +:0E02DE00FC24BAAE66CEDEA4FEEE161EDA12C8 +:00000001FF diff --git a/PoolClock/Debug/PoolClock.lss b/PoolClock/Debug/PoolClock.lss new file mode 100644 index 0000000..43ce85a --- /dev/null +++ b/PoolClock/Debug/PoolClock.lss @@ -0,0 +1,715 @@ + +PoolClock.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 0000000e 00800100 000002de 00000372 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 000002de 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000006 0080010e 0080010e 00000380 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000380 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000003b0 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000048 00000000 00000000 000003f0 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 00000bbe 00000000 00000000 00000438 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00000784 00000000 00000000 00000ff6 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000507 00000000 00000000 0000177a 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 00000090 00000000 00000000 00001c84 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000487 00000000 00000000 00001d14 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 00000634 00000000 00000000 0000219b 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 00000098 00000000 00000000 000027cf 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> + 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt> + 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt> + 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> + 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> + a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> + c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> + e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> + 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> + 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> + 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> + 16: 29 c0 rjmp .+82 ; 0x6a <__bad_interrupt> + 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> + 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> + 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> + 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> + 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> + 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> + 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> + 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> + 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> + 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> + 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> + 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> + 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> + 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> + +00000034 <__ctors_end>: + 34: 11 24 eor r1, r1 + 36: 1f be out 0x3f, r1 ; 63 + 38: cf ef ldi r28, 0xFF ; 255 + 3a: d4 e0 ldi r29, 0x04 ; 4 + 3c: de bf out 0x3e, r29 ; 62 + 3e: cd bf out 0x3d, r28 ; 61 + +00000040 <__do_copy_data>: + 40: 11 e0 ldi r17, 0x01 ; 1 + 42: a0 e0 ldi r26, 0x00 ; 0 + 44: b1 e0 ldi r27, 0x01 ; 1 + 46: ee ed ldi r30, 0xDE ; 222 + 48: f2 e0 ldi r31, 0x02 ; 2 + 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> + 4c: 05 90 lpm r0, Z+ + 4e: 0d 92 st X+, r0 + 50: ae 30 cpi r26, 0x0E ; 14 + 52: b1 07 cpc r27, r17 + 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> + +00000056 <__do_clear_bss>: + 56: 21 e0 ldi r18, 0x01 ; 1 + 58: ae e0 ldi r26, 0x0E ; 14 + 5a: b1 e0 ldi r27, 0x01 ; 1 + 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> + +0000005e <.do_clear_bss_loop>: + 5e: 1d 92 st X+, r1 + +00000060 <.do_clear_bss_start>: + 60: a4 31 cpi r26, 0x14 ; 20 + 62: b2 07 cpc r27, r18 + 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> + 66: e0 d0 rcall .+448 ; 0x228
+ 68: 38 c1 rjmp .+624 ; 0x2da <_exit> + +0000006a <__bad_interrupt>: + 6a: ca cf rjmp .-108 ; 0x0 <__vectors> + +0000006c : + } + g_u8CountDecs = 0U; //reset decrement counter + } + + g_u8Tens = g_u8WaterTemperature / 10U; + g_u8Ones = g_u8WaterTemperature - (g_u8Tens * 10U); + 6c: 8f ef ldi r24, 0xFF ; 255 + 6e: 8a b9 out 0x0a, r24 ; 10 + 70: 87 e0 ldi r24, 0x07 ; 7 + 72: 84 b9 out 0x04, r24 ; 4 + 74: 3b 98 cbi 0x07, 3 ; 7 + 76: 43 98 cbi 0x08, 3 ; 8 + 78: 2f ef ldi r18, 0xFF ; 255 + 7a: 81 e1 ldi r24, 0x11 ; 17 + 7c: 9a e7 ldi r25, 0x7A ; 122 + 7e: 21 50 subi r18, 0x01 ; 1 + 80: 80 40 sbci r24, 0x00 ; 0 + 82: 90 40 sbci r25, 0x00 ; 0 + 84: e1 f7 brne .-8 ; 0x7e + 86: 00 c0 rjmp .+0 ; 0x88 + 88: 00 00 nop + 8a: 08 95 ret + +0000008c : +/************************************************************************/ +/* */ +/************************************************************************/ +void vShow( void ) +{ + PORTD = 0U; + 8c: 1b b8 out 0x0b, r1 ; 11 + PORTB = SELECT_DIGIT(DIGIT_TENS); + 8e: 84 e0 ldi r24, 0x04 ; 4 + 90: 85 b9 out 0x05, r24 ; 5 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 92: 86 e0 ldi r24, 0x06 ; 6 + 94: 8a 95 dec r24 + 96: f1 f7 brne .-4 ; 0x94 + 98: 00 c0 rjmp .+0 ; 0x9a + _delay_us(1); + PORTD = g_au8Numbers[g_u8Tens]; + 9a: e0 91 13 01 lds r30, 0x0113 ; 0x800113 + 9e: f0 e0 ldi r31, 0x00 ; 0 + a0: e0 50 subi r30, 0x00 ; 0 + a2: ff 4f sbci r31, 0xFF ; 255 + a4: 80 81 ld r24, Z + a6: 8b b9 out 0x0b, r24 ; 11 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + a8: 87 e8 ldi r24, 0x87 ; 135 + aa: 93 e1 ldi r25, 0x13 ; 19 + ac: 01 97 sbiw r24, 0x01 ; 1 + ae: f1 f7 brne .-4 ; 0xac + b0: 00 c0 rjmp .+0 ; 0xb2 + b2: 00 00 nop + _delay_ms(MULTIPLEX_DELAY_MS); + + PORTD = 0U; + b4: 1b b8 out 0x0b, r1 ; 11 + PORTB = SELECT_DIGIT(DIGIT_ONES); + b6: 82 e0 ldi r24, 0x02 ; 2 + b8: 85 b9 out 0x05, r24 ; 5 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + ba: 96 e0 ldi r25, 0x06 ; 6 + bc: 9a 95 dec r25 + be: f1 f7 brne .-4 ; 0xbc + c0: 00 c0 rjmp .+0 ; 0xc2 + _delay_us(1); + PORTD = g_au8Numbers[g_u8Ones]; + c2: e0 91 12 01 lds r30, 0x0112 ; 0x800112 + c6: f0 e0 ldi r31, 0x00 ; 0 + c8: e0 50 subi r30, 0x00 ; 0 + ca: ff 4f sbci r31, 0xFF ; 255 + cc: 80 81 ld r24, Z + ce: 8b b9 out 0x0b, r24 ; 11 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + d0: 87 e8 ldi r24, 0x87 ; 135 + d2: 93 e1 ldi r25, 0x13 ; 19 + d4: 01 97 sbiw r24, 0x01 ; 1 + d6: f1 f7 brne .-4 ; 0xd4 + d8: 00 c0 rjmp .+0 ; 0xda + da: 00 00 nop + _delay_ms(MULTIPLEX_DELAY_MS); + + PORTD = 0U; + dc: 1b b8 out 0x0b, r1 ; 11 + PORTB = SELECT_DIGIT(DIGIT_UNIT); + de: 81 e0 ldi r24, 0x01 ; 1 + e0: 85 b9 out 0x05, r24 ; 5 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + e2: 96 e0 ldi r25, 0x06 ; 6 + e4: 9a 95 dec r25 + e6: f1 f7 brne .-4 ; 0xe4 + e8: 00 c0 rjmp .+0 ; 0xea + _delay_us(1); + PORTD = DEGREE_CELCIUS; + ea: 8d ea ldi r24, 0xAD ; 173 + ec: 8b b9 out 0x0b, r24 ; 11 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + ee: 87 e8 ldi r24, 0x87 ; 135 + f0: 93 e1 ldi r25, 0x13 ; 19 + f2: 01 97 sbiw r24, 0x01 ; 1 + f4: f1 f7 brne .-4 ; 0xf2 + f6: 00 c0 rjmp .+0 ; 0xf8 + f8: 00 00 nop + fa: 08 95 ret + +000000fc : + +/************************************************************************/ +/* */ +/************************************************************************/ +uint8_t u8ReadSensor( void ) +{ + fc: 0f 93 push r16 + fe: 1f 93 push r17 + 100: cf 93 push r28 + 102: df 93 push r29 + 104: 00 d0 rcall .+0 ; 0x106 + 106: 00 d0 rcall .+0 ; 0x108 + 108: 1f 92 push r1 + 10a: cd b7 in r28, 0x3d ; 61 + 10c: de b7 in r29, 0x3e ; 62 + uint8_t timeout = 200; + + SENSOR_sda_in; + 10e: 3b 98 cbi 0x07, 3 ; 7 + + // Bus master has released time min: 20us, typ: 30us, max: 200us + while ( SENSOR_is_hi ) + 110: 89 ec ldi r24, 0xC9 ; 201 + 112: 07 c0 rjmp .+14 ; 0x122 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 114: 36 e0 ldi r19, 0x06 ; 6 + 116: 3a 95 dec r19 + 118: f1 f7 brne .-4 ; 0x116 + 11a: 00 c0 rjmp .+0 ; 0x11c + 11c: 81 50 subi r24, 0x01 ; 1 + { + _delay_us(1); + if ( !timeout-- ) + 11e: 09 f4 brne .+2 ; 0x122 + 120: 6e c0 rjmp .+220 ; 0x1fe + uint8_t timeout = 200; + + SENSOR_sda_in; + + // Bus master has released time min: 20us, typ: 30us, max: 200us + while ( SENSOR_is_hi ) + 122: 33 99 sbic 0x06, 3 ; 6 + 124: f7 cf rjmp .-18 ; 0x114 + 126: 86 e5 ldi r24, 0x56 ; 86 + 128: 07 c0 rjmp .+14 ; 0x138 + 12a: 96 e0 ldi r25, 0x06 ; 6 + 12c: 9a 95 dec r25 + 12e: f1 f7 brne .-4 ; 0x12c + 130: 00 c0 rjmp .+0 ; 0x132 + 132: 81 50 subi r24, 0x01 ; 1 + // AM2302 response signal min: 75us typ:80us max:85us + timeout = 85; + while(SENSOR_is_low) + { + _delay_us(1); + if (!timeout--) + 134: 09 f4 brne .+2 ; 0x138 + 136: 65 c0 rjmp .+202 ; 0x202 + } + } + + // AM2302 response signal min: 75us typ:80us max:85us + timeout = 85; + while(SENSOR_is_low) + 138: 33 9b sbis 0x06, 3 ; 6 + 13a: f7 cf rjmp .-18 ; 0x12a + 13c: 86 e5 ldi r24, 0x56 ; 86 + 13e: 07 c0 rjmp .+14 ; 0x14e + 140: a6 e0 ldi r26, 0x06 ; 6 + 142: aa 95 dec r26 + 144: f1 f7 brne .-4 ; 0x142 + 146: 00 c0 rjmp .+0 ; 0x148 + 148: 81 50 subi r24, 0x01 ; 1 + + timeout = 85; + while(SENSOR_is_hi) + { + _delay_us(1); + if (!timeout--) + 14a: 09 f4 brne .+2 ; 0x14e + 14c: 5c c0 rjmp .+184 ; 0x206 + return 3; + } + } // response to low time + + timeout = 85; + while(SENSOR_is_hi) + 14e: 33 99 sbic 0x06, 3 ; 6 + 150: f7 cf rjmp .-18 ; 0x140 + * signal 0 high time: 22 26 30 (bit=0) + * signal 1 high time: 68 70 75 (bit=1) + * signal 0,1 down time: 48 50 55 + */ + + uint8_t sensor_data[5]={0}; + 152: fe 01 movw r30, r28 + 154: 31 96 adiw r30, 0x01 ; 1 + 156: 85 e0 ldi r24, 0x05 ; 5 + 158: df 01 movw r26, r30 + 15a: 1d 92 st X+, r1 + 15c: 8a 95 dec r24 + 15e: e9 f7 brne .-6 ; 0x15a + 160: ae 01 movw r20, r28 + 162: 4a 5f subi r20, 0xFA ; 250 + 164: 5f 4f sbci r21, 0xFF ; 255 + 166: 22 c0 rjmp .+68 ; 0x1ac + 168: b6 e0 ldi r27, 0x06 ; 6 + 16a: ba 95 dec r27 + 16c: f1 f7 brne .-4 ; 0x16a + 16e: 00 c0 rjmp .+0 ; 0x170 + 170: 91 50 subi r25, 0x01 ; 1 + while(SENSOR_is_low) + { + _delay_us(1); + + // if timeout == 0 => sensor do not response + if (!timeout--) + 172: 11 f4 brne .+4 ; 0x178 + 174: 4a c0 rjmp .+148 ; 0x20a + 176: 98 e3 ldi r25, 0x38 ; 56 + // get 8 bits from sensor + for(uint8_t j = 1; j <= 8; j++) + { + // wait for sensor response + timeout = 55; + while(SENSOR_is_low) + 178: 33 9b sbis 0x06, 3 ; 6 + 17a: f6 cf rjmp .-20 ; 0x168 + 17c: 38 ec ldi r19, 0xC8 ; 200 + 17e: 3a 95 dec r19 + 180: f1 f7 brne .-4 ; 0x17e + } + } + + // wait 30 us to check if bit is logical "1" or "0" + _delay_us(30); + sensor_byte <<= 1; // add new lower bit + 182: 22 0f add r18, r18 + + // If sda ist high after 30 us then bit is logical "1" else it was a logical "0" + // For a logical "1" sda have to be low after 75 us. + if (SENSOR_is_hi) + 184: 33 99 sbic 0x06, 3 ; 6 + 186: 08 c0 rjmp .+16 ; 0x198 + 188: 0b c0 rjmp .+22 ; 0x1a0 + 18a: a6 e0 ldi r26, 0x06 ; 6 + 18c: aa 95 dec r26 + 18e: f1 f7 brne .-4 ; 0x18c + 190: 00 c0 rjmp .+0 ; 0x192 + 192: 91 50 subi r25, 0x01 ; 1 + + while(SENSOR_is_hi) + { + _delay_us(1); + + if (!timeout--) + 194: 11 f4 brne .+4 ; 0x19a + 196: 3b c0 rjmp .+118 ; 0x20e + 198: 9e e2 ldi r25, 0x2E ; 46 + if (SENSOR_is_hi) + { + sensor_byte |= 1; // add logical "1" + timeout = 45; // 30us - 75us = 45us + + while(SENSOR_is_hi) + 19a: 33 99 sbic 0x06, 3 ; 6 + 19c: f6 cf rjmp .-20 ; 0x18a + + // If sda ist high after 30 us then bit is logical "1" else it was a logical "0" + // For a logical "1" sda have to be low after 75 us. + if (SENSOR_is_hi) + { + sensor_byte |= 1; // add logical "1" + 19e: 21 60 ori r18, 0x01 ; 1 + 1a0: 81 50 subi r24, 0x01 ; 1 + for(uint8_t i = 0; i < 5; i++) + { + uint8_t sensor_byte = 0; + + // get 8 bits from sensor + for(uint8_t j = 1; j <= 8; j++) + 1a2: 49 f7 brne .-46 ; 0x176 + } + } + } + } + + sensor_data[i] = sensor_byte; + 1a4: 21 93 st Z+, r18 + * signal 0,1 down time: 48 50 55 + */ + + uint8_t sensor_data[5]={0}; + + for(uint8_t i = 0; i < 5; i++) + 1a6: 4e 17 cp r20, r30 + 1a8: 5f 07 cpc r21, r31 + 1aa: 19 f0 breq .+6 ; 0x1b2 + 1ac: 88 e0 ldi r24, 0x08 ; 8 + 1ae: 20 e0 ldi r18, 0x00 ; 0 + 1b0: e2 cf rjmp .-60 ; 0x176 + + sensor_data[i] = sensor_byte; + } + + // checksum + if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4]) + 1b2: a9 81 ldd r26, Y+1 ; 0x01 + 1b4: b0 e0 ldi r27, 0x00 ; 0 + 1b6: ea 81 ldd r30, Y+2 ; 0x02 + 1b8: f0 e0 ldi r31, 0x00 ; 0 + 1ba: 6b 81 ldd r22, Y+3 ; 0x03 + 1bc: 70 e0 ldi r23, 0x00 ; 0 + 1be: 4c 81 ldd r20, Y+4 ; 0x04 + 1c0: 50 e0 ldi r21, 0x00 ; 0 + 1c2: 9d 01 movw r18, r26 + 1c4: 2e 0f add r18, r30 + 1c6: 3f 1f adc r19, r31 + 1c8: 26 0f add r18, r22 + 1ca: 37 1f adc r19, r23 + 1cc: 24 0f add r18, r20 + 1ce: 35 1f adc r19, r21 + 1d0: 33 27 eor r19, r19 + 1d2: 0d 81 ldd r16, Y+5 ; 0x05 + 1d4: 10 e0 ldi r17, 0x00 ; 0 + 1d6: 20 17 cp r18, r16 + 1d8: 31 07 cpc r19, r17 + 1da: d9 f4 brne .+54 ; 0x212 + // debug output + //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff )); + return 7; + } + + g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1]; + 1dc: ba 2f mov r27, r26 + 1de: aa 27 eor r26, r26 + 1e0: ea 0f add r30, r26 + 1e2: fb 1f adc r31, r27 + 1e4: f0 93 11 01 sts 0x0111, r31 ; 0x800111 + 1e8: e0 93 10 01 sts 0x0110, r30 ; 0x800110 + g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3]; + 1ec: 76 2f mov r23, r22 + 1ee: 66 27 eor r22, r22 + 1f0: 46 0f add r20, r22 + 1f2: 57 1f adc r21, r23 + 1f4: 50 93 0f 01 sts 0x010F, r21 ; 0x80010f <__data_end+0x1> + 1f8: 40 93 0e 01 sts 0x010E, r20 ; 0x80010e <__data_end> + + return 0; + 1fc: 0b c0 rjmp .+22 ; 0x214 + while ( SENSOR_is_hi ) + { + _delay_us(1); + if ( !timeout-- ) + { + return 2; + 1fe: 82 e0 ldi r24, 0x02 ; 2 + 200: 09 c0 rjmp .+18 ; 0x214 + while(SENSOR_is_low) + { + _delay_us(1); + if (!timeout--) + { + return 3; + 202: 83 e0 ldi r24, 0x03 ; 3 + 204: 07 c0 rjmp .+14 ; 0x214 + while(SENSOR_is_hi) + { + _delay_us(1); + if (!timeout--) + { + return 4; + 206: 84 e0 ldi r24, 0x04 ; 4 + 208: 05 c0 rjmp .+10 ; 0x214 + _delay_us(1); + + // if timeout == 0 => sensor do not response + if (!timeout--) + { + return 5; + 20a: 85 e0 ldi r24, 0x05 ; 5 + 20c: 03 c0 rjmp .+6 ; 0x214 + { + _delay_us(1); + + if (!timeout--) + { + return 6; + 20e: 86 e0 ldi r24, 0x06 ; 6 + 210: 01 c0 rjmp .+2 ; 0x214 + // checksum + if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4]) + { + // debug output + //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff )); + return 7; + 212: 87 e0 ldi r24, 0x07 ; 7 + + g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1]; + g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3]; + + return 0; + 214: 0f 90 pop r0 + 216: 0f 90 pop r0 + 218: 0f 90 pop r0 + 21a: 0f 90 pop r0 + 21c: 0f 90 pop r0 + 21e: df 91 pop r29 + 220: cf 91 pop r28 + 222: 1f 91 pop r17 + 224: 0f 91 pop r16 + 226: 08 95 ret + +00000228
: +int main(void) +{ + uint16_t u16Counter = 0U; + uint8_t u8ErrorCode = 0U; + + vInit(); + 228: 21 df rcall .-446 ; 0x6c + + g_u8Tens = 10; //n + 22a: 8a e0 ldi r24, 0x0A ; 10 + 22c: 80 93 13 01 sts 0x0113, r24 ; 0x800113 + g_u8Ones = 11; //o + 230: 8b e0 ldi r24, 0x0B ; 11 + 232: 80 93 12 01 sts 0x0112, r24 ; 0x800112 +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main(void) +{ + uint16_t u16Counter = 0U; + 236: c0 e0 ldi r28, 0x00 ; 0 + 238: d0 e0 ldi r29, 0x00 ; 0 + //g_u8Tens = g_u16Temperature / 10U; + //g_u8Ones = g_u16Temperature - (g_u8Tens * 10U); + } + else + { + g_u8Tens = 12; + 23a: 1c e0 ldi r17, 0x0C ; 12 + 23c: 3a c0 rjmp .+116 ; 0x2b2 + + while ( 1 ) + { + if ( u16Counter > 1000 ) + { + if ( SENSOR_is_hi ) + 23e: 33 9b sbis 0x06, 3 ; 6 + 240: 02 c0 rjmp .+4 ; 0x246 + { + SENSOR_sda_out; + 242: 3b 9a sbi 0x07, 3 ; 7 + SENSOR_sda_low; + 244: 43 98 cbi 0x08, 3 ; 8 + } + if ( u16Counter > 1005 ) + 246: ce 3e cpi r28, 0xEE ; 238 + 248: 83 e0 ldi r24, 0x03 ; 3 + 24a: d8 07 cpc r29, r24 + 24c: 90 f1 brcs .+100 ; 0x2b2 + { + //_delay_us(1200); + //_delay_ms(20); // start signal (pull sda down for min 0.8ms and maximum 20ms) + u8ErrorCode = u8ReadSensor(); + 24e: 56 df rcall .-340 ; 0xfc + if ( 0 == u8ErrorCode ) + 250: 81 11 cpse r24, r1 + 252: 29 c0 rjmp .+82 ; 0x2a6 + { + g_u16Humidity /= 10; + 254: e0 91 10 01 lds r30, 0x0110 ; 0x800110 + 258: f0 91 11 01 lds r31, 0x0111 ; 0x800111 + 25c: 9f 01 movw r18, r30 + 25e: ad ec ldi r26, 0xCD ; 205 + 260: bc ec ldi r27, 0xCC ; 204 + 262: 2f d0 rcall .+94 ; 0x2c2 <__umulhisi3> + 264: ac 01 movw r20, r24 + 266: 56 95 lsr r21 + 268: 47 95 ror r20 + 26a: 56 95 lsr r21 + 26c: 47 95 ror r20 + 26e: 56 95 lsr r21 + 270: 47 95 ror r20 + 272: 50 93 11 01 sts 0x0111, r21 ; 0x800111 + 276: 40 93 10 01 sts 0x0110, r20 ; 0x800110 + g_u8Tens = g_u16Humidity / 10U; + 27a: 36 95 lsr r19 + 27c: 27 95 ror r18 + 27e: 36 95 lsr r19 + 280: 27 95 ror r18 + 282: ab e7 ldi r26, 0x7B ; 123 + 284: b4 e1 ldi r27, 0x14 ; 20 + 286: 1d d0 rcall .+58 ; 0x2c2 <__umulhisi3> + 288: 96 95 lsr r25 + 28a: 87 95 ror r24 + 28c: 80 93 13 01 sts 0x0113, r24 ; 0x800113 + g_u8Ones = g_u16Humidity - (g_u8Tens * 10U); + 290: 88 0f add r24, r24 + 292: 98 2f mov r25, r24 + 294: 99 0f add r25, r25 + 296: 99 0f add r25, r25 + 298: 89 0f add r24, r25 + 29a: 48 1b sub r20, r24 + 29c: 40 93 12 01 sts 0x0112, r20 ; 0x800112 + else + { + g_u8Tens = 12; + g_u8Ones = u8ErrorCode; + } + u16Counter = 0U; + 2a0: c0 e0 ldi r28, 0x00 ; 0 + 2a2: d0 e0 ldi r29, 0x00 ; 0 + 2a4: 06 c0 rjmp .+12 ; 0x2b2 + //g_u8Tens = g_u16Temperature / 10U; + //g_u8Ones = g_u16Temperature - (g_u8Tens * 10U); + } + else + { + g_u8Tens = 12; + 2a6: 10 93 13 01 sts 0x0113, r17 ; 0x800113 + g_u8Ones = u8ErrorCode; + 2aa: 80 93 12 01 sts 0x0112, r24 ; 0x800112 + } + u16Counter = 0U; + 2ae: c0 e0 ldi r28, 0x00 ; 0 + 2b0: d0 e0 ldi r29, 0x00 ; 0 + } + } + u16Counter++; + 2b2: 21 96 adiw r28, 0x01 ; 1 + + //vReadButtons(); + //vCalculate(); + vShow(); + 2b4: eb de rcall .-554 ; 0x8c + g_u8Tens = 10; //n + g_u8Ones = 11; //o + + while ( 1 ) + { + if ( u16Counter > 1000 ) + 2b6: c9 3e cpi r28, 0xE9 ; 233 + 2b8: 83 e0 ldi r24, 0x03 ; 3 + 2ba: d8 07 cpc r29, r24 + 2bc: 08 f0 brcs .+2 ; 0x2c0 + 2be: bf cf rjmp .-130 ; 0x23e + 2c0: f8 cf rjmp .-16 ; 0x2b2 + +000002c2 <__umulhisi3>: + 2c2: a2 9f mul r26, r18 + 2c4: b0 01 movw r22, r0 + 2c6: b3 9f mul r27, r19 + 2c8: c0 01 movw r24, r0 + 2ca: a3 9f mul r26, r19 + 2cc: 01 d0 rcall .+2 ; 0x2d0 <__umulhisi3+0xe> + 2ce: b2 9f mul r27, r18 + 2d0: 70 0d add r23, r0 + 2d2: 81 1d adc r24, r1 + 2d4: 11 24 eor r1, r1 + 2d6: 91 1d adc r25, r1 + 2d8: 08 95 ret + +000002da <_exit>: + 2da: f8 94 cli + +000002dc <__stop_program>: + 2dc: ff cf rjmp .-2 ; 0x2dc <__stop_program> diff --git a/PoolClock/Debug/PoolClock.map b/PoolClock/Debug/PoolClock.map new file mode 100644 index 0000000..59fe144 --- /dev/null +++ b/PoolClock/Debug/PoolClock.map @@ -0,0 +1,503 @@ +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/avr4\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + main.o (__umulhisi3) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text.vReadButtons + 0x00000000 0x2a main.o + .text.vCalculate + 0x00000000 0x6a main.o + .bss.g_u8CountDecs + 0x00000000 0x1 main.o + .bss.g_u8CountIncs + 0x00000000 0x1 main.o + .data.g_u8WaterTemperature + 0x00000000 0x1 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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o +LOAD 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/avr4\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/avr4\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/avr4\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/avr4\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4\libatmega88pa.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 0x2de + *(.vectors) + .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000034 . = ALIGN (0x2) + 0x00000034 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000034 0x0 linker stubs + *(.trampolines*) + 0x00000034 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000034 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000034 __ctors_start = . + *(.ctors) + 0x00000034 __ctors_end = . + 0x00000034 __dtors_start = . + *(.dtors) + 0x00000034 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000034 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000034 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000034 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + 0x00000040 __do_copy_data + .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + 0x00000056 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000066 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init9) + *(.text) + .text 0x0000006a 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x0000006a __vector_22 + 0x0000006a __vector_1 + 0x0000006a __vector_24 + 0x0000006a __vector_12 + 0x0000006a __bad_interrupt + 0x0000006a __vector_6 + 0x0000006a __vector_3 + 0x0000006a __vector_23 + 0x0000006a __vector_25 + 0x0000006a __vector_11 + 0x0000006a __vector_13 + 0x0000006a __vector_17 + 0x0000006a __vector_19 + 0x0000006a __vector_7 + 0x0000006a __vector_5 + 0x0000006a __vector_4 + 0x0000006a __vector_9 + 0x0000006a __vector_2 + 0x0000006a __vector_21 + 0x0000006a __vector_15 + 0x0000006a __vector_8 + 0x0000006a __vector_14 + 0x0000006a __vector_10 + 0x0000006a __vector_16 + 0x0000006a __vector_18 + 0x0000006a __vector_20 + 0x0000006c . = ALIGN (0x2) + *(.text.*) + .text.vInit 0x0000006c 0x20 main.o + 0x0000006c vInit + .text.vShow 0x0000008c 0x70 main.o + 0x0000008c vShow + .text.u8ReadSensor + 0x000000fc 0x12c main.o + 0x000000fc u8ReadSensor + .text.main 0x00000228 0x9a main.o + 0x00000228 main + .text.libgcc.mul + 0x000002c2 0x18 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + 0x000002c2 __umulhisi3 + 0x000002da . = ALIGN (0x2) + *(.fini9) + .fini9 0x000002da 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + 0x000002da _exit + 0x000002da exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000002da 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x000002de _etext = . + +.data 0x00800100 0xe load address 0x000002de + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + *(.rodata) + *(.rodata*) + .rodata.g_au8Numbers + 0x00800100 0xe main.o + *(.gnu.linkonce.d*) + 0x0080010e . = ALIGN (0x2) + 0x0080010e _edata = . + 0x0080010e PROVIDE (__data_end, .) + +.bss 0x0080010e 0x6 + 0x0080010e PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.g_u16Temperature + 0x0080010e 0x2 main.o + 0x0080010e g_u16Temperature + .bss.g_u16Humidity + 0x00800110 0x2 main.o + 0x00800110 g_u16Humidity + .bss.g_u8Ones 0x00800112 0x1 main.o + .bss.g_u8Tens 0x00800113 0x1 main.o + *(COMMON) + 0x00800114 PROVIDE (__bss_end, .) + 0x000002de __data_load_start = LOADADDR (.data) + 0x000002ec __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800114 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800114 _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 main.o + 0x31 (size before relaxing) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x48 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x48 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0xbbe + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_info 0x000005f4 0x5ca main.o + +.debug_abbrev 0x00000000 0x784 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_abbrev 0x000005a2 0x1e2 main.o + +.debug_line 0x00000000 0x507 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_line 0x00000133 0x3d4 main.o + +.debug_frame 0x00000000 0x90 + *(.debug_frame) + .debug_frame 0x00000000 0x90 main.o + +.debug_str 0x00000000 0x487 + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_str 0x00000208 0x27f main.o + 0x2b3 (size before relaxing) + +.debug_loc 0x00000000 0x634 + *(.debug_loc) + .debug_loc 0x00000000 0x634 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 0x98 + *(.debug_ranges) + .debug_ranges 0x00000000 0x98 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(PoolClock.elf elf32-avr) +LOAD linker stubs diff --git a/PoolClock/Debug/PoolClock.srec b/PoolClock/Debug/PoolClock.srec new file mode 100644 index 0000000..25b71d6 --- /dev/null +++ b/PoolClock/Debug/PoolClock.srec @@ -0,0 +1,49 @@ +S0110000506F6F6C436C6F636B2E737265638D +S113000019C033C032C031C030C02FC02EC02DC083 +S11300102CC02BC02AC029C028C027C026C025C098 +S113002024C023C022C021C020C01FC01EC01DC0C8 +S11300301CC01BC011241FBECFEFD4E0DEBFCDBF58 +S113004011E0A0E0B1E0EEEDF2E002C005900D9207 +S1130050AE30B107D9F721E0AEE0B1E001C01D92A6 +S1130060A431B207E1F7E0D038C1CACF8FEF8AB923 +S113007087E084B93B9843982FEF81E19AE72150B8 +S113008080409040E1F700C0000008951BB884E070 +S113009085B986E08A95F1F700C0E0911301F0E09C +S11300A0E050FF4F80818BB987E893E10197F1F726 +S11300B000C000001BB882E085B996E09A95F1F77C +S11300C000C0E0911201F0E0E050FF4F80818BB955 +S11300D087E893E10197F1F700C000001BB881E0C5 +S11300E085B996E09A95F1F700C08DEA8BB987E857 +S11300F093E10197F1F700C0000008950F931F9357 +S1130100CF93DF9300D000D01F92CDB7DEB73B98DA +S113011089EC07C036E03A95F1F700C0815009F444 +S11301206EC03399F7CF86E507C096E09A95F1F74C +S113013000C0815009F465C0339BF7CF86E507C042 +S1130140A6E0AA95F1F700C0815009F45CC0339988 +S1130150F7CFFE01319685E0DF011D928A95E9F71C +S1130160AE014A5F5F4F22C0B6E0BA95F1F700C016 +S1130170915011F44AC098E3339BF6CF38EC3A958A +S1130180F1F7220F339908C00BC0A6E0AA95F1F746 +S113019000C0915011F43BC09EE23399F6CF216028 +S11301A0815049F721934E175F0719F088E020E04A +S11301B0E2CFA981B0E0EA81F0E06B8170E04C818C +S11301C050E09D012E0F3F1F260F371F240F351FB0 +S11301D033270D8110E020173107D9F4BA2FAA274D +S11301E0EA0FFB1FF0931101E0931001762F6627AD +S11301F0460F571F50930F0140930E010BC082E02E +S113020009C083E007C084E005C085E003C086E040 +S113021001C087E00F900F900F900F900F90DF9127 +S1130220CF911F910F91089521DF8AE080931301EC +S11302308BE080931201C0E0D0E01CE03AC0339B15 +S113024002C03B9A4398CE3E83E0D80790F156DF34 +S1130250811129C0E0911001F09111019F01ADECD1 +S1130260BCEC2FD0AC0156954795569547955695BD +S11302704795509311014093100136952795369573 +S11302802795ABE7B4E11DD096958795809313012C +S1130290880F982F990F990F890F481B40931201CB +S11302A0C0E0D0E006C01093130180931201C0E0B7 +S11302B0D0E02196EBDEC93E83E0D80708F0BFCF3B +S11302C0F8CFA29FB001B39FC001A39F01D0B29FFA +S11102D0700D811D1124911D0895F894FFCF27 +S11102DEFC24BAAE66CEDEA4FEEE161EDA12C4 +S9030000FC diff --git a/PoolClock/Debug/PoolClockWaterTemp.eep b/PoolClock/Debug/PoolClockWaterTemp.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/PoolClock/Debug/PoolClockWaterTemp.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/PoolClock/Debug/PoolClockWaterTemp.elf b/PoolClock/Debug/PoolClockWaterTemp.elf new file mode 100644 index 0000000000000000000000000000000000000000..471b906f47fec6a63dba200754eeaa14b759a7b9 GIT binary patch literal 30552 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 L)S{2OsmFf;z+6)w literal 0 HcmV?d00001 diff --git a/PoolClock/Debug/PoolClockWaterTemp.hex b/PoolClock/Debug/PoolClockWaterTemp.hex new file mode 100644 index 0000000..68e968b --- /dev/null +++ b/PoolClock/Debug/PoolClockWaterTemp.hex @@ -0,0 +1,171 @@ +:1000000019C033C032C031C030C02FC02EC02DC087 +:100010002CC02BC02AC07FC028C027C026C025C046 +:1000200024C023C022C021C020C01FC01EC01DC0CC +:100030001CC01BC011241FBECFEFD4E0DEBFCDBF5C +:1000400011E0A0E0B1E0EAE6FAE002C005900D920E +:10005000A432B107D9F721E0A4E2B1E001C01D92BA +:10006000A832B207E1F7E2D2FEC4CACF8FEF8AB955 +:1000700087E084B980E388B9109280008AE0809399 +:10008000810084EC99E09093890080938800EFE6EA +:10009000F0E0808182608083789408959DEC899F50 +:1000A000912D1124969596959695E0E0F1E0928336 +:1000B000990F292F220F220F920F891B81836083B2 +:1000C0000895349906C0809127018F5F809327019E +:1000D00002C01092270135990AC0809126018F5FD6 +:1000E0008093260190912701933368F006C0109207 +:1000F000260180912701833368F01092270181E067 +:10010000809325010895833328F01092260182E020 +:100110008093250108951F920F920FB60F9211241C +:100120002F933F934F935F936F937F938F939F93FF +:10013000AF93BF93EF93FF9315B81BB88DE08A95EB +:10014000F1F7000081E090E00090240102C0880FE8 +:10015000991F0A94E2F785B9E0912401F0E0E0509C +:10016000FF4FE081F0E0ED5FFE4F80818BB9809121 +:1001700024018F5F833018F48093240102C0109211 +:1001800024019FDFFF91EF91BF91AF919F918F91DC +:100190007F916F915F914F913F912F910F900FBE83 +:1001A0000F901F901895E0E0F1E090E19283918329 +:1001B00090832FEB35E444E0215030404040E1F79C +:1001C00000C00000813021F0823009F4E2C0C1C1DA +:1001D000E0E0F1E022E1228390E1918390835FEB04 +:1001E00065E474E0515060407040E1F700C00000E9 +:1001F0003CE03283918390838FEBA5E444E081500F +:10020000A0404040E1F700C0000088E08283918375 +:1002100090835FEB65E474E0515060407040E1F71B +:1002200000C00000828321839083AFEB45E454E05B +:10023000A15040405040E1F700C00000828331836C +:1002400090836FEB75E4A4E061507040A040E1F74B +:1002500000C000008283818390834FEB55E464E00B +:10026000415050406040E1F700C00000828381832C +:1002700041E040837FEBA5E454E07150A040504042 +:10028000E1F700C000008283818353E050836FEB6D +:1002900075E4A4E061507040A040E1F700C00000A8 +:1002A0008283818380836FEB75E4A4E061507040AA +:1002B000A040E1F700C000008283818380836FEB60 +:1002C00075E4A4E061507040A040E1F700C0000078 +:1002D0008283818350835FEB65E474E0515060401A +:1002E0007040E1F700C00000828381834083AFEB60 +:1002F00045E454E0A15040405040E1F700C0000008 +:100300008283818390836FEB75E4A4E06150704039 +:10031000A040E1F700C000008283318390834FEB5F +:1003200055E464E0415050406040E1F700C00000F7 +:100330008283218390837FEBA5E444E07150A04049 +:100340004040E1F700C000008283918390835FEB1F +:1003500065E474E0515060407040E1F700C0000077 +:100360003283918390838FEBA5E434E08150A040E9 +:100370003040E1F700C000002283918390834FEB6F +:1003800055E464E0415050406040E1F700C0000097 +:10039000E0C0E0E0F1E022E1228380E1818380831C +:1003A0007FEB95E4A4E071509040A040E1F700C0DD +:1003B00000003CE03283818380834FEB55E464E0AE +:1003C000415050406040E1F700C0000098E0928347 +:1003D000818380837FEBA5E444E07150A0404040DE +:1003E000E1F700C000009283218380835FEB65E426 +:1003F00074E0515060407040E1F700C0000092830B +:1004000031838083AFEB45E454E0A150404050403D +:10041000E1F700C000009283918380836FEB75E465 +:10042000A4E061507040A040E1F700C0000092835A +:10043000918341E040835FEB65E474E0515060409C +:100440007040E1F700C000009283918353E0508335 +:10045000AFEB65E474E0A15060407040E1F700C08C +:100460000000928391839083AFEB65E474E0A15028 +:1004700060407040E1F700C0000052839183908398 +:10048000AFEB65E474E0A15060407040E1F700C05C +:100490000000428391839083AFEB65E474E0A15048 +:1004A00060407040E1F700C0000082839183908338 +:1004B000AFEB65E474E0A15060407040E1F700C02C +:1004C0000000828351839083AFEB55E464E0A15038 +:1004D00050406040E1F700C0000082834183908378 +:1004E0007FEBA5E444E07150A0404040E1F700C03C +:1004F00000008283818390835FEB65E474E0515058 +:1005000060407040E1F700C0000082838183308347 +:100510009FEBA5E434E09150A0403040E1F700C0EB +:1005200000008283818320834FEB55E464E04150D7 +:1005300050406040E1F700C00000828381838083E7 +:100540007FEB85E494E0715080409040E1F700C07B +:100550000000E0E0F1E080E1828381838083AFEB03 +:1005600025E434E0A15020403040E1F700C0000015 +:10057000089543983B9A8FE599E00197F1F700C001 +:1005800000003B98EBE2F1E03197F1F700C000008A +:1005900086B1E3E3F8E03197F1F700C0000088701E +:1005A000089543983B9A96E09A95F1F700C0813000 +:1005B00009F43B988BE291E00197F1F700C000004D +:1005C0003B980895CF93DF93D82FC8E08D2F81708B +:1005D000E8DFD695C150D1F7DF91CF9108954398C8 +:1005E0003B9A86E08A95F1F700C03B98EDE5EA95E5 +:1005F000F1F7000086B1E0EEF0E03197F1F700C0CE +:10060000000083FB882780F90895CF93DF93D8E01B +:10061000C0E0E5DF20E8829FC0011124C695C82B09 +:10062000D150B9F78C2FDF91CF9108951FDDE0E015 +:10063000F1E080E1828381838083AFE4B3EC1197A2 +:10064000F1F700C0000093E1928381838083BFE7CC +:10065000CFE422E1B150C0402040E1F700C00000EB +:100660009283918380833FE74FE482E131504040A1 +:100670008040E1F700C000009283918386E180838F +:100680009FE7AFE4B2E19150A040B040E1F700C075 +:10069000000035E080E123E17CE16DE15EE196E17F +:1006A0004FE1828321837083CFEBA5E4B4E0C15096 +:1006B000A040B040E1F700C00000828381836083E6 +:1006C000CFEBA5E4B4E0C150A040B040E1F700C0DA +:1006D0000000828381835083CFEBA5E4B4E0C15056 +:1006E000A040B040E1F700C00000828391834083C6 +:1006F000CFEBA5E4B4E0C150A040B040E1F700C0AA +:100700000000928391832083CFEBA5E4B4E0C15035 +:10071000A040B040E1F700C0000072839183808365 +:10072000CFEBA5E4B4E0C150A040B040E1F700C079 +:100730000000628381838083CFEBA5E4B4E0C150E5 +:10074000A040B040E1F700C0000052838183808365 +:10075000CFEBA5E4B4E0C150A040B040E1F700C049 +:100760000000428321838083CFEBA5E4B4E0C15035 +:10077000A040B040E1F700C00000228321839083B5 +:10078000CFEBA5E4B4E0C150A040B040E1F700C019 +:100790000000315009F085CFE0E0F1E080E1828394 +:1007A00081838083809125018130B1F118F08230FE +:1007B000C1F1FACFDEDE8CEC05DF84E403DF0FDF6E +:1007C0008823E9F3D6DE8CECFDDE8EEBFBDE1DDF4D +:1007D000C82F1BDF682F70E0762F66276C0F711D06 +:1007E000072E000C880B990B4FD020E030E040E83A +:1007F0005DE3AED01BD0862F6EE050DC80912501EA +:100800008111D0CFCFE724E83EE1C15020403040F5 +:10081000E1F700C00000C6CF81E0C5DC10922501E1 +:10082000C1CF82E0C0DC10922501BCCF70D088F02F +:100830009F5790F0B92F9927B751A0F0D1F0660FCC +:10084000771F881F991F1AF0BA95C9F712C0B130E7 +:1008500081F077D0B1E0089574C0672F782F882792 +:10086000B85F39F0B93FCCF3869577956795B39526 +:10087000D9F73EF490958095709561957F4F8F4F95 +:100880009F4F0895E89409C097FB3EF4909580959A +:10089000709561957F4F8F4F9F4F9923A9F0F92F46 +:1008A00096E9BB279395F695879577956795B795C4 +:1008B000F111F8CFFAF4BB0F11F460FF1BC06F5FAA +:1008C0007F4F8F4F9F4F16C0882311F096E911C0BC +:1008D000772321F09EE8872F762F05C0662371F0DD +:1008E00096E8862F70E060E02AF09A95660F771FF1 +:1008F000881FDAF7880F9695879597F9089557FD21 +:100900009058440F551F59F05F3F71F04795880F7D +:1009100097FB991F61F09F3F79F087950895121614 +:1009200013061406551FF2CF4695F1DF08C01616C0 +:1009300017061806991FF1CF869571056105089471 +:100940000895E894BB2766277727CB0197F9089588 +:100950000BD078C069D028F06ED018F0952309F03C +:100960005AC05FC01124EECFCADFA0F3959FD1F328 +:10097000950F50E0551F629FF001729FBB27F00D4D +:10098000B11D639FAA27F00DB11DAA1F649F6627A2 +:10099000B00DA11D661F829F2227B00DA11D621FF1 +:1009A000739FB00DA11D621F839FA00D611D221FAB +:1009B000749F3327A00D611D231F849F600D211D8F +:1009C000822F762F6A2F11249F5750408AF0E1F032 +:1009D00088234AF0EE0FFF1FBB1F661F771F881F7B +:1009E00091505040A9F79E3F510570F014C0AACF16 +:1009F0005F3FECF3983EDCF3869577956795B79566 +:100A0000F795E7959F5FC1F7FE2B880F911D96958F +:100A1000879597F9089597F99F6780E870E060E0FF +:100A200008959FEF80EC089500240A941616170687 +:100A300018060906089500240A94121613061406CF +:100A400005060895092E0394000C11F4882352F032 +:100A5000BB0F40F4BF2B11F460FF04C06F5F7F4FEA +:0A0A60008F4F9F4F0895F894FFCFC9 +:100A6A00101010FC24BAAE66CEDEA4FEEE161EDA14 +:100A7A0012ADF3000250802004081040A02C0C187C +:040A8A0058D0C00080 +:00000001FF diff --git a/PoolClock/Debug/PoolClockWaterTemp.lss b/PoolClock/Debug/PoolClockWaterTemp.lss new file mode 100644 index 0000000..b781de1 --- /dev/null +++ b/PoolClock/Debug/PoolClockWaterTemp.lss @@ -0,0 +1,2104 @@ + +PoolClockWaterTemp.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000024 00800100 00000a6a 00000afe 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000a6a 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000004 00800124 00800124 00000b22 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00000b22 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00000b54 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000078 00000000 00000000 00000b94 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000022e0 00000000 00000000 00000c0c 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00000861 00000000 00000000 00002eec 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000ba9 00000000 00000000 0000374d 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 00000134 00000000 00000000 000042f8 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000535 00000000 00000000 0000442c 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 00001d8e 00000000 00000000 00004961 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 000000c8 00000000 00000000 000066ef 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> + 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt> + 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt> + 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> + 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> + a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> + c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> + e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> + 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> + 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> + 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> + 16: 7f c0 rjmp .+254 ; 0x116 <__vector_11> + 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> + 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> + 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> + 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> + 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> + 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> + 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> + 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> + 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> + 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> + 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> + 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> + 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> + 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> + +00000034 <__ctors_end>: + 34: 11 24 eor r1, r1 + 36: 1f be out 0x3f, r1 ; 63 + 38: cf ef ldi r28, 0xFF ; 255 + 3a: d4 e0 ldi r29, 0x04 ; 4 + 3c: de bf out 0x3e, r29 ; 62 + 3e: cd bf out 0x3d, r28 ; 61 + +00000040 <__do_copy_data>: + 40: 11 e0 ldi r17, 0x01 ; 1 + 42: a0 e0 ldi r26, 0x00 ; 0 + 44: b1 e0 ldi r27, 0x01 ; 1 + 46: ea e6 ldi r30, 0x6A ; 106 + 48: fa e0 ldi r31, 0x0A ; 10 + 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> + 4c: 05 90 lpm r0, Z+ + 4e: 0d 92 st X+, r0 + 50: a4 32 cpi r26, 0x24 ; 36 + 52: b1 07 cpc r27, r17 + 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> + +00000056 <__do_clear_bss>: + 56: 21 e0 ldi r18, 0x01 ; 1 + 58: a4 e2 ldi r26, 0x24 ; 36 + 5a: b1 e0 ldi r27, 0x01 ; 1 + 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> + +0000005e <.do_clear_bss_loop>: + 5e: 1d 92 st X+, r1 + +00000060 <.do_clear_bss_start>: + 60: a8 32 cpi r26, 0x28 ; 40 + 62: b2 07 cpc r27, r18 + 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> + 66: e2 d2 rcall .+1476 ; 0x62c
+ 68: fe c4 rjmp .+2556 ; 0xa66 <_exit> + +0000006a <__bad_interrupt>: + 6a: ca cf rjmp .-108 ; 0x0 <__vectors> + +0000006c : +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + g_au8Digits[DIGIT_ONES] = u8Ones; + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6c: 8f ef ldi r24, 0xFF ; 255 + 6e: 8a b9 out 0x0a, r24 ; 10 + 70: 87 e0 ldi r24, 0x07 ; 7 + 72: 84 b9 out 0x04, r24 ; 4 + 74: 80 e3 ldi r24, 0x30 ; 48 + 76: 88 b9 out 0x08, r24 ; 8 + 78: 10 92 80 00 sts 0x0080, r1 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 7c: 8a e0 ldi r24, 0x0A ; 10 + 7e: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081> + 82: 84 ec ldi r24, 0xC4 ; 196 + 84: 99 e0 ldi r25, 0x09 ; 9 + 86: 90 93 89 00 sts 0x0089, r25 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089> + 8a: 80 93 88 00 sts 0x0088, r24 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088> + 8e: ef e6 ldi r30, 0x6F ; 111 + 90: f0 e0 ldi r31, 0x00 ; 0 + 92: 80 81 ld r24, Z + 94: 82 60 ori r24, 0x02 ; 2 + 96: 80 83 st Z, r24 + 98: 78 94 sei + 9a: 08 95 ret + +0000009c : + 9c: 9d ec ldi r25, 0xCD ; 205 + 9e: 89 9f mul r24, r25 + a0: 91 2d mov r25, r1 + a2: 11 24 eor r1, r1 + a4: 96 95 lsr r25 + a6: 96 95 lsr r25 + a8: 96 95 lsr r25 + aa: e0 e0 ldi r30, 0x00 ; 0 + ac: f1 e0 ldi r31, 0x01 ; 1 + ae: 92 83 std Z+2, r25 ; 0x02 + b0: 99 0f add r25, r25 + b2: 29 2f mov r18, r25 + b4: 22 0f add r18, r18 + b6: 22 0f add r18, r18 + b8: 92 0f add r25, r18 + ba: 89 1b sub r24, r25 + bc: 81 83 std Z+1, r24 ; 0x01 + be: 60 83 st Z, r22 + c0: 08 95 ret + +000000c2 : +/************************************************************************/ +/* Read button status */ +/************************************************************************/ +void s_vReadButtons( void ) +{ + if ( !(PINC & (1< + { + g_u8ButtonCountTop++; + c6: 80 91 27 01 lds r24, 0x0127 ; 0x800127 + ca: 8f 5f subi r24, 0xFF ; 255 + cc: 80 93 27 01 sts 0x0127, r24 ; 0x800127 + d0: 02 c0 rjmp .+4 ; 0xd6 + } + else + { + g_u8ButtonCountTop = 0U; //reset button counter + d2: 10 92 27 01 sts 0x0127, r1 ; 0x800127 + } + + if ( !(PINC & (1< + { + g_u8ButtonCountBot++; + da: 80 91 26 01 lds r24, 0x0126 ; 0x800126 + de: 8f 5f subi r24, 0xFF ; 255 + e0: 80 93 26 01 sts 0x0126, r24 ; 0x800126 + else + { + g_u8ButtonCountBot = 0U; //reset button counter + } + + if ( g_u8ButtonCountTop > BUTTON_THRESHOLD ) + e4: 90 91 27 01 lds r25, 0x0127 ; 0x800127 + e8: 93 33 cpi r25, 0x33 ; 51 + ea: 68 f0 brcs .+26 ; 0x106 + ec: 06 c0 rjmp .+12 ; 0xfa + { + g_u8ButtonCountBot++; + } + else + { + g_u8ButtonCountBot = 0U; //reset button counter + ee: 10 92 26 01 sts 0x0126, r1 ; 0x800126 + } + + if ( g_u8ButtonCountTop > BUTTON_THRESHOLD ) + f2: 80 91 27 01 lds r24, 0x0127 ; 0x800127 + f6: 83 33 cpi r24, 0x33 ; 51 + f8: 68 f0 brcs .+26 ; 0x114 + { + g_u8ButtonCountTop = 0U; //reset top counter + fa: 10 92 27 01 sts 0x0127, r1 ; 0x800127 + g_u8Mode = MODE_ANIMATION_1; + fe: 81 e0 ldi r24, 0x01 ; 1 + 100: 80 93 25 01 sts 0x0125, r24 ; 0x800125 + 104: 08 95 ret + } + else if ( g_u8ButtonCountBot > BUTTON_THRESHOLD ) + 106: 83 33 cpi r24, 0x33 ; 51 + 108: 28 f0 brcs .+10 ; 0x114 + { + g_u8ButtonCountBot = 0U; //reset bottom counter + 10a: 10 92 26 01 sts 0x0126, r1 ; 0x800126 + g_u8Mode = MODE_ANIMATION_2; + 10e: 82 e0 ldi r24, 0x02 ; 2 + 110: 80 93 25 01 sts 0x0125, r24 ; 0x800125 + 114: 08 95 ret + +00000116 <__vector_11>: + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + 116: 1f 92 push r1 + 118: 0f 92 push r0 + 11a: 0f b6 in r0, 0x3f ; 63 + 11c: 0f 92 push r0 + 11e: 11 24 eor r1, r1 + 120: 2f 93 push r18 + 122: 3f 93 push r19 + 124: 4f 93 push r20 + 126: 5f 93 push r21 + 128: 6f 93 push r22 + 12a: 7f 93 push r23 + 12c: 8f 93 push r24 + 12e: 9f 93 push r25 + 130: af 93 push r26 + 132: bf 93 push r27 + 134: ef 93 push r30 + 136: ff 93 push r31 + PORTB = 0; + 138: 15 b8 out 0x05, r1 ; 5 + PORTD = 0; + 13a: 1b b8 out 0x0b, r1 ; 11 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 13c: 8d e0 ldi r24, 0x0D ; 13 + 13e: 8a 95 dec r24 + 140: f1 f7 brne .-4 ; 0x13e <__vector_11+0x28> + 142: 00 00 nop + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + 144: 81 e0 ldi r24, 0x01 ; 1 + 146: 90 e0 ldi r25, 0x00 ; 0 + 148: 00 90 24 01 lds r0, 0x0124 ; 0x800124 <__data_end> + 14c: 02 c0 rjmp .+4 ; 0x152 <__vector_11+0x3c> + 14e: 88 0f add r24, r24 + 150: 99 1f adc r25, r25 + 152: 0a 94 dec r0 + 154: e2 f7 brpl .-8 ; 0x14e <__vector_11+0x38> + 156: 85 b9 out 0x05, r24 ; 5 + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + 158: e0 91 24 01 lds r30, 0x0124 ; 0x800124 <__data_end> + 15c: f0 e0 ldi r31, 0x00 ; 0 + 15e: e0 50 subi r30, 0x00 ; 0 + 160: ff 4f sbci r31, 0xFF ; 255 + 162: e0 81 ld r30, Z + 164: f0 e0 ldi r31, 0x00 ; 0 + 166: ed 5f subi r30, 0xFD ; 253 + 168: fe 4f sbci r31, 0xFE ; 254 + 16a: 80 81 ld r24, Z + 16c: 8b b9 out 0x0b, r24 ; 11 + g_u8ISRDigitSelect++; + 16e: 80 91 24 01 lds r24, 0x0124 ; 0x800124 <__data_end> + 172: 8f 5f subi r24, 0xFF ; 255 + if (g_u8ISRDigitSelect > 2U) + 174: 83 30 cpi r24, 0x03 ; 3 + 176: 18 f4 brcc .+6 ; 0x17e <__vector_11+0x68> + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + 178: 80 93 24 01 sts 0x0124, r24 ; 0x800124 <__data_end> + 17c: 02 c0 rjmp .+4 ; 0x182 <__vector_11+0x6c> + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + 17e: 10 92 24 01 sts 0x0124, r1 ; 0x800124 <__data_end> + } + + /* Read and evaluate button status */ + s_vReadButtons(); + 182: 9f df rcall .-194 ; 0xc2 +} + 184: ff 91 pop r31 + 186: ef 91 pop r30 + 188: bf 91 pop r27 + 18a: af 91 pop r26 + 18c: 9f 91 pop r25 + 18e: 8f 91 pop r24 + 190: 7f 91 pop r23 + 192: 6f 91 pop r22 + 194: 5f 91 pop r21 + 196: 4f 91 pop r20 + 198: 3f 91 pop r19 + 19a: 2f 91 pop r18 + 19c: 0f 90 pop r0 + 19e: 0f be out 0x3f, r0 ; 63 + 1a0: 0f 90 pop r0 + 1a2: 1f 90 pop r1 + 1a4: 18 95 reti + +000001a6 : +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1a6: e0 e0 ldi r30, 0x00 ; 0 + 1a8: f1 e0 ldi r31, 0x01 ; 1 + 1aa: 90 e1 ldi r25, 0x10 ; 16 + 1ac: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1ae: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1b0: 90 83 st Z, r25 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1b2: 2f eb ldi r18, 0xBF ; 191 + 1b4: 35 e4 ldi r19, 0x45 ; 69 + 1b6: 44 e0 ldi r20, 0x04 ; 4 + 1b8: 21 50 subi r18, 0x01 ; 1 + 1ba: 30 40 sbci r19, 0x00 ; 0 + 1bc: 40 40 sbci r20, 0x00 ; 0 + 1be: e1 f7 brne .-8 ; 0x1b8 + 1c0: 00 c0 rjmp .+0 ; 0x1c2 + 1c2: 00 00 nop +/************************************************************************/ +void s_vShowAnim( uint8_t u8Select ) +{ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + switch ( u8Select ) + 1c4: 81 30 cpi r24, 0x01 ; 1 + 1c6: 21 f0 breq .+8 ; 0x1d0 + 1c8: 82 30 cpi r24, 0x02 ; 2 + 1ca: 09 f4 brne .+2 ; 0x1ce + 1cc: e2 c0 rjmp .+452 ; 0x392 + 1ce: c1 c1 rjmp .+898 ; 0x552 <__stack+0x53> +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1d0: e0 e0 ldi r30, 0x00 ; 0 + 1d2: f1 e0 ldi r31, 0x01 ; 1 + 1d4: 22 e1 ldi r18, 0x12 ; 18 + 1d6: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1d8: 90 e1 ldi r25, 0x10 ; 16 + 1da: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1dc: 90 83 st Z, r25 + 1de: 5f eb ldi r21, 0xBF ; 191 + 1e0: 65 e4 ldi r22, 0x45 ; 69 + 1e2: 74 e0 ldi r23, 0x04 ; 4 + 1e4: 51 50 subi r21, 0x01 ; 1 + 1e6: 60 40 sbci r22, 0x00 ; 0 + 1e8: 70 40 sbci r23, 0x00 ; 0 + 1ea: e1 f7 brne .-8 ; 0x1e4 + 1ec: 00 c0 rjmp .+0 ; 0x1ee + 1ee: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1f0: 3c e0 ldi r19, 0x0C ; 12 + 1f2: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1f4: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1f6: 90 83 st Z, r25 + 1f8: 8f eb ldi r24, 0xBF ; 191 + 1fa: a5 e4 ldi r26, 0x45 ; 69 + 1fc: 44 e0 ldi r20, 0x04 ; 4 + 1fe: 81 50 subi r24, 0x01 ; 1 + 200: a0 40 sbci r26, 0x00 ; 0 + 202: 40 40 sbci r20, 0x00 ; 0 + 204: e1 f7 brne .-8 ; 0x1fe + 206: 00 c0 rjmp .+0 ; 0x208 + 208: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 20a: 88 e0 ldi r24, 0x08 ; 8 + 20c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 20e: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 210: 90 83 st Z, r25 + 212: 5f eb ldi r21, 0xBF ; 191 + 214: 65 e4 ldi r22, 0x45 ; 69 + 216: 74 e0 ldi r23, 0x04 ; 4 + 218: 51 50 subi r21, 0x01 ; 1 + 21a: 60 40 sbci r22, 0x00 ; 0 + 21c: 70 40 sbci r23, 0x00 ; 0 + 21e: e1 f7 brne .-8 ; 0x218 + 220: 00 c0 rjmp .+0 ; 0x222 + 222: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 224: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 226: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 228: 90 83 st Z, r25 + 22a: af eb ldi r26, 0xBF ; 191 + 22c: 45 e4 ldi r20, 0x45 ; 69 + 22e: 54 e0 ldi r21, 0x04 ; 4 + 230: a1 50 subi r26, 0x01 ; 1 + 232: 40 40 sbci r20, 0x00 ; 0 + 234: 50 40 sbci r21, 0x00 ; 0 + 236: e1 f7 brne .-8 ; 0x230 + 238: 00 c0 rjmp .+0 ; 0x23a + 23a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 23c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 23e: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 240: 90 83 st Z, r25 + 242: 6f eb ldi r22, 0xBF ; 191 + 244: 75 e4 ldi r23, 0x45 ; 69 + 246: a4 e0 ldi r26, 0x04 ; 4 + 248: 61 50 subi r22, 0x01 ; 1 + 24a: 70 40 sbci r23, 0x00 ; 0 + 24c: a0 40 sbci r26, 0x00 ; 0 + 24e: e1 f7 brne .-8 ; 0x248 + 250: 00 c0 rjmp .+0 ; 0x252 + 252: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 254: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 256: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 258: 90 83 st Z, r25 + 25a: 4f eb ldi r20, 0xBF ; 191 + 25c: 55 e4 ldi r21, 0x45 ; 69 + 25e: 64 e0 ldi r22, 0x04 ; 4 + 260: 41 50 subi r20, 0x01 ; 1 + 262: 50 40 sbci r21, 0x00 ; 0 + 264: 60 40 sbci r22, 0x00 ; 0 + 266: e1 f7 brne .-8 ; 0x260 + 268: 00 c0 rjmp .+0 ; 0x26a + 26a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 26c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 26e: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 270: 41 e0 ldi r20, 0x01 ; 1 + 272: 40 83 st Z, r20 + 274: 7f eb ldi r23, 0xBF ; 191 + 276: a5 e4 ldi r26, 0x45 ; 69 + 278: 54 e0 ldi r21, 0x04 ; 4 + 27a: 71 50 subi r23, 0x01 ; 1 + 27c: a0 40 sbci r26, 0x00 ; 0 + 27e: 50 40 sbci r21, 0x00 ; 0 + 280: e1 f7 brne .-8 ; 0x27a + 282: 00 c0 rjmp .+0 ; 0x284 + 284: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 286: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 288: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 28a: 53 e0 ldi r21, 0x03 ; 3 + 28c: 50 83 st Z, r21 + 28e: 6f eb ldi r22, 0xBF ; 191 + 290: 75 e4 ldi r23, 0x45 ; 69 + 292: a4 e0 ldi r26, 0x04 ; 4 + 294: 61 50 subi r22, 0x01 ; 1 + 296: 70 40 sbci r23, 0x00 ; 0 + 298: a0 40 sbci r26, 0x00 ; 0 + 29a: e1 f7 brne .-8 ; 0x294 + 29c: 00 c0 rjmp .+0 ; 0x29e + 29e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2a0: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2a2: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2a4: 80 83 st Z, r24 + 2a6: 6f eb ldi r22, 0xBF ; 191 + 2a8: 75 e4 ldi r23, 0x45 ; 69 + 2aa: a4 e0 ldi r26, 0x04 ; 4 + 2ac: 61 50 subi r22, 0x01 ; 1 + 2ae: 70 40 sbci r23, 0x00 ; 0 + 2b0: a0 40 sbci r26, 0x00 ; 0 + 2b2: e1 f7 brne .-8 ; 0x2ac + 2b4: 00 c0 rjmp .+0 ; 0x2b6 + 2b6: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2b8: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2ba: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2bc: 80 83 st Z, r24 + 2be: 6f eb ldi r22, 0xBF ; 191 + 2c0: 75 e4 ldi r23, 0x45 ; 69 + 2c2: a4 e0 ldi r26, 0x04 ; 4 + 2c4: 61 50 subi r22, 0x01 ; 1 + 2c6: 70 40 sbci r23, 0x00 ; 0 + 2c8: a0 40 sbci r26, 0x00 ; 0 + 2ca: e1 f7 brne .-8 ; 0x2c4 + 2cc: 00 c0 rjmp .+0 ; 0x2ce + 2ce: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2d0: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2d2: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2d4: 50 83 st Z, r21 + 2d6: 5f eb ldi r21, 0xBF ; 191 + 2d8: 65 e4 ldi r22, 0x45 ; 69 + 2da: 74 e0 ldi r23, 0x04 ; 4 + 2dc: 51 50 subi r21, 0x01 ; 1 + 2de: 60 40 sbci r22, 0x00 ; 0 + 2e0: 70 40 sbci r23, 0x00 ; 0 + 2e2: e1 f7 brne .-8 ; 0x2dc + 2e4: 00 c0 rjmp .+0 ; 0x2e6 + 2e6: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2e8: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2ea: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2ec: 40 83 st Z, r20 + 2ee: af eb ldi r26, 0xBF ; 191 + 2f0: 45 e4 ldi r20, 0x45 ; 69 + 2f2: 54 e0 ldi r21, 0x04 ; 4 + 2f4: a1 50 subi r26, 0x01 ; 1 + 2f6: 40 40 sbci r20, 0x00 ; 0 + 2f8: 50 40 sbci r21, 0x00 ; 0 + 2fa: e1 f7 brne .-8 ; 0x2f4 + 2fc: 00 c0 rjmp .+0 ; 0x2fe + 2fe: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 300: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 302: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 304: 90 83 st Z, r25 + 306: 6f eb ldi r22, 0xBF ; 191 + 308: 75 e4 ldi r23, 0x45 ; 69 + 30a: a4 e0 ldi r26, 0x04 ; 4 + 30c: 61 50 subi r22, 0x01 ; 1 + 30e: 70 40 sbci r23, 0x00 ; 0 + 310: a0 40 sbci r26, 0x00 ; 0 + 312: e1 f7 brne .-8 ; 0x30c + 314: 00 c0 rjmp .+0 ; 0x316 + 316: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 318: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 31a: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 31c: 90 83 st Z, r25 + 31e: 4f eb ldi r20, 0xBF ; 191 + 320: 55 e4 ldi r21, 0x45 ; 69 + 322: 64 e0 ldi r22, 0x04 ; 4 + 324: 41 50 subi r20, 0x01 ; 1 + 326: 50 40 sbci r21, 0x00 ; 0 + 328: 60 40 sbci r22, 0x00 ; 0 + 32a: e1 f7 brne .-8 ; 0x324 + 32c: 00 c0 rjmp .+0 ; 0x32e + 32e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 330: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 332: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 334: 90 83 st Z, r25 + 336: 7f eb ldi r23, 0xBF ; 191 + 338: a5 e4 ldi r26, 0x45 ; 69 + 33a: 44 e0 ldi r20, 0x04 ; 4 + 33c: 71 50 subi r23, 0x01 ; 1 + 33e: a0 40 sbci r26, 0x00 ; 0 + 340: 40 40 sbci r20, 0x00 ; 0 + 342: e1 f7 brne .-8 ; 0x33c + 344: 00 c0 rjmp .+0 ; 0x346 + 346: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 348: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 34a: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 34c: 90 83 st Z, r25 + 34e: 5f eb ldi r21, 0xBF ; 191 + 350: 65 e4 ldi r22, 0x45 ; 69 + 352: 74 e0 ldi r23, 0x04 ; 4 + 354: 51 50 subi r21, 0x01 ; 1 + 356: 60 40 sbci r22, 0x00 ; 0 + 358: 70 40 sbci r23, 0x00 ; 0 + 35a: e1 f7 brne .-8 ; 0x354 + 35c: 00 c0 rjmp .+0 ; 0x35e + 35e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 360: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 362: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 364: 90 83 st Z, r25 + 366: 8f eb ldi r24, 0xBF ; 191 + 368: a5 e4 ldi r26, 0x45 ; 69 + 36a: 34 e0 ldi r19, 0x04 ; 4 + 36c: 81 50 subi r24, 0x01 ; 1 + 36e: a0 40 sbci r26, 0x00 ; 0 + 370: 30 40 sbci r19, 0x00 ; 0 + 372: e1 f7 brne .-8 ; 0x36c + 374: 00 c0 rjmp .+0 ; 0x376 + 376: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 378: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 37a: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 37c: 90 83 st Z, r25 + 37e: 4f eb ldi r20, 0xBF ; 191 + 380: 55 e4 ldi r21, 0x45 ; 69 + 382: 64 e0 ldi r22, 0x04 ; 4 + 384: 41 50 subi r20, 0x01 ; 1 + 386: 50 40 sbci r21, 0x00 ; 0 + 388: 60 40 sbci r22, 0x00 ; 0 + 38a: e1 f7 brne .-8 ; 0x384 + 38c: 00 c0 rjmp .+0 ; 0x38e + 38e: 00 00 nop + 390: e0 c0 rjmp .+448 ; 0x552 <__stack+0x53> +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 392: e0 e0 ldi r30, 0x00 ; 0 + 394: f1 e0 ldi r31, 0x01 ; 1 + 396: 22 e1 ldi r18, 0x12 ; 18 + 398: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 39a: 80 e1 ldi r24, 0x10 ; 16 + 39c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 39e: 80 83 st Z, r24 + 3a0: 7f eb ldi r23, 0xBF ; 191 + 3a2: 95 e4 ldi r25, 0x45 ; 69 + 3a4: a4 e0 ldi r26, 0x04 ; 4 + 3a6: 71 50 subi r23, 0x01 ; 1 + 3a8: 90 40 sbci r25, 0x00 ; 0 + 3aa: a0 40 sbci r26, 0x00 ; 0 + 3ac: e1 f7 brne .-8 ; 0x3a6 + 3ae: 00 c0 rjmp .+0 ; 0x3b0 + 3b0: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3b2: 3c e0 ldi r19, 0x0C ; 12 + 3b4: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3b6: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3b8: 80 83 st Z, r24 + 3ba: 4f eb ldi r20, 0xBF ; 191 + 3bc: 55 e4 ldi r21, 0x45 ; 69 + 3be: 64 e0 ldi r22, 0x04 ; 4 + 3c0: 41 50 subi r20, 0x01 ; 1 + 3c2: 50 40 sbci r21, 0x00 ; 0 + 3c4: 60 40 sbci r22, 0x00 ; 0 + 3c6: e1 f7 brne .-8 ; 0x3c0 + 3c8: 00 c0 rjmp .+0 ; 0x3ca + 3ca: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3cc: 98 e0 ldi r25, 0x08 ; 8 + 3ce: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3d0: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3d2: 80 83 st Z, r24 + 3d4: 7f eb ldi r23, 0xBF ; 191 + 3d6: a5 e4 ldi r26, 0x45 ; 69 + 3d8: 44 e0 ldi r20, 0x04 ; 4 + 3da: 71 50 subi r23, 0x01 ; 1 + 3dc: a0 40 sbci r26, 0x00 ; 0 + 3de: 40 40 sbci r20, 0x00 ; 0 + 3e0: e1 f7 brne .-8 ; 0x3da + 3e2: 00 c0 rjmp .+0 ; 0x3e4 + 3e4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3e6: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3e8: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3ea: 80 83 st Z, r24 + 3ec: 5f eb ldi r21, 0xBF ; 191 + 3ee: 65 e4 ldi r22, 0x45 ; 69 + 3f0: 74 e0 ldi r23, 0x04 ; 4 + 3f2: 51 50 subi r21, 0x01 ; 1 + 3f4: 60 40 sbci r22, 0x00 ; 0 + 3f6: 70 40 sbci r23, 0x00 ; 0 + 3f8: e1 f7 brne .-8 ; 0x3f2 + 3fa: 00 c0 rjmp .+0 ; 0x3fc + 3fc: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3fe: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 400: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 402: 80 83 st Z, r24 + 404: af eb ldi r26, 0xBF ; 191 + 406: 45 e4 ldi r20, 0x45 ; 69 + 408: 54 e0 ldi r21, 0x04 ; 4 + 40a: a1 50 subi r26, 0x01 ; 1 + 40c: 40 40 sbci r20, 0x00 ; 0 + 40e: 50 40 sbci r21, 0x00 ; 0 + 410: e1 f7 brne .-8 ; 0x40a <__LOCK_REGION_LENGTH__+0xa> + 412: 00 c0 rjmp .+0 ; 0x414 <__LOCK_REGION_LENGTH__+0x14> + 414: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 416: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 418: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 41a: 80 83 st Z, r24 + 41c: 6f eb ldi r22, 0xBF ; 191 + 41e: 75 e4 ldi r23, 0x45 ; 69 + 420: a4 e0 ldi r26, 0x04 ; 4 + 422: 61 50 subi r22, 0x01 ; 1 + 424: 70 40 sbci r23, 0x00 ; 0 + 426: a0 40 sbci r26, 0x00 ; 0 + 428: e1 f7 brne .-8 ; 0x422 <__LOCK_REGION_LENGTH__+0x22> + 42a: 00 c0 rjmp .+0 ; 0x42c <__LOCK_REGION_LENGTH__+0x2c> + 42c: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 42e: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 430: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 432: 41 e0 ldi r20, 0x01 ; 1 + 434: 40 83 st Z, r20 + 436: 5f eb ldi r21, 0xBF ; 191 + 438: 65 e4 ldi r22, 0x45 ; 69 + 43a: 74 e0 ldi r23, 0x04 ; 4 + 43c: 51 50 subi r21, 0x01 ; 1 + 43e: 60 40 sbci r22, 0x00 ; 0 + 440: 70 40 sbci r23, 0x00 ; 0 + 442: e1 f7 brne .-8 ; 0x43c <__LOCK_REGION_LENGTH__+0x3c> + 444: 00 c0 rjmp .+0 ; 0x446 <__LOCK_REGION_LENGTH__+0x46> + 446: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 448: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 44a: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 44c: 53 e0 ldi r21, 0x03 ; 3 + 44e: 50 83 st Z, r21 + 450: af eb ldi r26, 0xBF ; 191 + 452: 65 e4 ldi r22, 0x45 ; 69 + 454: 74 e0 ldi r23, 0x04 ; 4 + 456: a1 50 subi r26, 0x01 ; 1 + 458: 60 40 sbci r22, 0x00 ; 0 + 45a: 70 40 sbci r23, 0x00 ; 0 + 45c: e1 f7 brne .-8 ; 0x456 <__LOCK_REGION_LENGTH__+0x56> + 45e: 00 c0 rjmp .+0 ; 0x460 <__LOCK_REGION_LENGTH__+0x60> + 460: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 462: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 464: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 466: 90 83 st Z, r25 + 468: af eb ldi r26, 0xBF ; 191 + 46a: 65 e4 ldi r22, 0x45 ; 69 + 46c: 74 e0 ldi r23, 0x04 ; 4 + 46e: a1 50 subi r26, 0x01 ; 1 + 470: 60 40 sbci r22, 0x00 ; 0 + 472: 70 40 sbci r23, 0x00 ; 0 + 474: e1 f7 brne .-8 ; 0x46e <__LOCK_REGION_LENGTH__+0x6e> + 476: 00 c0 rjmp .+0 ; 0x478 <__LOCK_REGION_LENGTH__+0x78> + 478: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 47a: 52 83 std Z+2, r21 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 47c: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 47e: 90 83 st Z, r25 + 480: af eb ldi r26, 0xBF ; 191 + 482: 65 e4 ldi r22, 0x45 ; 69 + 484: 74 e0 ldi r23, 0x04 ; 4 + 486: a1 50 subi r26, 0x01 ; 1 + 488: 60 40 sbci r22, 0x00 ; 0 + 48a: 70 40 sbci r23, 0x00 ; 0 + 48c: e1 f7 brne .-8 ; 0x486 <__LOCK_REGION_LENGTH__+0x86> + 48e: 00 c0 rjmp .+0 ; 0x490 <__LOCK_REGION_LENGTH__+0x90> + 490: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 492: 42 83 std Z+2, r20 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 494: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 496: 90 83 st Z, r25 + 498: af eb ldi r26, 0xBF ; 191 + 49a: 65 e4 ldi r22, 0x45 ; 69 + 49c: 74 e0 ldi r23, 0x04 ; 4 + 49e: a1 50 subi r26, 0x01 ; 1 + 4a0: 60 40 sbci r22, 0x00 ; 0 + 4a2: 70 40 sbci r23, 0x00 ; 0 + 4a4: e1 f7 brne .-8 ; 0x49e <__LOCK_REGION_LENGTH__+0x9e> + 4a6: 00 c0 rjmp .+0 ; 0x4a8 <__LOCK_REGION_LENGTH__+0xa8> + 4a8: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4aa: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4ac: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4ae: 90 83 st Z, r25 + 4b0: af eb ldi r26, 0xBF ; 191 + 4b2: 65 e4 ldi r22, 0x45 ; 69 + 4b4: 74 e0 ldi r23, 0x04 ; 4 + 4b6: a1 50 subi r26, 0x01 ; 1 + 4b8: 60 40 sbci r22, 0x00 ; 0 + 4ba: 70 40 sbci r23, 0x00 ; 0 + 4bc: e1 f7 brne .-8 ; 0x4b6 <__LOCK_REGION_LENGTH__+0xb6> + 4be: 00 c0 rjmp .+0 ; 0x4c0 <__LOCK_REGION_LENGTH__+0xc0> + 4c0: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4c2: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4c4: 51 83 std Z+1, r21 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4c6: 90 83 st Z, r25 + 4c8: af eb ldi r26, 0xBF ; 191 + 4ca: 55 e4 ldi r21, 0x45 ; 69 + 4cc: 64 e0 ldi r22, 0x04 ; 4 + 4ce: a1 50 subi r26, 0x01 ; 1 + 4d0: 50 40 sbci r21, 0x00 ; 0 + 4d2: 60 40 sbci r22, 0x00 ; 0 + 4d4: e1 f7 brne .-8 ; 0x4ce <__LOCK_REGION_LENGTH__+0xce> + 4d6: 00 c0 rjmp .+0 ; 0x4d8 <__LOCK_REGION_LENGTH__+0xd8> + 4d8: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4da: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4dc: 41 83 std Z+1, r20 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4de: 90 83 st Z, r25 + 4e0: 7f eb ldi r23, 0xBF ; 191 + 4e2: a5 e4 ldi r26, 0x45 ; 69 + 4e4: 44 e0 ldi r20, 0x04 ; 4 + 4e6: 71 50 subi r23, 0x01 ; 1 + 4e8: a0 40 sbci r26, 0x00 ; 0 + 4ea: 40 40 sbci r20, 0x00 ; 0 + 4ec: e1 f7 brne .-8 ; 0x4e6 <__LOCK_REGION_LENGTH__+0xe6> + 4ee: 00 c0 rjmp .+0 ; 0x4f0 <__LOCK_REGION_LENGTH__+0xf0> + 4f0: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4f2: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4f4: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4f6: 90 83 st Z, r25 + 4f8: 5f eb ldi r21, 0xBF ; 191 + 4fa: 65 e4 ldi r22, 0x45 ; 69 + 4fc: 74 e0 ldi r23, 0x04 ; 4 + 4fe: 51 50 subi r21, 0x01 ; 1 + 500: 60 40 sbci r22, 0x00 ; 0 + 502: 70 40 sbci r23, 0x00 ; 0 + 504: e1 f7 brne .-8 ; 0x4fe <__LOCK_REGION_LENGTH__+0xfe> + 506: 00 c0 rjmp .+0 ; 0x508 <__stack+0x9> + 508: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 50a: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 50c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 50e: 30 83 st Z, r19 + 510: 9f eb ldi r25, 0xBF ; 191 + 512: a5 e4 ldi r26, 0x45 ; 69 + 514: 34 e0 ldi r19, 0x04 ; 4 + 516: 91 50 subi r25, 0x01 ; 1 + 518: a0 40 sbci r26, 0x00 ; 0 + 51a: 30 40 sbci r19, 0x00 ; 0 + 51c: e1 f7 brne .-8 ; 0x516 <__stack+0x17> + 51e: 00 c0 rjmp .+0 ; 0x520 <__stack+0x21> + 520: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 522: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 524: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 526: 20 83 st Z, r18 + 528: 4f eb ldi r20, 0xBF ; 191 + 52a: 55 e4 ldi r21, 0x45 ; 69 + 52c: 64 e0 ldi r22, 0x04 ; 4 + 52e: 41 50 subi r20, 0x01 ; 1 + 530: 50 40 sbci r21, 0x00 ; 0 + 532: 60 40 sbci r22, 0x00 ; 0 + 534: e1 f7 brne .-8 ; 0x52e <__stack+0x2f> + 536: 00 c0 rjmp .+0 ; 0x538 <__stack+0x39> + 538: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 53a: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 53c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 53e: 80 83 st Z, r24 + 540: 7f eb ldi r23, 0xBF ; 191 + 542: 85 e4 ldi r24, 0x45 ; 69 + 544: 94 e0 ldi r25, 0x04 ; 4 + 546: 71 50 subi r23, 0x01 ; 1 + 548: 80 40 sbci r24, 0x00 ; 0 + 54a: 90 40 sbci r25, 0x00 ; 0 + 54c: e1 f7 brne .-8 ; 0x546 <__stack+0x47> + 54e: 00 c0 rjmp .+0 ; 0x550 <__stack+0x51> + 550: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 552: e0 e0 ldi r30, 0x00 ; 0 + 554: f1 e0 ldi r31, 0x01 ; 1 + 556: 80 e1 ldi r24, 0x10 ; 16 + 558: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 55a: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 55c: 80 83 st Z, r24 + 55e: af eb ldi r26, 0xBF ; 191 + 560: 25 e4 ldi r18, 0x45 ; 69 + 562: 34 e0 ldi r19, 0x04 ; 4 + 564: a1 50 subi r26, 0x01 ; 1 + 566: 20 40 sbci r18, 0x00 ; 0 + 568: 30 40 sbci r19, 0x00 ; 0 + 56a: e1 f7 brne .-8 ; 0x564 <__stack+0x65> + 56c: 00 c0 rjmp .+0 ; 0x56e <__stack+0x6f> + 56e: 00 00 nop + 570: 08 95 ret + +00000572 : +uint8_t s_u8DS18B20_Reset( void ) +{ + uint8_t u8Status; + + //low for 480 us + DS18B20_PORT &= ~ (1< + 57e: 00 c0 rjmp .+0 ; 0x580 + 580: 00 00 nop + _delay_us(480); + + //release line and wait for 60 us + DS18B20_DDR &= ~(1< + 58c: 00 c0 rjmp .+0 ; 0x58e + 58e: 00 00 nop + _delay_us(60); + + //get value and wait 420 us + u8Status = (DS18B20_PIN & (1< + 59a: 00 c0 rjmp .+0 ; 0x59c + 59c: 00 00 nop + _delay_us(420); + + //return the read value: 0=okay, 1=error + return u8Status; +} + 59e: 88 70 andi r24, 0x08 ; 8 + 5a0: 08 95 ret + +000005a2 : +/* Write single bit to DS18B20 (61 us) */ +/************************************************************************/ +void s_vDS18B20_WriteBit( uint8_t u8Bit ) +{ + //low for 1 us + DS18B20_PORT &= ~ (1U< + 5ac: 00 c0 rjmp .+0 ; 0x5ae + _delay_us(1); + + //if we want to write 1, release the line (if not will keep low) + if (1U == u8Bit ) + 5ae: 81 30 cpi r24, 0x01 ; 1 + 5b0: 09 f4 brne .+2 ; 0x5b4 + { + DS18B20_DDR &= ~(1< + 5bc: 00 c0 rjmp .+0 ; 0x5be + 5be: 00 00 nop + } + + //wait 60 us and release the line + _delay_us(60); + DS18B20_DDR &= ~(1<: + +/************************************************************************/ +/* Write byte to DS18B20 (8 * 61 us = 488 us) */ +/************************************************************************/ +void s_vDS18B20_WriteByte( uint8_t u8Byte ) +{ + 5c4: cf 93 push r28 + 5c6: df 93 push r29 + 5c8: d8 2f mov r29, r24 + 5ca: c8 e0 ldi r28, 0x08 ; 8 + uint8_t u8Bits = 8U; + + while ( u8Bits-- ) + { + s_vDS18B20_WriteBit( u8Byte & 1U ); + 5cc: 8d 2f mov r24, r29 + 5ce: 81 70 andi r24, 0x01 ; 1 + 5d0: e8 df rcall .-48 ; 0x5a2 + u8Byte >>= 1U; + 5d2: d6 95 lsr r29 + 5d4: c1 50 subi r28, 0x01 ; 1 +/************************************************************************/ +void s_vDS18B20_WriteByte( uint8_t u8Byte ) +{ + uint8_t u8Bits = 8U; + + while ( u8Bits-- ) + 5d6: d1 f7 brne .-12 ; 0x5cc + s_vDS18B20_WriteBit( u8Byte & 1U ); + u8Byte >>= 1U; + } + + return; //void +} + 5d8: df 91 pop r29 + 5da: cf 91 pop r28 + 5dc: 08 95 ret + +000005de : +uint8_t s_u8DS18B20_ReadBit( void ) +{ + uint8_t u8Bit = 0U; + + //low for 1 us + DS18B20_PORT &= ~ (1U< + 5e8: 00 c0 rjmp .+0 ; 0x5ea + _delay_us(1); + + //release line and wait for 14 us + DS18B20_DDR &= ~(1U< + 5f2: 00 00 nop + _delay_us(14); + + //read the value + if ( DS18B20_PIN & (1U< + 5fe: 00 c0 rjmp .+0 ; 0x600 + 600: 00 00 nop + + //wait 45 us and return read value + _delay_us(45); + + return u8Bit; +} + 602: 83 fb bst r24, 3 + 604: 88 27 eor r24, r24 + 606: 80 f9 bld r24, 0 + 608: 08 95 ret + +0000060a : + +/************************************************************************/ +/* Read byte from DS18B20 (8 * 60 us = 480 us) */ +/************************************************************************/ +uint8_t s_u8DS18B20_ReadByte( void ) +{ + 60a: cf 93 push r28 + 60c: df 93 push r29 + 60e: d8 e0 ldi r29, 0x08 ; 8 + uint8_t u8Bits = 8U; + uint8_t n = 0U; + 610: c0 e0 ldi r28, 0x00 ; 0 + while ( u8Bits-- ) + { + n >>= 1U; + n |= (s_u8DS18B20_ReadBit()<<7U); + 612: e5 df rcall .-54 ; 0x5de + 614: 20 e8 ldi r18, 0x80 ; 128 + 616: 82 9f mul r24, r18 + 618: c0 01 movw r24, r0 + 61a: 11 24 eor r1, r1 + 61c: c6 95 lsr r28 + 61e: c8 2b or r28, r24 + 620: d1 50 subi r29, 0x01 ; 1 +/************************************************************************/ +uint8_t s_u8DS18B20_ReadByte( void ) +{ + uint8_t u8Bits = 8U; + uint8_t n = 0U; + while ( u8Bits-- ) + 622: b9 f7 brne .-18 ; 0x612 + n >>= 1U; + n |= (s_u8DS18B20_ReadBit()<<7U); + } + + return n; +} + 624: 8c 2f mov r24, r28 + 626: df 91 pop r29 + 628: cf 91 pop r28 + 62a: 08 95 ret + +0000062c
: + uint8_t u8TempLo, u8TempHi; + float f32Temperature; + uint8_t u8Loop = 0U; + + /* Init I/O: */ + s_vInit(); + 62c: 1f dd rcall .-1474 ; 0x6c +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 62e: e0 e0 ldi r30, 0x00 ; 0 + 630: f1 e0 ldi r31, 0x01 ; 1 + 632: 80 e1 ldi r24, 0x10 ; 16 + 634: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 636: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 638: 80 83 st Z, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 63a: af e4 ldi r26, 0x4F ; 79 + 63c: b3 ec ldi r27, 0xC3 ; 195 + 63e: 11 97 sbiw r26, 0x01 ; 1 + 640: f1 f7 brne .-4 ; 0x63e + 642: 00 c0 rjmp .+0 ; 0x644 + 644: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 646: 93 e1 ldi r25, 0x13 ; 19 + 648: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 64a: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 64c: 80 83 st Z, r24 + 64e: bf e7 ldi r27, 0x7F ; 127 + 650: cf e4 ldi r28, 0x4F ; 79 + 652: 22 e1 ldi r18, 0x12 ; 18 + 654: b1 50 subi r27, 0x01 ; 1 + 656: c0 40 sbci r28, 0x00 ; 0 + 658: 20 40 sbci r18, 0x00 ; 0 + 65a: e1 f7 brne .-8 ; 0x654 + 65c: 00 c0 rjmp .+0 ; 0x65e + 65e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 660: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 662: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 664: 80 83 st Z, r24 + 666: 3f e7 ldi r19, 0x7F ; 127 + 668: 4f e4 ldi r20, 0x4F ; 79 + 66a: 82 e1 ldi r24, 0x12 ; 18 + 66c: 31 50 subi r19, 0x01 ; 1 + 66e: 40 40 sbci r20, 0x00 ; 0 + 670: 80 40 sbci r24, 0x00 ; 0 + 672: e1 f7 brne .-8 ; 0x66c + 674: 00 c0 rjmp .+0 ; 0x676 + 676: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 678: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 67a: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 67c: 86 e1 ldi r24, 0x16 ; 22 + 67e: 80 83 st Z, r24 + 680: 9f e7 ldi r25, 0x7F ; 127 + 682: af e4 ldi r26, 0x4F ; 79 + 684: b2 e1 ldi r27, 0x12 ; 18 + 686: 91 50 subi r25, 0x01 ; 1 + 688: a0 40 sbci r26, 0x00 ; 0 + 68a: b0 40 sbci r27, 0x00 ; 0 + 68c: e1 f7 brne .-8 ; 0x686 + 68e: 00 c0 rjmp .+0 ; 0x690 + 690: 00 00 nop + 692: 35 e0 ldi r19, 0x05 ; 5 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 694: 80 e1 ldi r24, 0x10 ; 16 + g_au8Digits[DIGIT_ONES] = u8Ones; + 696: 23 e1 ldi r18, 0x13 ; 19 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 698: 7c e1 ldi r23, 0x1C ; 28 + 69a: 6d e1 ldi r22, 0x1D ; 29 + 69c: 5e e1 ldi r21, 0x1E ; 30 +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + g_au8Digits[DIGIT_ONES] = u8Ones; + 69e: 96 e1 ldi r25, 0x16 ; 22 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6a0: 4f e1 ldi r20, 0x1F ; 31 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6a2: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6a4: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6a6: 70 83 st Z, r23 + 6a8: cf eb ldi r28, 0xBF ; 191 + 6aa: a5 e4 ldi r26, 0x45 ; 69 + 6ac: b4 e0 ldi r27, 0x04 ; 4 + 6ae: c1 50 subi r28, 0x01 ; 1 + 6b0: a0 40 sbci r26, 0x00 ; 0 + 6b2: b0 40 sbci r27, 0x00 ; 0 + 6b4: e1 f7 brne .-8 ; 0x6ae + 6b6: 00 c0 rjmp .+0 ; 0x6b8 + 6b8: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6ba: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6bc: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6be: 60 83 st Z, r22 + 6c0: cf eb ldi r28, 0xBF ; 191 + 6c2: a5 e4 ldi r26, 0x45 ; 69 + 6c4: b4 e0 ldi r27, 0x04 ; 4 + 6c6: c1 50 subi r28, 0x01 ; 1 + 6c8: a0 40 sbci r26, 0x00 ; 0 + 6ca: b0 40 sbci r27, 0x00 ; 0 + 6cc: e1 f7 brne .-8 ; 0x6c6 + 6ce: 00 c0 rjmp .+0 ; 0x6d0 + 6d0: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6d2: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6d4: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6d6: 50 83 st Z, r21 + 6d8: cf eb ldi r28, 0xBF ; 191 + 6da: a5 e4 ldi r26, 0x45 ; 69 + 6dc: b4 e0 ldi r27, 0x04 ; 4 + 6de: c1 50 subi r28, 0x01 ; 1 + 6e0: a0 40 sbci r26, 0x00 ; 0 + 6e2: b0 40 sbci r27, 0x00 ; 0 + 6e4: e1 f7 brne .-8 ; 0x6de + 6e6: 00 c0 rjmp .+0 ; 0x6e8 + 6e8: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6ea: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6ec: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6ee: 40 83 st Z, r20 + 6f0: cf eb ldi r28, 0xBF ; 191 + 6f2: a5 e4 ldi r26, 0x45 ; 69 + 6f4: b4 e0 ldi r27, 0x04 ; 4 + 6f6: c1 50 subi r28, 0x01 ; 1 + 6f8: a0 40 sbci r26, 0x00 ; 0 + 6fa: b0 40 sbci r27, 0x00 ; 0 + 6fc: e1 f7 brne .-8 ; 0x6f6 + 6fe: 00 c0 rjmp .+0 ; 0x700 + 700: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 702: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 704: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 706: 20 83 st Z, r18 + 708: cf eb ldi r28, 0xBF ; 191 + 70a: a5 e4 ldi r26, 0x45 ; 69 + 70c: b4 e0 ldi r27, 0x04 ; 4 + 70e: c1 50 subi r28, 0x01 ; 1 + 710: a0 40 sbci r26, 0x00 ; 0 + 712: b0 40 sbci r27, 0x00 ; 0 + 714: e1 f7 brne .-8 ; 0x70e + 716: 00 c0 rjmp .+0 ; 0x718 + 718: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 71a: 72 83 std Z+2, r23 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 71c: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 71e: 80 83 st Z, r24 + 720: cf eb ldi r28, 0xBF ; 191 + 722: a5 e4 ldi r26, 0x45 ; 69 + 724: b4 e0 ldi r27, 0x04 ; 4 + 726: c1 50 subi r28, 0x01 ; 1 + 728: a0 40 sbci r26, 0x00 ; 0 + 72a: b0 40 sbci r27, 0x00 ; 0 + 72c: e1 f7 brne .-8 ; 0x726 + 72e: 00 c0 rjmp .+0 ; 0x730 + 730: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 732: 62 83 std Z+2, r22 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 734: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 736: 80 83 st Z, r24 + 738: cf eb ldi r28, 0xBF ; 191 + 73a: a5 e4 ldi r26, 0x45 ; 69 + 73c: b4 e0 ldi r27, 0x04 ; 4 + 73e: c1 50 subi r28, 0x01 ; 1 + 740: a0 40 sbci r26, 0x00 ; 0 + 742: b0 40 sbci r27, 0x00 ; 0 + 744: e1 f7 brne .-8 ; 0x73e + 746: 00 c0 rjmp .+0 ; 0x748 + 748: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 74a: 52 83 std Z+2, r21 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 74c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 74e: 80 83 st Z, r24 + 750: cf eb ldi r28, 0xBF ; 191 + 752: a5 e4 ldi r26, 0x45 ; 69 + 754: b4 e0 ldi r27, 0x04 ; 4 + 756: c1 50 subi r28, 0x01 ; 1 + 758: a0 40 sbci r26, 0x00 ; 0 + 75a: b0 40 sbci r27, 0x00 ; 0 + 75c: e1 f7 brne .-8 ; 0x756 + 75e: 00 c0 rjmp .+0 ; 0x760 + 760: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 762: 42 83 std Z+2, r20 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 764: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 766: 80 83 st Z, r24 + 768: cf eb ldi r28, 0xBF ; 191 + 76a: a5 e4 ldi r26, 0x45 ; 69 + 76c: b4 e0 ldi r27, 0x04 ; 4 + 76e: c1 50 subi r28, 0x01 ; 1 + 770: a0 40 sbci r26, 0x00 ; 0 + 772: b0 40 sbci r27, 0x00 ; 0 + 774: e1 f7 brne .-8 ; 0x76e + 776: 00 c0 rjmp .+0 ; 0x778 + 778: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 77a: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 77c: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 77e: 90 83 st Z, r25 + 780: cf eb ldi r28, 0xBF ; 191 + 782: a5 e4 ldi r26, 0x45 ; 69 + 784: b4 e0 ldi r27, 0x04 ; 4 + 786: c1 50 subi r28, 0x01 ; 1 + 788: a0 40 sbci r26, 0x00 ; 0 + 78a: b0 40 sbci r27, 0x00 ; 0 + 78c: e1 f7 brne .-8 ; 0x786 + 78e: 00 c0 rjmp .+0 ; 0x790 + 790: 00 00 nop + 792: 31 50 subi r19, 0x01 ; 1 + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_D ); + _delay_ms(300); + + while ( u8Loop < 5U ) + 794: 09 f0 breq .+2 ; 0x798 + 796: 85 cf rjmp .-246 ; 0x6a2 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 798: e0 e0 ldi r30, 0x00 ; 0 + 79a: f1 e0 ldi r31, 0x01 ; 1 + 79c: 80 e1 ldi r24, 0x10 ; 16 + 79e: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 7a0: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 7a2: 80 83 st Z, r24 + while ( 1 ) + { + + + /* perform mode action */ + switch ( g_u8Mode ) + 7a4: 80 91 25 01 lds r24, 0x0125 ; 0x800125 + 7a8: 81 30 cpi r24, 0x01 ; 1 + 7aa: b1 f1 breq .+108 ; 0x818 + 7ac: 18 f0 brcs .+6 ; 0x7b4 + 7ae: 82 30 cpi r24, 0x02 ; 2 + 7b0: c1 f1 breq .+112 ; 0x822 + 7b2: fa cf rjmp .-12 ; 0x7a8 + { + case MODE_MEASURE: + (void) s_u8DS18B20_Reset(); + 7b4: de de rcall .-580 ; 0x572 + s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + 7b6: 8c ec ldi r24, 0xCC ; 204 + 7b8: 05 df rcall .-502 ; 0x5c4 + s_vDS18B20_WriteByte( DS18B20_CMD_CONVERTTEMP ); + 7ba: 84 e4 ldi r24, 0x44 ; 68 + 7bc: 03 df rcall .-506 ; 0x5c4 + while ( !s_u8DS18B20_ReadBit() ); + 7be: 0f df rcall .-482 ; 0x5de + 7c0: 88 23 and r24, r24 + 7c2: e9 f3 breq .-6 ; 0x7be + (void) s_u8DS18B20_Reset(); + 7c4: d6 de rcall .-596 ; 0x572 + s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + 7c6: 8c ec ldi r24, 0xCC ; 204 + 7c8: fd de rcall .-518 ; 0x5c4 + s_vDS18B20_WriteByte( DS18B20_CMD_RSCRATCHPAD ); + 7ca: 8e eb ldi r24, 0xBE ; 190 + 7cc: fb de rcall .-522 ; 0x5c4 + u8TempLo = s_u8DS18B20_ReadByte(); + 7ce: 1d df rcall .-454 ; 0x60a + 7d0: c8 2f mov r28, r24 + u8TempHi = s_u8DS18B20_ReadByte(); + 7d2: 1b df rcall .-458 ; 0x60a + f32Temperature = ((u8TempHi << 8) + u8TempLo) * 0.0625; + s_vSetValue( (uint8_t) f32Temperature, SYM_DEG_CELCIUS ); + 7d4: 68 2f mov r22, r24 + 7d6: 70 e0 ldi r23, 0x00 ; 0 + 7d8: 76 2f mov r23, r22 + 7da: 66 27 eor r22, r22 + 7dc: 6c 0f add r22, r28 + 7de: 71 1d adc r23, r1 + 7e0: 07 2e mov r0, r23 + 7e2: 00 0c add r0, r0 + 7e4: 88 0b sbc r24, r24 + 7e6: 99 0b sbc r25, r25 + 7e8: 4f d0 rcall .+158 ; 0x888 <__floatsisf> + 7ea: 20 e0 ldi r18, 0x00 ; 0 + 7ec: 30 e0 ldi r19, 0x00 ; 0 + 7ee: 40 e8 ldi r20, 0x80 ; 128 + 7f0: 5d e3 ldi r21, 0x3D ; 61 + 7f2: ae d0 rcall .+348 ; 0x950 <__mulsf3> + 7f4: 1b d0 rcall .+54 ; 0x82c <__fixunssfsi> + 7f6: 86 2f mov r24, r22 + 7f8: 6e e0 ldi r22, 0x0E ; 14 + 7fa: 50 dc rcall .-1888 ; 0x9c + if ( g_u8Mode == MODE_MEASURE ) + 7fc: 80 91 25 01 lds r24, 0x0125 ; 0x800125 + 800: 81 11 cpse r24, r1 + 802: d0 cf rjmp .-96 ; 0x7a4 + 804: cf e7 ldi r28, 0x7F ; 127 + 806: 24 e8 ldi r18, 0x84 ; 132 + 808: 3e e1 ldi r19, 0x1E ; 30 + 80a: c1 50 subi r28, 0x01 ; 1 + 80c: 20 40 sbci r18, 0x00 ; 0 + 80e: 30 40 sbci r19, 0x00 ; 0 + 810: e1 f7 brne .-8 ; 0x80a + 812: 00 c0 rjmp .+0 ; 0x814 + 814: 00 00 nop + 816: c6 cf rjmp .-116 ; 0x7a4 + { + _delay_ms(500); + } + break; + case MODE_ANIMATION_1: + s_vShowAnim(g_u8Mode); + 818: 81 e0 ldi r24, 0x01 ; 1 + 81a: c5 dc rcall .-1654 ; 0x1a6 + g_u8Mode = MODE_MEASURE; + 81c: 10 92 25 01 sts 0x0125, r1 ; 0x800125 + break; + 820: c1 cf rjmp .-126 ; 0x7a4 + case MODE_ANIMATION_2: + s_vShowAnim(g_u8Mode); + 822: 82 e0 ldi r24, 0x02 ; 2 + 824: c0 dc rcall .-1664 ; 0x1a6 + g_u8Mode = MODE_MEASURE; + 826: 10 92 25 01 sts 0x0125, r1 ; 0x800125 + break; + 82a: bc cf rjmp .-136 ; 0x7a4 + +0000082c <__fixunssfsi>: + 82c: 70 d0 rcall .+224 ; 0x90e <__fp_splitA> + 82e: 88 f0 brcs .+34 ; 0x852 <__fixunssfsi+0x26> + 830: 9f 57 subi r25, 0x7F ; 127 + 832: 90 f0 brcs .+36 ; 0x858 <__fixunssfsi+0x2c> + 834: b9 2f mov r27, r25 + 836: 99 27 eor r25, r25 + 838: b7 51 subi r27, 0x17 ; 23 + 83a: a0 f0 brcs .+40 ; 0x864 <__fixunssfsi+0x38> + 83c: d1 f0 breq .+52 ; 0x872 <__fixunssfsi+0x46> + 83e: 66 0f add r22, r22 + 840: 77 1f adc r23, r23 + 842: 88 1f adc r24, r24 + 844: 99 1f adc r25, r25 + 846: 1a f0 brmi .+6 ; 0x84e <__fixunssfsi+0x22> + 848: ba 95 dec r27 + 84a: c9 f7 brne .-14 ; 0x83e <__fixunssfsi+0x12> + 84c: 12 c0 rjmp .+36 ; 0x872 <__fixunssfsi+0x46> + 84e: b1 30 cpi r27, 0x01 ; 1 + 850: 81 f0 breq .+32 ; 0x872 <__fixunssfsi+0x46> + 852: 77 d0 rcall .+238 ; 0x942 <__fp_zero> + 854: b1 e0 ldi r27, 0x01 ; 1 + 856: 08 95 ret + 858: 74 c0 rjmp .+232 ; 0x942 <__fp_zero> + 85a: 67 2f mov r22, r23 + 85c: 78 2f mov r23, r24 + 85e: 88 27 eor r24, r24 + 860: b8 5f subi r27, 0xF8 ; 248 + 862: 39 f0 breq .+14 ; 0x872 <__fixunssfsi+0x46> + 864: b9 3f cpi r27, 0xF9 ; 249 + 866: cc f3 brlt .-14 ; 0x85a <__fixunssfsi+0x2e> + 868: 86 95 lsr r24 + 86a: 77 95 ror r23 + 86c: 67 95 ror r22 + 86e: b3 95 inc r27 + 870: d9 f7 brne .-10 ; 0x868 <__fixunssfsi+0x3c> + 872: 3e f4 brtc .+14 ; 0x882 <__fixunssfsi+0x56> + 874: 90 95 com r25 + 876: 80 95 com r24 + 878: 70 95 com r23 + 87a: 61 95 neg r22 + 87c: 7f 4f sbci r23, 0xFF ; 255 + 87e: 8f 4f sbci r24, 0xFF ; 255 + 880: 9f 4f sbci r25, 0xFF ; 255 + 882: 08 95 ret + +00000884 <__floatunsisf>: + 884: e8 94 clt + 886: 09 c0 rjmp .+18 ; 0x89a <__floatsisf+0x12> + +00000888 <__floatsisf>: + 888: 97 fb bst r25, 7 + 88a: 3e f4 brtc .+14 ; 0x89a <__floatsisf+0x12> + 88c: 90 95 com r25 + 88e: 80 95 com r24 + 890: 70 95 com r23 + 892: 61 95 neg r22 + 894: 7f 4f sbci r23, 0xFF ; 255 + 896: 8f 4f sbci r24, 0xFF ; 255 + 898: 9f 4f sbci r25, 0xFF ; 255 + 89a: 99 23 and r25, r25 + 89c: a9 f0 breq .+42 ; 0x8c8 <__floatsisf+0x40> + 89e: f9 2f mov r31, r25 + 8a0: 96 e9 ldi r25, 0x96 ; 150 + 8a2: bb 27 eor r27, r27 + 8a4: 93 95 inc r25 + 8a6: f6 95 lsr r31 + 8a8: 87 95 ror r24 + 8aa: 77 95 ror r23 + 8ac: 67 95 ror r22 + 8ae: b7 95 ror r27 + 8b0: f1 11 cpse r31, r1 + 8b2: f8 cf rjmp .-16 ; 0x8a4 <__floatsisf+0x1c> + 8b4: fa f4 brpl .+62 ; 0x8f4 <__floatsisf+0x6c> + 8b6: bb 0f add r27, r27 + 8b8: 11 f4 brne .+4 ; 0x8be <__floatsisf+0x36> + 8ba: 60 ff sbrs r22, 0 + 8bc: 1b c0 rjmp .+54 ; 0x8f4 <__floatsisf+0x6c> + 8be: 6f 5f subi r22, 0xFF ; 255 + 8c0: 7f 4f sbci r23, 0xFF ; 255 + 8c2: 8f 4f sbci r24, 0xFF ; 255 + 8c4: 9f 4f sbci r25, 0xFF ; 255 + 8c6: 16 c0 rjmp .+44 ; 0x8f4 <__floatsisf+0x6c> + 8c8: 88 23 and r24, r24 + 8ca: 11 f0 breq .+4 ; 0x8d0 <__floatsisf+0x48> + 8cc: 96 e9 ldi r25, 0x96 ; 150 + 8ce: 11 c0 rjmp .+34 ; 0x8f2 <__floatsisf+0x6a> + 8d0: 77 23 and r23, r23 + 8d2: 21 f0 breq .+8 ; 0x8dc <__floatsisf+0x54> + 8d4: 9e e8 ldi r25, 0x8E ; 142 + 8d6: 87 2f mov r24, r23 + 8d8: 76 2f mov r23, r22 + 8da: 05 c0 rjmp .+10 ; 0x8e6 <__floatsisf+0x5e> + 8dc: 66 23 and r22, r22 + 8de: 71 f0 breq .+28 ; 0x8fc <__floatsisf+0x74> + 8e0: 96 e8 ldi r25, 0x86 ; 134 + 8e2: 86 2f mov r24, r22 + 8e4: 70 e0 ldi r23, 0x00 ; 0 + 8e6: 60 e0 ldi r22, 0x00 ; 0 + 8e8: 2a f0 brmi .+10 ; 0x8f4 <__floatsisf+0x6c> + 8ea: 9a 95 dec r25 + 8ec: 66 0f add r22, r22 + 8ee: 77 1f adc r23, r23 + 8f0: 88 1f adc r24, r24 + 8f2: da f7 brpl .-10 ; 0x8ea <__floatsisf+0x62> + 8f4: 88 0f add r24, r24 + 8f6: 96 95 lsr r25 + 8f8: 87 95 ror r24 + 8fa: 97 f9 bld r25, 7 + 8fc: 08 95 ret + +000008fe <__fp_split3>: + 8fe: 57 fd sbrc r21, 7 + 900: 90 58 subi r25, 0x80 ; 128 + 902: 44 0f add r20, r20 + 904: 55 1f adc r21, r21 + 906: 59 f0 breq .+22 ; 0x91e <__fp_splitA+0x10> + 908: 5f 3f cpi r21, 0xFF ; 255 + 90a: 71 f0 breq .+28 ; 0x928 <__fp_splitA+0x1a> + 90c: 47 95 ror r20 + +0000090e <__fp_splitA>: + 90e: 88 0f add r24, r24 + 910: 97 fb bst r25, 7 + 912: 99 1f adc r25, r25 + 914: 61 f0 breq .+24 ; 0x92e <__fp_splitA+0x20> + 916: 9f 3f cpi r25, 0xFF ; 255 + 918: 79 f0 breq .+30 ; 0x938 <__fp_splitA+0x2a> + 91a: 87 95 ror r24 + 91c: 08 95 ret + 91e: 12 16 cp r1, r18 + 920: 13 06 cpc r1, r19 + 922: 14 06 cpc r1, r20 + 924: 55 1f adc r21, r21 + 926: f2 cf rjmp .-28 ; 0x90c <__fp_split3+0xe> + 928: 46 95 lsr r20 + 92a: f1 df rcall .-30 ; 0x90e <__fp_splitA> + 92c: 08 c0 rjmp .+16 ; 0x93e <__fp_splitA+0x30> + 92e: 16 16 cp r1, r22 + 930: 17 06 cpc r1, r23 + 932: 18 06 cpc r1, r24 + 934: 99 1f adc r25, r25 + 936: f1 cf rjmp .-30 ; 0x91a <__fp_splitA+0xc> + 938: 86 95 lsr r24 + 93a: 71 05 cpc r23, r1 + 93c: 61 05 cpc r22, r1 + 93e: 08 94 sec + 940: 08 95 ret + +00000942 <__fp_zero>: + 942: e8 94 clt + +00000944 <__fp_szero>: + 944: bb 27 eor r27, r27 + 946: 66 27 eor r22, r22 + 948: 77 27 eor r23, r23 + 94a: cb 01 movw r24, r22 + 94c: 97 f9 bld r25, 7 + 94e: 08 95 ret + +00000950 <__mulsf3>: + 950: 0b d0 rcall .+22 ; 0x968 <__mulsf3x> + 952: 78 c0 rjmp .+240 ; 0xa44 <__fp_round> + 954: 69 d0 rcall .+210 ; 0xa28 <__fp_pscA> + 956: 28 f0 brcs .+10 ; 0x962 <__mulsf3+0x12> + 958: 6e d0 rcall .+220 ; 0xa36 <__fp_pscB> + 95a: 18 f0 brcs .+6 ; 0x962 <__mulsf3+0x12> + 95c: 95 23 and r25, r21 + 95e: 09 f0 breq .+2 ; 0x962 <__mulsf3+0x12> + 960: 5a c0 rjmp .+180 ; 0xa16 <__fp_inf> + 962: 5f c0 rjmp .+190 ; 0xa22 <__fp_nan> + 964: 11 24 eor r1, r1 + 966: ee cf rjmp .-36 ; 0x944 <__fp_szero> + +00000968 <__mulsf3x>: + 968: ca df rcall .-108 ; 0x8fe <__fp_split3> + 96a: a0 f3 brcs .-24 ; 0x954 <__mulsf3+0x4> + +0000096c <__mulsf3_pse>: + 96c: 95 9f mul r25, r21 + 96e: d1 f3 breq .-12 ; 0x964 <__mulsf3+0x14> + 970: 95 0f add r25, r21 + 972: 50 e0 ldi r21, 0x00 ; 0 + 974: 55 1f adc r21, r21 + 976: 62 9f mul r22, r18 + 978: f0 01 movw r30, r0 + 97a: 72 9f mul r23, r18 + 97c: bb 27 eor r27, r27 + 97e: f0 0d add r31, r0 + 980: b1 1d adc r27, r1 + 982: 63 9f mul r22, r19 + 984: aa 27 eor r26, r26 + 986: f0 0d add r31, r0 + 988: b1 1d adc r27, r1 + 98a: aa 1f adc r26, r26 + 98c: 64 9f mul r22, r20 + 98e: 66 27 eor r22, r22 + 990: b0 0d add r27, r0 + 992: a1 1d adc r26, r1 + 994: 66 1f adc r22, r22 + 996: 82 9f mul r24, r18 + 998: 22 27 eor r18, r18 + 99a: b0 0d add r27, r0 + 99c: a1 1d adc r26, r1 + 99e: 62 1f adc r22, r18 + 9a0: 73 9f mul r23, r19 + 9a2: b0 0d add r27, r0 + 9a4: a1 1d adc r26, r1 + 9a6: 62 1f adc r22, r18 + 9a8: 83 9f mul r24, r19 + 9aa: a0 0d add r26, r0 + 9ac: 61 1d adc r22, r1 + 9ae: 22 1f adc r18, r18 + 9b0: 74 9f mul r23, r20 + 9b2: 33 27 eor r19, r19 + 9b4: a0 0d add r26, r0 + 9b6: 61 1d adc r22, r1 + 9b8: 23 1f adc r18, r19 + 9ba: 84 9f mul r24, r20 + 9bc: 60 0d add r22, r0 + 9be: 21 1d adc r18, r1 + 9c0: 82 2f mov r24, r18 + 9c2: 76 2f mov r23, r22 + 9c4: 6a 2f mov r22, r26 + 9c6: 11 24 eor r1, r1 + 9c8: 9f 57 subi r25, 0x7F ; 127 + 9ca: 50 40 sbci r21, 0x00 ; 0 + 9cc: 8a f0 brmi .+34 ; 0x9f0 <__mulsf3_pse+0x84> + 9ce: e1 f0 breq .+56 ; 0xa08 <__mulsf3_pse+0x9c> + 9d0: 88 23 and r24, r24 + 9d2: 4a f0 brmi .+18 ; 0x9e6 <__mulsf3_pse+0x7a> + 9d4: ee 0f add r30, r30 + 9d6: ff 1f adc r31, r31 + 9d8: bb 1f adc r27, r27 + 9da: 66 1f adc r22, r22 + 9dc: 77 1f adc r23, r23 + 9de: 88 1f adc r24, r24 + 9e0: 91 50 subi r25, 0x01 ; 1 + 9e2: 50 40 sbci r21, 0x00 ; 0 + 9e4: a9 f7 brne .-22 ; 0x9d0 <__mulsf3_pse+0x64> + 9e6: 9e 3f cpi r25, 0xFE ; 254 + 9e8: 51 05 cpc r21, r1 + 9ea: 70 f0 brcs .+28 ; 0xa08 <__mulsf3_pse+0x9c> + 9ec: 14 c0 rjmp .+40 ; 0xa16 <__fp_inf> + 9ee: aa cf rjmp .-172 ; 0x944 <__fp_szero> + 9f0: 5f 3f cpi r21, 0xFF ; 255 + 9f2: ec f3 brlt .-6 ; 0x9ee <__mulsf3_pse+0x82> + 9f4: 98 3e cpi r25, 0xE8 ; 232 + 9f6: dc f3 brlt .-10 ; 0x9ee <__mulsf3_pse+0x82> + 9f8: 86 95 lsr r24 + 9fa: 77 95 ror r23 + 9fc: 67 95 ror r22 + 9fe: b7 95 ror r27 + a00: f7 95 ror r31 + a02: e7 95 ror r30 + a04: 9f 5f subi r25, 0xFF ; 255 + a06: c1 f7 brne .-16 ; 0x9f8 <__mulsf3_pse+0x8c> + a08: fe 2b or r31, r30 + a0a: 88 0f add r24, r24 + a0c: 91 1d adc r25, r1 + a0e: 96 95 lsr r25 + a10: 87 95 ror r24 + a12: 97 f9 bld r25, 7 + a14: 08 95 ret + +00000a16 <__fp_inf>: + a16: 97 f9 bld r25, 7 + a18: 9f 67 ori r25, 0x7F ; 127 + a1a: 80 e8 ldi r24, 0x80 ; 128 + a1c: 70 e0 ldi r23, 0x00 ; 0 + a1e: 60 e0 ldi r22, 0x00 ; 0 + a20: 08 95 ret + +00000a22 <__fp_nan>: + a22: 9f ef ldi r25, 0xFF ; 255 + a24: 80 ec ldi r24, 0xC0 ; 192 + a26: 08 95 ret + +00000a28 <__fp_pscA>: + a28: 00 24 eor r0, r0 + a2a: 0a 94 dec r0 + a2c: 16 16 cp r1, r22 + a2e: 17 06 cpc r1, r23 + a30: 18 06 cpc r1, r24 + a32: 09 06 cpc r0, r25 + a34: 08 95 ret + +00000a36 <__fp_pscB>: + a36: 00 24 eor r0, r0 + a38: 0a 94 dec r0 + a3a: 12 16 cp r1, r18 + a3c: 13 06 cpc r1, r19 + a3e: 14 06 cpc r1, r20 + a40: 05 06 cpc r0, r21 + a42: 08 95 ret + +00000a44 <__fp_round>: + a44: 09 2e mov r0, r25 + a46: 03 94 inc r0 + a48: 00 0c add r0, r0 + a4a: 11 f4 brne .+4 ; 0xa50 <__fp_round+0xc> + a4c: 88 23 and r24, r24 + a4e: 52 f0 brmi .+20 ; 0xa64 <__fp_round+0x20> + a50: bb 0f add r27, r27 + a52: 40 f4 brcc .+16 ; 0xa64 <__fp_round+0x20> + a54: bf 2b or r27, r31 + a56: 11 f4 brne .+4 ; 0xa5c <__fp_round+0x18> + a58: 60 ff sbrs r22, 0 + a5a: 04 c0 rjmp .+8 ; 0xa64 <__fp_round+0x20> + a5c: 6f 5f subi r22, 0xFF ; 255 + a5e: 7f 4f sbci r23, 0xFF ; 255 + a60: 8f 4f sbci r24, 0xFF ; 255 + a62: 9f 4f sbci r25, 0xFF ; 255 + a64: 08 95 ret + +00000a66 <_exit>: + a66: f8 94 cli + +00000a68 <__stop_program>: + a68: ff cf rjmp .-2 ; 0xa68 <__stop_program> diff --git a/PoolClock/Debug/PoolClockWaterTemp.map b/PoolClock/Debug/PoolClockWaterTemp.map new file mode 100644 index 0000000..1b3861e --- /dev/null +++ b/PoolClock/Debug/PoolClockWaterTemp.map @@ -0,0 +1,593 @@ +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/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + main.o (__fixunssfsi) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + main.o (__floatsisf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) (__fp_splitA) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) (__fp_zero) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + main.o (__mulsf3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) (__mulsf3x) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_inf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_nan) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_pscA) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_pscB) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) (__fp_round) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text.s_vSetDisplayDigits + 0x00000000 0xc 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/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\libgcc.a(_clear_bss.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/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o +LOAD 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/avr4\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/avr4\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/avr4\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/avr4\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4\libatmega88pa.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 0xa6a + *(.vectors) + .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000034 . = ALIGN (0x2) + 0x00000034 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000034 0x0 linker stubs + *(.trampolines*) + 0x00000034 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000034 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000034 __ctors_start = . + *(.ctors) + 0x00000034 __ctors_end = . + 0x00000034 __dtors_start = . + *(.dtors) + 0x00000034 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000034 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000034 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000034 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + 0x00000040 __do_copy_data + .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + 0x00000056 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000066 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init9) + *(.text) + .text 0x0000006a 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x0000006a __vector_22 + 0x0000006a __vector_1 + 0x0000006a __vector_24 + 0x0000006a __vector_12 + 0x0000006a __bad_interrupt + 0x0000006a __vector_6 + 0x0000006a __vector_3 + 0x0000006a __vector_23 + 0x0000006a __vector_25 + 0x0000006a __vector_13 + 0x0000006a __vector_17 + 0x0000006a __vector_19 + 0x0000006a __vector_7 + 0x0000006a __vector_5 + 0x0000006a __vector_4 + 0x0000006a __vector_9 + 0x0000006a __vector_2 + 0x0000006a __vector_21 + 0x0000006a __vector_15 + 0x0000006a __vector_8 + 0x0000006a __vector_14 + 0x0000006a __vector_10 + 0x0000006a __vector_16 + 0x0000006a __vector_18 + 0x0000006a __vector_20 + 0x0000006c . = ALIGN (0x2) + *(.text.*) + .text.s_vInit 0x0000006c 0x30 main.o + 0x0000006c s_vInit + .text.s_vSetValue + 0x0000009c 0x26 main.o + 0x0000009c s_vSetValue + .text.s_vReadButtons + 0x000000c2 0x54 main.o + 0x000000c2 s_vReadButtons + .text.__vector_11 + 0x00000116 0x90 main.o + 0x00000116 __vector_11 + .text.s_vShowAnim + 0x000001a6 0x3cc main.o + 0x000001a6 s_vShowAnim + .text.s_u8DS18B20_Reset + 0x00000572 0x30 main.o + 0x00000572 s_u8DS18B20_Reset + .text.s_vDS18B20_WriteBit + 0x000005a2 0x22 main.o + 0x000005a2 s_vDS18B20_WriteBit + .text.s_vDS18B20_WriteByte + 0x000005c4 0x1a main.o + 0x000005c4 s_vDS18B20_WriteByte + .text.s_u8DS18B20_ReadBit + 0x000005de 0x2c main.o + 0x000005de s_u8DS18B20_ReadBit + .text.s_u8DS18B20_ReadByte + 0x0000060a 0x22 main.o + 0x0000060a s_u8DS18B20_ReadByte + .text.main 0x0000062c 0x200 main.o + 0x0000062c main + .text.avr-libc.fplib + 0x0000082c 0x58 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + 0x0000082c __fixunssfsi + .text.avr-libc.fplib + 0x00000884 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + 0x00000884 __floatunsisf + 0x00000888 __floatsisf + .text.avr-libc.fplib + 0x000008fe 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + 0x000008fe __fp_split3 + 0x0000090e __fp_splitA + .text.avr-libc.fplib + 0x00000942 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + 0x00000942 __fp_zero + 0x00000944 __fp_szero + .text.avr-libc.fplib + 0x00000950 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + 0x00000950 __mulsf3 + .text.avr-libc.fplib + 0x00000954 0xc2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + 0x00000968 __mulsf3x + 0x0000096c __mulsf3_pse + .text.avr-libc.fplib + 0x00000a16 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + 0x00000a16 __fp_inf + .text.avr-libc.fplib + 0x00000a22 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + 0x00000a22 __fp_nan + .text.avr-libc.fplib + 0x00000a28 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + 0x00000a28 __fp_pscA + .text.avr-libc.fplib + 0x00000a36 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + 0x00000a36 __fp_pscB + .text.avr-libc.fplib + 0x00000a44 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + 0x00000a44 __fp_round + 0x00000a66 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000a66 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + 0x00000a66 _exit + 0x00000a66 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000a66 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x00000a6a _etext = . + +.data 0x00800100 0x24 load address 0x00000a6a + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.g_au8Digits + 0x00800100 0x3 main.o + 0x00800100 g_au8Digits + *(.rodata) + *(.rodata*) + .rodata.g_au8Symbols + 0x00800103 0x20 main.o + *(.gnu.linkonce.d*) + 0x00800124 . = ALIGN (0x2) + *fill* 0x00800123 0x1 + 0x00800124 _edata = . + 0x00800124 PROVIDE (__data_end, .) + +.bss 0x00800124 0x4 + 0x00800124 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.g_u8ISRDigitSelect + 0x00800124 0x1 main.o + 0x00800124 g_u8ISRDigitSelect + .bss.g_u8Mode 0x00800125 0x1 main.o + .bss.g_u8ButtonCountBot + 0x00800126 0x1 main.o + .bss.g_u8ButtonCountTop + 0x00800127 0x1 main.o + *(COMMON) + 0x00800128 PROVIDE (__bss_end, .) + 0x00000a6a __data_load_start = LOADADDR (.data) + 0x00000a8e __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800128 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800128 _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 main.o + 0x31 (size before relaxing) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x78 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x78 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x22e0 + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_info 0x000005f4 0x1cec main.o + +.debug_abbrev 0x00000000 0x861 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_abbrev 0x000005a2 0x2bf main.o + +.debug_line 0x00000000 0xba9 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_line 0x00000133 0xa76 main.o + +.debug_frame 0x00000000 0x134 + *(.debug_frame) + .debug_frame 0x00000000 0x134 main.o + +.debug_str 0x00000000 0x535 + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_str 0x00000208 0x32d main.o + 0x361 (size before relaxing) + +.debug_loc 0x00000000 0x1d8e + *(.debug_loc) + .debug_loc 0x00000000 0x1d8e 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 0xc8 + *(.debug_ranges) + .debug_ranges 0x00000000 0xc8 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(PoolClockWaterTemp.elf elf32-avr) +LOAD linker stubs diff --git a/PoolClock/Debug/PoolClockWaterTemp.srec b/PoolClock/Debug/PoolClockWaterTemp.srec new file mode 100644 index 0000000..dbca25f --- /dev/null +++ b/PoolClock/Debug/PoolClockWaterTemp.srec @@ -0,0 +1,172 @@ +S01A0000506F6F6C436C6F636B576174657254656D702E73726563EB +S113000019C033C032C031C030C02FC02EC02DC083 +S11300102CC02BC02AC07FC028C027C026C025C042 +S113002024C023C022C021C020C01FC01EC01DC0C8 +S11300301CC01BC011241FBECFEFD4E0DEBFCDBF58 +S113004011E0A0E0B1E0EAE6FAE002C005900D920A +S1130050A432B107D9F721E0A4E2B1E001C01D92B6 +S1130060A832B207E1F7E2D2FEC4CACF8FEF8AB951 +S113007087E084B980E388B9109280008AE0809395 +S1130080810084EC99E09093890080938800EFE6E6 +S1130090F0E0808182608083789408959DEC899F4C +S11300A0912D1124969596959695E0E0F1E0928332 +S11300B0990F292F220F220F920F891B81836083AE +S11300C00895349906C0809127018F5F809327019A +S11300D002C01092270135990AC0809126018F5FD2 +S11300E08093260190912701933368F006C0109203 +S11300F0260180912701833368F01092270181E063 +S1130100809325010895833328F01092260182E01C +S11301108093250108951F920F920FB60F92112418 +S11301202F933F934F935F936F937F938F939F93FB +S1130130AF93BF93EF93FF9315B81BB88DE08A95E7 +S1130140F1F7000081E090E00090240102C0880FE4 +S1130150991F0A94E2F785B9E0912401F0E0E05098 +S1130160FF4FE081F0E0ED5FFE4F80818BB980911D +S113017024018F5F833018F48093240102C010920D +S113018024019FDFFF91EF91BF91AF919F918F91D8 +S11301907F916F915F914F913F912F910F900FBE7F +S11301A00F901F901895E0E0F1E090E19283918325 +S11301B090832FEB35E444E0215030404040E1F798 +S11301C000C00000813021F0823009F4E2C0C1C1D6 +S11301D0E0E0F1E022E1228390E1918390835FEB00 +S11301E065E474E0515060407040E1F700C00000E5 +S11301F03CE03283918390838FEBA5E444E081500B +S1130200A0404040E1F700C0000088E08283918371 +S113021090835FEB65E474E0515060407040E1F717 +S113022000C00000828321839083AFEB45E454E057 +S1130230A15040405040E1F700C000008283318368 +S113024090836FEB75E4A4E061507040A040E1F747 +S113025000C000008283818390834FEB55E464E007 +S1130260415050406040E1F700C000008283818328 +S113027041E040837FEBA5E454E07150A04050403E +S1130280E1F700C000008283818353E050836FEB69 +S113029075E4A4E061507040A040E1F700C00000A4 +S11302A08283818380836FEB75E4A4E061507040A6 +S11302B0A040E1F700C000008283818380836FEB5C +S11302C075E4A4E061507040A040E1F700C0000074 +S11302D08283818350835FEB65E474E05150604016 +S11302E07040E1F700C00000828381834083AFEB5C +S11302F045E454E0A15040405040E1F700C0000004 +S11303008283818390836FEB75E4A4E06150704035 +S1130310A040E1F700C000008283318390834FEB5B +S113032055E464E0415050406040E1F700C00000F3 +S11303308283218390837FEBA5E444E07150A04045 +S11303404040E1F700C000008283918390835FEB1B +S113035065E474E0515060407040E1F700C0000073 +S11303603283918390838FEBA5E434E08150A040E5 +S11303703040E1F700C000002283918390834FEB6B +S113038055E464E0415050406040E1F700C0000093 +S1130390E0C0E0E0F1E022E1228380E18183808318 +S11303A07FEB95E4A4E071509040A040E1F700C0D9 +S11303B000003CE03283818380834FEB55E464E0AA +S11303C0415050406040E1F700C0000098E0928343 +S11303D0818380837FEBA5E444E07150A0404040DA +S11303E0E1F700C000009283218380835FEB65E422 +S11303F074E0515060407040E1F700C00000928307 +S113040031838083AFEB45E454E0A1504040504039 +S1130410E1F700C000009283918380836FEB75E461 +S1130420A4E061507040A040E1F700C00000928356 +S1130430918341E040835FEB65E474E05150604098 +S11304407040E1F700C000009283918353E0508331 +S1130450AFEB65E474E0A15060407040E1F700C088 +S11304600000928391839083AFEB65E474E0A15024 +S113047060407040E1F700C0000052839183908394 +S1130480AFEB65E474E0A15060407040E1F700C058 +S11304900000428391839083AFEB65E474E0A15044 +S11304A060407040E1F700C0000082839183908334 +S11304B0AFEB65E474E0A15060407040E1F700C028 +S11304C00000828351839083AFEB55E464E0A15034 +S11304D050406040E1F700C0000082834183908374 +S11304E07FEBA5E444E07150A0404040E1F700C038 +S11304F000008283818390835FEB65E474E0515054 +S113050060407040E1F700C0000082838183308343 +S11305109FEBA5E434E09150A0403040E1F700C0E7 +S113052000008283818320834FEB55E464E04150D3 +S113053050406040E1F700C00000828381838083E3 +S11305407FEB85E494E0715080409040E1F700C077 +S11305500000E0E0F1E080E1828381838083AFEBFF +S113056025E434E0A15020403040E1F700C0000011 +S1130570089543983B9A8FE599E00197F1F700C0FD +S113058000003B98EBE2F1E03197F1F700C0000086 +S113059086B1E3E3F8E03197F1F700C0000088701A +S11305A0089543983B9A96E09A95F1F700C08130FC +S11305B009F43B988BE291E00197F1F700C0000049 +S11305C03B980895CF93DF93D82FC8E08D2F817087 +S11305D0E8DFD695C150D1F7DF91CF9108954398C4 +S11305E03B9A86E08A95F1F700C03B98EDE5EA95E1 +S11305F0F1F7000086B1E0EEF0E03197F1F700C0CA +S1130600000083FB882780F90895CF93DF93D8E017 +S1130610C0E0E5DF20E8829FC0011124C695C82B05 +S1130620D150B9F78C2FDF91CF9108951FDDE0E011 +S1130630F1E080E1828381838083AFE4B3EC11979E +S1130640F1F700C0000093E1928381838083BFE7C8 +S1130650CFE422E1B150C0402040E1F700C00000E7 +S11306609283918380833FE74FE482E1315040409D +S11306708040E1F700C000009283918386E180838B +S11306809FE7AFE4B2E19150A040B040E1F700C071 +S1130690000035E080E123E17CE16DE15EE196E17B +S11306A04FE1828321837083CFEBA5E4B4E0C15092 +S11306B0A040B040E1F700C00000828381836083E2 +S11306C0CFEBA5E4B4E0C150A040B040E1F700C0D6 +S11306D00000828381835083CFEBA5E4B4E0C15052 +S11306E0A040B040E1F700C00000828391834083C2 +S11306F0CFEBA5E4B4E0C150A040B040E1F700C0A6 +S11307000000928391832083CFEBA5E4B4E0C15031 +S1130710A040B040E1F700C0000072839183808361 +S1130720CFEBA5E4B4E0C150A040B040E1F700C075 +S11307300000628381838083CFEBA5E4B4E0C150E1 +S1130740A040B040E1F700C0000052838183808361 +S1130750CFEBA5E4B4E0C150A040B040E1F700C045 +S11307600000428321838083CFEBA5E4B4E0C15031 +S1130770A040B040E1F700C00000228321839083B1 +S1130780CFEBA5E4B4E0C150A040B040E1F700C015 +S11307900000315009F085CFE0E0F1E080E1828390 +S11307A081838083809125018130B1F118F08230FA +S11307B0C1F1FACFDEDE8CEC05DF84E403DF0FDF6A +S11307C08823E9F3D6DE8CECFDDE8EEBFBDE1DDF49 +S11307D0C82F1BDF682F70E0762F66276C0F711D02 +S11307E0072E000C880B990B4FD020E030E040E836 +S11307F05DE3AED01BD0862F6EE050DC80912501E6 +S11308008111D0CFCFE724E83EE1C15020403040F1 +S1130810E1F700C00000C6CF81E0C5DC10922501DD +S1130820C1CF82E0C0DC10922501BCCF70D088F02B +S11308309F5790F0B92F9927B751A0F0D1F0660FC8 +S1130840771F881F991F1AF0BA95C9F712C0B130E3 +S113085081F077D0B1E0089574C0672F782F88278E +S1130860B85F39F0B93FCCF3869577956795B39522 +S1130870D9F73EF490958095709561957F4F8F4F91 +S11308809F4F0895E89409C097FB3EF49095809596 +S1130890709561957F4F8F4F9F4F9923A9F0F92F42 +S11308A096E9BB279395F695879577956795B795C0 +S11308B0F111F8CFFAF4BB0F11F460FF1BC06F5FA6 +S11308C07F4F8F4F9F4F16C0882311F096E911C0B8 +S11308D0772321F09EE8872F762F05C0662371F0D9 +S11308E096E8862F70E060E02AF09A95660F771FED +S11308F0881FDAF7880F9695879597F9089557FD1D +S11309009058440F551F59F05F3F71F04795880F79 +S113091097FB991F61F09F3F79F087950895121610 +S113092013061406551FF2CF4695F1DF08C01616BC +S113093017061806991FF1CF86957105610508946D +S11309400895E894BB2766277727CB0197F9089584 +S11309500BD078C069D028F06ED018F0952309F038 +S11309605AC05FC01124EECFCADFA0F3959FD1F324 +S1130970950F50E0551F629FF001729FBB27F00D49 +S1130980B11D639FAA27F00DB11DAA1F649F66279E +S1130990B00DA11D661F829F2227B00DA11D621FED +S11309A0739FB00DA11D621F839FA00D611D221FA7 +S11309B0749F3327A00D611D231F849F600D211D8B +S11309C0822F762F6A2F11249F5750408AF0E1F02E +S11309D088234AF0EE0FFF1FBB1F661F771F881F77 +S11309E091505040A9F79E3F510570F014C0AACF12 +S11309F05F3FECF3983EDCF3869577956795B79562 +S1130A00F795E7959F5FC1F7FE2B880F911D96958B +S1130A10879597F9089597F99F6780E870E060E0FB +S1130A2008959FEF80EC089500240A941616170683 +S1130A3018060906089500240A94121613061406CB +S1130A4005060895092E0394000C11F4882352F02E +S1130A50BB0F40F4BF2B11F460FF04C06F5F7F4FE6 +S10D0A608F4F9F4F0895F894FFCFC5 +S1130A6A101010FC24BAAE66CEDEA4FEEE161EDA10 +S1130A7A12ADF3000250802004081040A02C0C1878 +S1070A8A58D0C0007C +S9030000FC diff --git a/PoolClock/Debug/main.d b/PoolClock/Debug/main.d new file mode 100644 index 0000000..58005fb --- /dev/null +++ b/PoolClock/Debug/main.d @@ -0,0 +1,49 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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 \ + 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 + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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: + +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: diff --git a/PoolClock/Debug/main.o b/PoolClock/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..02f473446db28f878da856f091c43e08003decd7 GIT binary patch literal 52232 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 NKOlG31i?0g{||Q} + + + + + + Device + Startup + + + Atmel + 1.2.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom88pa.h + + header + C + PWoJcvZZTeGBgzC7OP4j4w== + + include/avr/iom88pa.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.c + template + source + C Exe + gxHbyEN2bS28BbjX5Z61rw== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa + + libraryPrefix + GCC + + + gcc/dev/atmega88pa + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/Atmel.ATmega_DFP.pdsc + 1.2.132 + true + ATmega88PA + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/PoolClock/PoolClockWaterTemp.cproj b/PoolClock/PoolClockWaterTemp.cproj new file mode 100644 index 0000000..786825a --- /dev/null +++ b/PoolClock/PoolClockWaterTemp.cproj @@ -0,0 +1,139 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATmega88PA + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + PoolClock + PoolClockWaterTemp + PoolClock + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 2 + + + + + + + + + + + + + com.atmel.avrdbg.tool.simulator + + 0x1E930F + + + + + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Default (-Wa,-g) + + + + + + compile + + + + \ No newline at end of file diff --git a/PoolClock/main - Kopie.c b/PoolClock/main - Kopie.c new file mode 100644 index 0000000..d08996c --- /dev/null +++ b/PoolClock/main - Kopie.c @@ -0,0 +1,266 @@ +#include +#include +#include +#define F_CPU 20000000UL //20 MHz +#include + +/* 7-Segment display: */ +#define NUM_DIGITS 3U //3 Digits +#define DIGIT_TENS 2U //left +#define DIGIT_ONES 1U //middle +#define DIGIT_UNIT 0U //right +#define SELECT_DIGIT(digit) (1U << digit) + +#define TEMP_MIN 0U +#define TEMP_MAX 50U + +#define BUTTON_THRESHOLD 50U //software debounce + +/* Symbol indexes: */ +#define SYM_n 10U +#define SYM_o 11U +#define SYM_E 12U +#define SYM_R 13U +#define SYM_DEG_CELCIUS 14U +#define SYM_P_P 15U +#define SYM_OFF 16U +#define SYM_DASH 17U + +/* + 7-Segment Layout: + + A + F B + G + E C + D P + + Pin 7 6 5 4 3 2 1 0 + Segment A F B E D C G P +*/ +static uint8_t g_au8Symbols[18U] = +{ +/* 00 */ 0b11111100U, //0 (ABCDEF) +/* 01 */ 0b00100100U, //1 (BC) +/* 02 */ 0b10111010U, //2 (ABDEG) +/* 03 */ 0b10101110U, //3 (ABCDG) +/* 04 */ 0b01100110U, //4 (BCFG) +/* 05 */ 0b11001110U, //5 (ACDFG) +/* 06 */ 0b11011110U, //6 (ACDEFG) +/* 07 */ 0b10100100U, //7 (ABC) +/* 08 */ 0b11111110U, //8 (ABCDEFG) +/* 09 */ 0b11101110U, //9 (ABCDFG) +/* 10 */ 0b00010110U, //n (CEG) SYM_n +/* 11 */ 0b00011110U, //o (CDEG) SYM_o +/* 12 */ 0b11011010U, //E (ADEFG) SYM_E +/* 13 */ 0b00010010U, //r (EG) SYM_r +/* 14 */ 0b10101101U, //degC (ABCDP) SYM_DEG_CELCIUS +/* 15 */ 0b11110011U, //P. (ABEFGP) SYM_P_P +/* 16 */ 0b00000000U, //OFF SYM_OFF +/* 17 */ 0b00000010U //- (G) SYM_DASH +}; + +static uint8_t g_u8WaterTemperature = 24U; //Water temperature, default 24 degree celcius +static uint8_t g_u8CountIncs = 0U; //'+' button counter +static uint8_t g_u8CountDecs = 0U; //'-' button counter + +uint8_t g_u8ISRDigitSelect = 0U; +uint8_t g_au8Digits[3U] = +{ + SYM_OFF, //unit + SYM_OFF, //ones + SYM_OFF //tens +}; + +void vInit( void ); +void vSetValue( uint8_t u8Value, uint8_t u8Unit ); +void vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ); +void vReadButtons( void ); +void vCalculate( void ); + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + } +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main(void) +{ + /* Init I/O: */ + vInit(); + + /* Set default value: */ + vSetDisplayDigits( SYM_DASH, SYM_DASH, SYM_DASH ); + + /* wait 3 seconds */ + _delay_ms(3000); + + /* Set default value: */ + vSetValue( g_u8WaterTemperature, SYM_DEG_CELCIUS ); + + while ( 1 ) + { + vReadButtons(); + vCalculate(); + _delay_ms(3); + } + + return 0; +} + +/************************************************************************/ +/* Initialize inputs and outputs */ +/************************************************************************/ +void vInit( void ) +{ + /* Port D - Pins 0-7: Outputs */ + DDRD = 0b11111111U; + + /* Port B - Pins 0-2: Outputs */ + DDRB = 0b00000111U; + + /* Port C - Pins 4-5: Inputs with internal Pull-up */ + PORTC = 0b00110000U; + + /* 16-bit TIMER1 in CTC mode + * prescaler = 8 + * 20 MHz / 8 = 2.5 MHz + * Compare value = 2500 => 1 ms IRQ + */ + TCCR1A = 0U; + TCCR1B = (1< BUTTON_THRESHOLD ) + { + g_u8WaterTemperature++; + if ( g_u8WaterTemperature > TEMP_MAX ) + { + g_u8WaterTemperature = TEMP_MIN; + } + blChanged = true; + g_u8CountIncs = 0U; //reset increment counter + } + if ( g_u8CountDecs > BUTTON_THRESHOLD ) + { + if ( g_u8WaterTemperature == TEMP_MIN ) + { + g_u8WaterTemperature = TEMP_MAX; + } + else + { + g_u8WaterTemperature--; + } + blChanged = true; + g_u8CountDecs = 0U; //reset decrement counter + } + + if ( blChanged ) + { + vSetValue( g_u8WaterTemperature, SYM_DEG_CELCIUS ); + } + + return; //void +} diff --git a/PoolClock/main.c b/PoolClock/main.c new file mode 100644 index 0000000..2d8854a --- /dev/null +++ b/PoolClock/main.c @@ -0,0 +1,559 @@ +#include +#include +#include +#define F_CPU 20000000UL //20 MHz +#include + +/* 7-Segment display: */ +#define NUM_DIGITS 3U //3 Digits +#define DIGIT_TENS 2U //left +#define DIGIT_ONES 1U //middle +#define DIGIT_UNIT 0U //right +#define SELECT_DIGIT(digit) (1U << digit) + +/* DS18B20 peripherals: */ +#define DS18B20_PORT PORTC +#define DS18B20_DDR DDRC +#define DS18B20_PIN PINC +#define DS18B20_DQ PINC3 + +/* DS18B20 commands: */ +#define DS18B20_CMD_CONVERTTEMP 0x44U +#define DS18B20_CMD_RSCRATCHPAD 0xBEU +#define DS18B20_CMD_WSCRATCHPAD 0x4EU +#define DS18B20_CMD_CPYSCRATCHPAD 0x48U +#define DS18B20_CMD_RECEEPROM 0xB8U +#define DS18B20_CMD_RPWRSUPPLY 0xB4U +#define DS18B20_CMD_SEARCHROM 0xF0U +#define DS18B20_CMD_READROM 0x33U +#define DS18B20_CMD_MATCHROM 0x55U +#define DS18B20_CMD_SKIPROM 0xCCU +#define DS18B20_CMD_ALARMSEARCH 0xECU + +//#define TEMP_MIN 0U +//#define TEMP_MAX 50U + +#define MODE_MEASURE 0U +#define MODE_ANIMATION_1 1U +#define MODE_ANIMATION_2 2U + +#define ANIMATION_DELAY_MS 70U + +#define ANIMATION_START_DELAY_MS 70U + +#define BUTTON_THRESHOLD 50 //software debounce + +/* Symbol indexes: */ +#define SYM_n 10U +#define SYM_o 11U +#define SYM_E 12U +#define SYM_R 13U +#define SYM_DEG_CELCIUS 14U +#define SYM_P_P 15U +#define SYM_OFF 16U +#define SYM_DASH 17U +#define SYM_I 18U +#define SYM_SEG_A 19U +#define SYM_SEG_B 20U +#define SYM_SEG_C 21U +#define SYM_SEG_D 22U +#define SYM_SEG_E 23U +#define SYM_SEG_F 24U +#define SYM_SEG_AB 25U +#define SYM_SEG_BCD 26U +#define SYM_SEG_CD 27U +#define SYM_SEG_DE 28U +#define SYM_SEG_DEF 29U +#define SYM_SEG_AEF 30U +#define SYM_SEG_AF 31U + +/* + 7-Segment Layout: + + A + F B + G + E C + D P + + Pin 7 6 5 4 3 2 1 0 + Segment A F B E D C G P +*/ +static uint8_t g_au8Symbols[32U] = +{ +/* 00 */ 0b11111100U, //0 (ABCDEF) +/* 01 */ 0b00100100U, //1 (BC) +/* 02 */ 0b10111010U, //2 (ABDEG) +/* 03 */ 0b10101110U, //3 (ABCDG) +/* 04 */ 0b01100110U, //4 (BCFG) +/* 05 */ 0b11001110U, //5 (ACDFG) +/* 06 */ 0b11011110U, //6 (ACDEFG) +/* 07 */ 0b10100100U, //7 (ABC) +/* 08 */ 0b11111110U, //8 (ABCDEFG) +/* 09 */ 0b11101110U, //9 (ABCDFG) +/* 10 */ 0b00010110U, //n (CEG) SYM_n +/* 11 */ 0b00011110U, //o (CDEG) SYM_o +/* 12 */ 0b11011010U, //E (ADEFG) SYM_E +/* 13 */ 0b00010010U, //r (EG) SYM_r +/* 14 */ 0b10101101U, //degC (ABCDP) SYM_DEG_CELCIUS +/* 15 */ 0b11110011U, //P. (ABEFGP) SYM_P_P +/* 16 */ 0b00000000U, //OFF SYM_OFF +/* 17 */ 0b00000010U, //- (G) SYM_DASH +/* 18 */ 0b01010000U, //I (EF) SYM_I +/* 19 */ 0b10000000U, //SegA SYM_SEG_A +/* 20 */ 0b00100000U, //SegB SYM_SEG_B +/* 21 */ 0b00000100U, //SegC SYM_SEG_C +/* 22 */ 0b00001000U, //SegD SYM_SEG_D +/* 23 */ 0b00010000U, //SegE SYM_SEG_E +/* 24 */ 0b01000000U, //SegF SYM_SEG_F +/* 25 */ 0b10100000U, //SegAB SYM_SEG_AB +/* 26 */ 0b00101100U, //SegBCD SYM_SEG_BCD +/* 27 */ 0b00001100U, //SegCD SYM_SEG_CD +/* 28 */ 0b00011000U, //SegDE SYM_SEG_DE +/* 29 */ 0b01011000U, //SegDEF SYM_SEG_DEF +/* 30 */ 0b11010000U, //SegAEF SYM_SEG_AEF +/* 31 */ 0b11000000U, //SegAF SYM_SEG_AF +}; + +//static uint8_t g_u8WaterTemperature = 24U; //Water temperature, default 24 degree celcius +static uint8_t g_u8ButtonCountTop = 0U; //upper button counter +static uint8_t g_u8ButtonCountBot = 0U; //lower button counter +static uint8_t g_u8Mode = MODE_MEASURE; //Current display mode + +uint8_t g_u8ISRDigitSelect = 0U; +uint8_t g_au8Digits[3U] = +{ + SYM_OFF, //unit + SYM_OFF, //ones + SYM_OFF //tens +}; + +void s_vInit( void ); +void s_vSetValue( uint8_t u8Value, uint8_t u8Unit ); +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ); + +void s_vReadButtons( void ); +void s_vShowAnim( uint8_t u8Select ); + +uint8_t s_u8DS18B20_Reset( void ); +void s_vDS18B20_WriteByte( uint8_t u8Byte ); +void s_vDS18B20_WriteBit( uint8_t u8Bit ); +uint8_t s_u8DS18B20_ReadByte( void ); +uint8_t s_u8DS18B20_ReadBit( void ); + + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + } + + /* Read and evaluate button status */ + s_vReadButtons(); +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main(void) +{ + uint8_t u8TempLo, u8TempHi; + float f32Temperature; + uint8_t u8Loop = 0U; + + /* Init I/O: */ + s_vInit(); + + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(10); + + s_vSetDisplayDigits( SYM_SEG_A, SYM_OFF, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_D ); + _delay_ms(300); + + while ( u8Loop < 5U ) + { + s_vSetDisplayDigits( SYM_OFF, SYM_SEG_A, SYM_SEG_DE ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_SEG_DEF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_SEG_AEF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_SEG_D, SYM_SEG_AF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_D, SYM_SEG_D, SYM_SEG_A ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_DE, SYM_SEG_D, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_DEF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_AEF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_AF, SYM_SEG_A, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_D ); + _delay_ms(ANIMATION_START_DELAY_MS); + u8Loop++; + } + + /* Set default value: */ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + + while ( 1 ) + { + + + /* perform mode action */ + switch ( g_u8Mode ) + { + case MODE_MEASURE: + (void) s_u8DS18B20_Reset(); + s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + s_vDS18B20_WriteByte( DS18B20_CMD_CONVERTTEMP ); + while ( !s_u8DS18B20_ReadBit() ); + (void) s_u8DS18B20_Reset(); + s_vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + s_vDS18B20_WriteByte( DS18B20_CMD_RSCRATCHPAD ); + u8TempLo = s_u8DS18B20_ReadByte(); + u8TempHi = s_u8DS18B20_ReadByte(); + f32Temperature = ((u8TempHi << 8) + u8TempLo) * 0.0625; + s_vSetValue( (uint8_t) f32Temperature, SYM_DEG_CELCIUS ); + if ( g_u8Mode == MODE_MEASURE ) + { + _delay_ms(500); + } + break; + case MODE_ANIMATION_1: + s_vShowAnim(g_u8Mode); + g_u8Mode = MODE_MEASURE; + break; + case MODE_ANIMATION_2: + s_vShowAnim(g_u8Mode); + g_u8Mode = MODE_MEASURE; + break; + default: + break; + } //end switch + } + + return 0; +} + +/************************************************************************/ +/* Initialize inputs and outputs */ +/************************************************************************/ +void s_vInit( void ) +{ + /* Port D - Pins 0-7: Outputs */ + DDRD = 0b11111111U; + + /* Port B - Pins 0-2: Outputs */ + DDRB = 0b00000111U; + + /* Port C - Pins 4-5: Inputs with internal Pull-up */ + PORTC = 0b00110000U; + + /* 16-bit TIMER1 in CTC mode + * prescaler = 8 + * 20 MHz / 8 = 2.5 MHz + * Compare value = 2500 => 1 ms IRQ + */ + TCCR1A = 0U; + TCCR1B = (1< BUTTON_THRESHOLD ) + { + g_u8ButtonCountTop = 0U; //reset top counter + g_u8Mode = MODE_ANIMATION_1; + } + else if ( g_u8ButtonCountBot > BUTTON_THRESHOLD ) + { + g_u8ButtonCountBot = 0U; //reset bottom counter + g_u8Mode = MODE_ANIMATION_2; + } + //else + //{ + //return MODE_MEASURE; + //} + return; //void +} + + +/************************************************************************/ +/* */ +/************************************************************************/ +void s_vShowAnim( uint8_t u8Select ) +{ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + switch ( u8Select ) + { + case MODE_ANIMATION_1: //fade from left to right and from right to left + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + break; + case MODE_ANIMATION_2: //fade from left to right and clear + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 3U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 1U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( SYM_OFF, 3U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, 1U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_E ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_I ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + break; + default: + break; + } //end switch + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + return; //void +} + + +/************************************************************************/ +/* Reset DS18B20 (960 us) */ +/************************************************************************/ +uint8_t s_u8DS18B20_Reset( void ) +{ + uint8_t u8Status; + + //low for 480 us + DS18B20_PORT &= ~ (1<>= 1U; + } + + return; //void +} + + +/************************************************************************/ +/* Write single bit to DS18B20 (61 us) */ +/************************************************************************/ +void s_vDS18B20_WriteBit( uint8_t u8Bit ) +{ + //low for 1 us + DS18B20_PORT &= ~ (1U<>= 1U; + n |= (s_u8DS18B20_ReadBit()<<7U); + } + + return n; +} + +/************************************************************************/ +/* Read single bit from DS18B20 (60 us) */ +/************************************************************************/ +uint8_t s_u8DS18B20_ReadBit( void ) +{ + uint8_t u8Bit = 0U; + + //low for 1 us + DS18B20_PORT &= ~ (1U< "PoolClockAirTemp.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 "PoolClockAirTemp.elf" "PoolClockAirTemp.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "PoolClockAirTemp.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "PoolClockAirTemp.elf" "PoolClockAirTemp.a" "PoolClockAirTemp.hex" "PoolClockAirTemp.lss" "PoolClockAirTemp.eep" "PoolClockAirTemp.map" "PoolClockAirTemp.srec" "PoolClockAirTemp.usersignatures" + \ No newline at end of file diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.eep b/PoolClockAirTemp/Debug/PoolClockAirTemp.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/PoolClockAirTemp/Debug/PoolClockAirTemp.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.elf b/PoolClockAirTemp/Debug/PoolClockAirTemp.elf new file mode 100644 index 0000000000000000000000000000000000000000..e876150a5784d237ae89462570e120dcb8b922e9 GIT binary patch literal 15044 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 literal 0 HcmV?d00001 diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.hex b/PoolClockAirTemp/Debug/PoolClockAirTemp.hex new file mode 100644 index 0000000..3791d28 --- /dev/null +++ b/PoolClockAirTemp/Debug/PoolClockAirTemp.hex @@ -0,0 +1,77 @@ +:1000000019C033C032C031C030C02FC02EC02DC087 +:100010002CC02BC02AC02AC028C027C026C025C09B +:1000200024C023C022C021C020C01FC01EC01DC0CC +:100030001CC01BC011241FBECFEFD4E0DEBFCDBF5C +:1000400011E0A0E0B1E0E0EAF4E002C005900D921A +:10005000A631B107D9F721E0A6E1B1E001C01D92B8 +:10006000A731B207E1F7BFD019C2CACF1F920F92D2 +:100070000FB60F9211248F939F93EF93FF9315B8B0 +:100080001BB88DE08A95F1F7000081E090E00090C8 +:10009000160102C0880F991F0A94E2F785B9E09112 +:1000A0001601F0E0E050FF4FE081F0E0ED5FFE4F21 +:1000B00080818BB9809116018F5F833018F4809313 +:1000C000160102C010921601FF91EF919F918F913E +:1000D0000F900FBE0F901F9018958FEF8AB987E091 +:1000E00084B9109280008AE08093810084EC99E0CA +:1000F0009093890080938800EFE6F0E08081826031 +:100100008083789408959DEC899F912D1124969574 +:1001100096959695E0E0F1E09283990F292F220FB2 +:10012000220F920F891B81836083089543983B9A25 +:100130008FE599E00197F1F700C000003B98EBE2F2 +:10014000F1E03197F1F700C0000086B1E3E3F8E099 +:100150003197F1F700C000008870089543983B9AEA +:1001600096E09A95F1F700C0813009F43B988BE254 +:1001700091E00197F1F700C000003B980895CF93FC +:10018000DF93D82FC8E08D2F8170E8DFD695C1505E +:10019000D1F7DF91CF91089543983B9A86E08A95F5 +:1001A000F1F700C03B98EDE5EA95F1F7000086B164 +:1001B000E0EEF0E03197F1F700C0000083FB882704 +:1001C00080F90895CF93DF93D8E0C0E0E5DF20E821 +:1001D000829FC0011124C695C82BD150B9F78C2F2E +:1001E000DF91CF91089579DFE0E0F1E081E1828352 +:1001F000818380832FEF8BE792E9215080409040EC +:10020000E1F700C0000092DF8CECB9DF84E4B7DFD7 +:10021000C3DF8823E9F38ADF8CECB1DF8EEBAFDF3D +:10022000D1DFC82FCFDF682F70E0762F66276C0FE5 +:10023000711D072E000C880B990B41D020E030E097 +:1002400040E85DE3A0D00DD0862F6EE05CDF2FE7A5 +:1002500084E89EE1215080409040E1F700C000001A +:10026000D2CF70D088F09F5790F0B92F9927B7510F +:10027000A0F0D1F0660F771F881F991F1AF0BA956A +:10028000C9F712C0B13081F077D0B1E0089574C0E1 +:10029000672F782F8827B85F39F0B93FCCF3869560 +:1002A00077956795B395D9F73EF4909580957095BD +:1002B00061957F4F8F4F9F4F0895E89409C097FB3A +:1002C0003EF490958095709561957F4F8F4F9F4F2D +:1002D0009923A9F0F92F96E9BB279395F695879571 +:1002E00077956795B795F111F8CFFAF4BB0F11F434 +:1002F00060FF1BC06F5F7F4F8F4F9F4F16C08823DB +:1003000011F096E911C0772321F09EE8872F762F10 +:1003100005C0662371F096E8862F70E060E02AF051 +:100320009A95660F771F881FDAF7880F969587953D +:1003300097F9089557FD9058440F551F59F05F3FA6 +:1003400071F04795880F97FB991F61F09F3F79F0F7 +:1003500087950895121613061406551FF2CF469579 +:10036000F1DF08C0161617061806991FF1CF8695FB +:100370007105610508940895E894BB2766277727DF +:10038000CB0197F908950BD078C069D028F06ED0D2 +:1003900018F0952309F05AC05FC01124EECFCADFD0 +:1003A000A0F3959FD1F3950F50E0551F629FF00188 +:1003B000729FBB27F00DB11D639FAA27F00DB11DE1 +:1003C000AA1F649F6627B00DA11D661F829F22276A +:1003D000B00DA11D621F739FB00DA11D621F839FF1 +:1003E000A00D611D221F749F3327A00D611D231FC7 +:1003F000849F600D211D822F762F6A2F11249F5715 +:1004000050408AF0E1F088234AF0EE0FFF1FBB1F37 +:10041000661F771F881F91505040A9F79E3F5105D6 +:1004200070F014C0AACF5F3FECF3983EDCF38695E2 +:1004300077956795B795F795E7959F5FC1F7FE2B81 +:10044000880F911D9695879597F9089597F99F675D +:1004500080E870E060E008959FEF80EC089500244C +:100460000A941616170618060906089500240A9419 +:1004700012161306140605060895092E0394000C9F +:1004800011F4882352F0BB0F40F4BF2B11F460FF2E +:1004900004C06F5F7F4F8F4F9F4F0895F894FFCF39 +:1004A000101010FC24BAAE66CEDEA4FEEE161EDAE4 +:0604B00012ADF300020092 +:00000001FF diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.lss b/PoolClockAirTemp/Debug/PoolClockAirTemp.lss new file mode 100644 index 0000000..bf9b382 --- /dev/null +++ b/PoolClockAirTemp/Debug/PoolClockAirTemp.lss @@ -0,0 +1,837 @@ + +PoolClockAirTemp.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000016 00800100 000004a0 00000534 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 000004a0 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000001 00800116 00800116 0000054a 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 0000054a 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 0000057c 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000068 00000000 00000000 000005bc 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 00000cee 00000000 00000000 00000624 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 0000084b 00000000 00000000 00001312 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 000004ba 00000000 00000000 00001b5d 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000ec 00000000 00000000 00002018 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 000004d2 00000000 00000000 00002104 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 0000059b 00000000 00000000 000025d6 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 00000058 00000000 00000000 00002b71 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> + 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt> + 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt> + 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> + 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> + a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> + c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> + e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> + 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> + 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> + 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> + 16: 2a c0 rjmp .+84 ; 0x6c <__vector_11> + 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> + 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> + 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> + 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> + 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> + 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> + 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> + 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> + 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> + 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> + 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> + 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> + 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> + 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> + +00000034 <__ctors_end>: + 34: 11 24 eor r1, r1 + 36: 1f be out 0x3f, r1 ; 63 + 38: cf ef ldi r28, 0xFF ; 255 + 3a: d4 e0 ldi r29, 0x04 ; 4 + 3c: de bf out 0x3e, r29 ; 62 + 3e: cd bf out 0x3d, r28 ; 61 + +00000040 <__do_copy_data>: + 40: 11 e0 ldi r17, 0x01 ; 1 + 42: a0 e0 ldi r26, 0x00 ; 0 + 44: b1 e0 ldi r27, 0x01 ; 1 + 46: e0 ea ldi r30, 0xA0 ; 160 + 48: f4 e0 ldi r31, 0x04 ; 4 + 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> + 4c: 05 90 lpm r0, Z+ + 4e: 0d 92 st X+, r0 + 50: a6 31 cpi r26, 0x16 ; 22 + 52: b1 07 cpc r27, r17 + 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> + +00000056 <__do_clear_bss>: + 56: 21 e0 ldi r18, 0x01 ; 1 + 58: a6 e1 ldi r26, 0x16 ; 22 + 5a: b1 e0 ldi r27, 0x01 ; 1 + 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> + +0000005e <.do_clear_bss_loop>: + 5e: 1d 92 st X+, r1 + +00000060 <.do_clear_bss_start>: + 60: a7 31 cpi r26, 0x17 ; 23 + 62: b2 07 cpc r27, r18 + 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> + 66: bf d0 rcall .+382 ; 0x1e6
+ 68: 19 c2 rjmp .+1074 ; 0x49c <_exit> + +0000006a <__bad_interrupt>: + 6a: ca cf rjmp .-108 ; 0x0 <__vectors> + +0000006c <__vector_11>: +/************************************************************************/ +void vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + g_au8Digits[DIGIT_ONES] = u8Ones; + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6c: 1f 92 push r1 + 6e: 0f 92 push r0 + 70: 0f b6 in r0, 0x3f ; 63 + 72: 0f 92 push r0 + 74: 11 24 eor r1, r1 + 76: 8f 93 push r24 + 78: 9f 93 push r25 + 7a: ef 93 push r30 + 7c: ff 93 push r31 + 7e: 15 b8 out 0x05, r1 ; 5 + 80: 1b b8 out 0x0b, r1 ; 11 + 82: 8d e0 ldi r24, 0x0D ; 13 + 84: 8a 95 dec r24 + 86: f1 f7 brne .-4 ; 0x84 <__vector_11+0x18> + 88: 00 00 nop + 8a: 81 e0 ldi r24, 0x01 ; 1 + 8c: 90 e0 ldi r25, 0x00 ; 0 + 8e: 00 90 16 01 lds r0, 0x0116 ; 0x800116 <__data_end> + 92: 02 c0 rjmp .+4 ; 0x98 <__vector_11+0x2c> + 94: 88 0f add r24, r24 + 96: 99 1f adc r25, r25 + 98: 0a 94 dec r0 + 9a: e2 f7 brpl .-8 ; 0x94 <__vector_11+0x28> + 9c: 85 b9 out 0x05, r24 ; 5 + 9e: e0 91 16 01 lds r30, 0x0116 ; 0x800116 <__data_end> + a2: f0 e0 ldi r31, 0x00 ; 0 + a4: e0 50 subi r30, 0x00 ; 0 + a6: ff 4f sbci r31, 0xFF ; 255 + a8: e0 81 ld r30, Z + aa: f0 e0 ldi r31, 0x00 ; 0 + ac: ed 5f subi r30, 0xFD ; 253 + ae: fe 4f sbci r31, 0xFE ; 254 + b0: 80 81 ld r24, Z + b2: 8b b9 out 0x0b, r24 ; 11 + b4: 80 91 16 01 lds r24, 0x0116 ; 0x800116 <__data_end> + b8: 8f 5f subi r24, 0xFF ; 255 + ba: 83 30 cpi r24, 0x03 ; 3 + bc: 18 f4 brcc .+6 ; 0xc4 <__vector_11+0x58> + be: 80 93 16 01 sts 0x0116, r24 ; 0x800116 <__data_end> + c2: 02 c0 rjmp .+4 ; 0xc8 <__vector_11+0x5c> + c4: 10 92 16 01 sts 0x0116, r1 ; 0x800116 <__data_end> + c8: ff 91 pop r31 + ca: ef 91 pop r30 + cc: 9f 91 pop r25 + ce: 8f 91 pop r24 + d0: 0f 90 pop r0 + d2: 0f be out 0x3f, r0 ; 63 + d4: 0f 90 pop r0 + d6: 1f 90 pop r1 + d8: 18 95 reti + +000000da : + da: 8f ef ldi r24, 0xFF ; 255 + dc: 8a b9 out 0x0a, r24 ; 10 + de: 87 e0 ldi r24, 0x07 ; 7 + e0: 84 b9 out 0x04, r24 ; 4 + e2: 10 92 80 00 sts 0x0080, r1 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + e6: 8a e0 ldi r24, 0x0A ; 10 + e8: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081> + ec: 84 ec ldi r24, 0xC4 ; 196 + ee: 99 e0 ldi r25, 0x09 ; 9 + f0: 90 93 89 00 sts 0x0089, r25 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089> + f4: 80 93 88 00 sts 0x0088, r24 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088> + f8: ef e6 ldi r30, 0x6F ; 111 + fa: f0 e0 ldi r31, 0x00 ; 0 + fc: 80 81 ld r24, Z + fe: 82 60 ori r24, 0x02 ; 2 + 100: 80 83 st Z, r24 + 102: 78 94 sei + 104: 08 95 ret + +00000106 : + 106: 9d ec ldi r25, 0xCD ; 205 + 108: 89 9f mul r24, r25 + 10a: 91 2d mov r25, r1 + 10c: 11 24 eor r1, r1 + 10e: 96 95 lsr r25 + 110: 96 95 lsr r25 + 112: 96 95 lsr r25 + 114: e0 e0 ldi r30, 0x00 ; 0 + 116: f1 e0 ldi r31, 0x01 ; 1 + 118: 92 83 std Z+2, r25 ; 0x02 + 11a: 99 0f add r25, r25 + 11c: 29 2f mov r18, r25 + 11e: 22 0f add r18, r18 + 120: 22 0f add r18, r18 + 122: 92 0f add r25, r18 + 124: 89 1b sub r24, r25 + 126: 81 83 std Z+1, r24 ; 0x01 + 128: 60 83 st Z, r22 + 12a: 08 95 ret + +0000012c : +uint8_t u8DS18B20_Reset( void ) +{ + uint8_t u8Status; + + //low for 480 us + DS18B20_PORT &= ~ (1< + 138: 00 c0 rjmp .+0 ; 0x13a + 13a: 00 00 nop + _delay_us(480); + + //release line and wait for 60 us + DS18B20_DDR &= ~(1< + 146: 00 c0 rjmp .+0 ; 0x148 + 148: 00 00 nop + _delay_us(60); + + //get value and wait 420 us + u8Status = (DS18B20_PIN & (1< + 154: 00 c0 rjmp .+0 ; 0x156 + 156: 00 00 nop + _delay_us(420); + + //return the read value: 0=okay, 1=error + return u8Status; +} + 158: 88 70 andi r24, 0x08 ; 8 + 15a: 08 95 ret + +0000015c : +/* Write single bit to DS18B20 (61 us) */ +/************************************************************************/ +void vDS18B20_WriteBit( uint8_t u8Bit ) +{ + //low for 1 us + DS18B20_PORT &= ~ (1U< + 166: 00 c0 rjmp .+0 ; 0x168 + _delay_us(1); + + //if we want to write 1, release the line (if not will keep low) + if (1U == u8Bit ) + 168: 81 30 cpi r24, 0x01 ; 1 + 16a: 09 f4 brne .+2 ; 0x16e + { + DS18B20_DDR &= ~(1< + 176: 00 c0 rjmp .+0 ; 0x178 + 178: 00 00 nop + } + + //wait 60 us and release the line + _delay_us(60); + DS18B20_DDR &= ~(1<: + +/************************************************************************/ +/* Write byte to DS18B20 (8 * 61 us = 488 us) */ +/************************************************************************/ +void vDS18B20_WriteByte( uint8_t u8Byte ) +{ + 17e: cf 93 push r28 + 180: df 93 push r29 + 182: d8 2f mov r29, r24 + 184: c8 e0 ldi r28, 0x08 ; 8 + uint8_t u8Bits = 8U; + + while ( u8Bits-- ) + { + vDS18B20_WriteBit( u8Byte & 1U ); + 186: 8d 2f mov r24, r29 + 188: 81 70 andi r24, 0x01 ; 1 + 18a: e8 df rcall .-48 ; 0x15c + u8Byte >>= 1U; + 18c: d6 95 lsr r29 + 18e: c1 50 subi r28, 0x01 ; 1 +/************************************************************************/ +void vDS18B20_WriteByte( uint8_t u8Byte ) +{ + uint8_t u8Bits = 8U; + + while ( u8Bits-- ) + 190: d1 f7 brne .-12 ; 0x186 + vDS18B20_WriteBit( u8Byte & 1U ); + u8Byte >>= 1U; + } + + return; //void +} + 192: df 91 pop r29 + 194: cf 91 pop r28 + 196: 08 95 ret + +00000198 : +uint8_t u8DS18B20_ReadBit( void ) +{ + uint8_t u8Bit = 0U; + + //low for 1 us + DS18B20_PORT &= ~ (1U< + 1a2: 00 c0 rjmp .+0 ; 0x1a4 + _delay_us(1); + + //release line and wait for 14 us + DS18B20_DDR &= ~(1U< + 1ac: 00 00 nop + _delay_us(14); + + //read the value + if ( DS18B20_PIN & (1U< + 1b8: 00 c0 rjmp .+0 ; 0x1ba + 1ba: 00 00 nop + + //wait 45 us and return read value + _delay_us(45); + + return u8Bit; +} + 1bc: 83 fb bst r24, 3 + 1be: 88 27 eor r24, r24 + 1c0: 80 f9 bld r24, 0 + 1c2: 08 95 ret + +000001c4 : + +/************************************************************************/ +/* Read byte from DS18B20 (8 * 60 us = 480 us) */ +/************************************************************************/ +uint8_t u8DS18B20_ReadByte( void ) +{ + 1c4: cf 93 push r28 + 1c6: df 93 push r29 + 1c8: d8 e0 ldi r29, 0x08 ; 8 + uint8_t u8Bits = 8U; + uint8_t n = 0U; + 1ca: c0 e0 ldi r28, 0x00 ; 0 + while ( u8Bits-- ) + { + n >>= 1U; + n |= (u8DS18B20_ReadBit()<<7U); + 1cc: e5 df rcall .-54 ; 0x198 + 1ce: 20 e8 ldi r18, 0x80 ; 128 + 1d0: 82 9f mul r24, r18 + 1d2: c0 01 movw r24, r0 + 1d4: 11 24 eor r1, r1 + 1d6: c6 95 lsr r28 + 1d8: c8 2b or r28, r24 + 1da: d1 50 subi r29, 0x01 ; 1 +/************************************************************************/ +uint8_t u8DS18B20_ReadByte( void ) +{ + uint8_t u8Bits = 8U; + uint8_t n = 0U; + while ( u8Bits-- ) + 1dc: b9 f7 brne .-18 ; 0x1cc + n >>= 1U; + n |= (u8DS18B20_ReadBit()<<7U); + } + + return n; +} + 1de: 8c 2f mov r24, r28 + 1e0: df 91 pop r29 + 1e2: cf 91 pop r28 + 1e4: 08 95 ret + +000001e6
: +{ + uint8_t u8TempLo, u8TempHi; + float f32Temperature; + + /* Init I/O: */ + vInit(); + 1e6: 79 df rcall .-270 ; 0xda +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1e8: e0 e0 ldi r30, 0x00 ; 0 + 1ea: f1 e0 ldi r31, 0x01 ; 1 + 1ec: 81 e1 ldi r24, 0x11 ; 17 + 1ee: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1f0: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1f2: 80 83 st Z, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1f4: 2f ef ldi r18, 0xFF ; 255 + 1f6: 8b e7 ldi r24, 0x7B ; 123 + 1f8: 92 e9 ldi r25, 0x92 ; 146 + 1fa: 21 50 subi r18, 0x01 ; 1 + 1fc: 80 40 sbci r24, 0x00 ; 0 + 1fe: 90 40 sbci r25, 0x00 ; 0 + 200: e1 f7 brne .-8 ; 0x1fa + 202: 00 c0 rjmp .+0 ; 0x204 + 204: 00 00 nop + /* wait 3 seconds for DS18B20 sensor */ + _delay_ms(2400); + + while (1) + { + (void) u8DS18B20_Reset(); + 206: 92 df rcall .-220 ; 0x12c + vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + 208: 8c ec ldi r24, 0xCC ; 204 + 20a: b9 df rcall .-142 ; 0x17e + vDS18B20_WriteByte( DS18B20_CMD_CONVERTTEMP ); + 20c: 84 e4 ldi r24, 0x44 ; 68 + 20e: b7 df rcall .-146 ; 0x17e + while ( !u8DS18B20_ReadBit() ); + 210: c3 df rcall .-122 ; 0x198 + 212: 88 23 and r24, r24 + 214: e9 f3 breq .-6 ; 0x210 + (void) u8DS18B20_Reset(); + 216: 8a df rcall .-236 ; 0x12c + vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + 218: 8c ec ldi r24, 0xCC ; 204 + 21a: b1 df rcall .-158 ; 0x17e + vDS18B20_WriteByte( DS18B20_CMD_RSCRATCHPAD ); + 21c: 8e eb ldi r24, 0xBE ; 190 + 21e: af df rcall .-162 ; 0x17e + u8TempLo = u8DS18B20_ReadByte(); + 220: d1 df rcall .-94 ; 0x1c4 + 222: c8 2f mov r28, r24 + u8TempHi = u8DS18B20_ReadByte(); + 224: cf df rcall .-98 ; 0x1c4 + f32Temperature = ((u8TempHi << 8) + u8TempLo) * 0.0625; + vSetValue( (uint8_t) f32Temperature, SYM_DEG_CELCIUS ); + 226: 68 2f mov r22, r24 + 228: 70 e0 ldi r23, 0x00 ; 0 + 22a: 76 2f mov r23, r22 + 22c: 66 27 eor r22, r22 + 22e: 6c 0f add r22, r28 + 230: 71 1d adc r23, r1 + 232: 07 2e mov r0, r23 + 234: 00 0c add r0, r0 + 236: 88 0b sbc r24, r24 + 238: 99 0b sbc r25, r25 + 23a: 41 d0 rcall .+130 ; 0x2be <__floatsisf> + 23c: 20 e0 ldi r18, 0x00 ; 0 + 23e: 30 e0 ldi r19, 0x00 ; 0 + 240: 40 e8 ldi r20, 0x80 ; 128 + 242: 5d e3 ldi r21, 0x3D ; 61 + 244: a0 d0 rcall .+320 ; 0x386 <__mulsf3> + 246: 0d d0 rcall .+26 ; 0x262 <__fixunssfsi> + 248: 86 2f mov r24, r22 + 24a: 6e e0 ldi r22, 0x0E ; 14 + 24c: 5c df rcall .-328 ; 0x106 + 24e: 2f e7 ldi r18, 0x7F ; 127 + 250: 84 e8 ldi r24, 0x84 ; 132 + 252: 9e e1 ldi r25, 0x1E ; 30 + 254: 21 50 subi r18, 0x01 ; 1 + 256: 80 40 sbci r24, 0x00 ; 0 + 258: 90 40 sbci r25, 0x00 ; 0 + 25a: e1 f7 brne .-8 ; 0x254 + 25c: 00 c0 rjmp .+0 ; 0x25e + 25e: 00 00 nop + 260: d2 cf rjmp .-92 ; 0x206 + +00000262 <__fixunssfsi>: + 262: 70 d0 rcall .+224 ; 0x344 <__fp_splitA> + 264: 88 f0 brcs .+34 ; 0x288 <__fixunssfsi+0x26> + 266: 9f 57 subi r25, 0x7F ; 127 + 268: 90 f0 brcs .+36 ; 0x28e <__fixunssfsi+0x2c> + 26a: b9 2f mov r27, r25 + 26c: 99 27 eor r25, r25 + 26e: b7 51 subi r27, 0x17 ; 23 + 270: a0 f0 brcs .+40 ; 0x29a <__fixunssfsi+0x38> + 272: d1 f0 breq .+52 ; 0x2a8 <__fixunssfsi+0x46> + 274: 66 0f add r22, r22 + 276: 77 1f adc r23, r23 + 278: 88 1f adc r24, r24 + 27a: 99 1f adc r25, r25 + 27c: 1a f0 brmi .+6 ; 0x284 <__fixunssfsi+0x22> + 27e: ba 95 dec r27 + 280: c9 f7 brne .-14 ; 0x274 <__fixunssfsi+0x12> + 282: 12 c0 rjmp .+36 ; 0x2a8 <__fixunssfsi+0x46> + 284: b1 30 cpi r27, 0x01 ; 1 + 286: 81 f0 breq .+32 ; 0x2a8 <__fixunssfsi+0x46> + 288: 77 d0 rcall .+238 ; 0x378 <__fp_zero> + 28a: b1 e0 ldi r27, 0x01 ; 1 + 28c: 08 95 ret + 28e: 74 c0 rjmp .+232 ; 0x378 <__fp_zero> + 290: 67 2f mov r22, r23 + 292: 78 2f mov r23, r24 + 294: 88 27 eor r24, r24 + 296: b8 5f subi r27, 0xF8 ; 248 + 298: 39 f0 breq .+14 ; 0x2a8 <__fixunssfsi+0x46> + 29a: b9 3f cpi r27, 0xF9 ; 249 + 29c: cc f3 brlt .-14 ; 0x290 <__fixunssfsi+0x2e> + 29e: 86 95 lsr r24 + 2a0: 77 95 ror r23 + 2a2: 67 95 ror r22 + 2a4: b3 95 inc r27 + 2a6: d9 f7 brne .-10 ; 0x29e <__fixunssfsi+0x3c> + 2a8: 3e f4 brtc .+14 ; 0x2b8 <__fixunssfsi+0x56> + 2aa: 90 95 com r25 + 2ac: 80 95 com r24 + 2ae: 70 95 com r23 + 2b0: 61 95 neg r22 + 2b2: 7f 4f sbci r23, 0xFF ; 255 + 2b4: 8f 4f sbci r24, 0xFF ; 255 + 2b6: 9f 4f sbci r25, 0xFF ; 255 + 2b8: 08 95 ret + +000002ba <__floatunsisf>: + 2ba: e8 94 clt + 2bc: 09 c0 rjmp .+18 ; 0x2d0 <__floatsisf+0x12> + +000002be <__floatsisf>: + 2be: 97 fb bst r25, 7 + 2c0: 3e f4 brtc .+14 ; 0x2d0 <__floatsisf+0x12> + 2c2: 90 95 com r25 + 2c4: 80 95 com r24 + 2c6: 70 95 com r23 + 2c8: 61 95 neg r22 + 2ca: 7f 4f sbci r23, 0xFF ; 255 + 2cc: 8f 4f sbci r24, 0xFF ; 255 + 2ce: 9f 4f sbci r25, 0xFF ; 255 + 2d0: 99 23 and r25, r25 + 2d2: a9 f0 breq .+42 ; 0x2fe <__floatsisf+0x40> + 2d4: f9 2f mov r31, r25 + 2d6: 96 e9 ldi r25, 0x96 ; 150 + 2d8: bb 27 eor r27, r27 + 2da: 93 95 inc r25 + 2dc: f6 95 lsr r31 + 2de: 87 95 ror r24 + 2e0: 77 95 ror r23 + 2e2: 67 95 ror r22 + 2e4: b7 95 ror r27 + 2e6: f1 11 cpse r31, r1 + 2e8: f8 cf rjmp .-16 ; 0x2da <__floatsisf+0x1c> + 2ea: fa f4 brpl .+62 ; 0x32a <__floatsisf+0x6c> + 2ec: bb 0f add r27, r27 + 2ee: 11 f4 brne .+4 ; 0x2f4 <__floatsisf+0x36> + 2f0: 60 ff sbrs r22, 0 + 2f2: 1b c0 rjmp .+54 ; 0x32a <__floatsisf+0x6c> + 2f4: 6f 5f subi r22, 0xFF ; 255 + 2f6: 7f 4f sbci r23, 0xFF ; 255 + 2f8: 8f 4f sbci r24, 0xFF ; 255 + 2fa: 9f 4f sbci r25, 0xFF ; 255 + 2fc: 16 c0 rjmp .+44 ; 0x32a <__floatsisf+0x6c> + 2fe: 88 23 and r24, r24 + 300: 11 f0 breq .+4 ; 0x306 <__floatsisf+0x48> + 302: 96 e9 ldi r25, 0x96 ; 150 + 304: 11 c0 rjmp .+34 ; 0x328 <__floatsisf+0x6a> + 306: 77 23 and r23, r23 + 308: 21 f0 breq .+8 ; 0x312 <__floatsisf+0x54> + 30a: 9e e8 ldi r25, 0x8E ; 142 + 30c: 87 2f mov r24, r23 + 30e: 76 2f mov r23, r22 + 310: 05 c0 rjmp .+10 ; 0x31c <__floatsisf+0x5e> + 312: 66 23 and r22, r22 + 314: 71 f0 breq .+28 ; 0x332 <__floatsisf+0x74> + 316: 96 e8 ldi r25, 0x86 ; 134 + 318: 86 2f mov r24, r22 + 31a: 70 e0 ldi r23, 0x00 ; 0 + 31c: 60 e0 ldi r22, 0x00 ; 0 + 31e: 2a f0 brmi .+10 ; 0x32a <__floatsisf+0x6c> + 320: 9a 95 dec r25 + 322: 66 0f add r22, r22 + 324: 77 1f adc r23, r23 + 326: 88 1f adc r24, r24 + 328: da f7 brpl .-10 ; 0x320 <__floatsisf+0x62> + 32a: 88 0f add r24, r24 + 32c: 96 95 lsr r25 + 32e: 87 95 ror r24 + 330: 97 f9 bld r25, 7 + 332: 08 95 ret + +00000334 <__fp_split3>: + 334: 57 fd sbrc r21, 7 + 336: 90 58 subi r25, 0x80 ; 128 + 338: 44 0f add r20, r20 + 33a: 55 1f adc r21, r21 + 33c: 59 f0 breq .+22 ; 0x354 <__fp_splitA+0x10> + 33e: 5f 3f cpi r21, 0xFF ; 255 + 340: 71 f0 breq .+28 ; 0x35e <__fp_splitA+0x1a> + 342: 47 95 ror r20 + +00000344 <__fp_splitA>: + 344: 88 0f add r24, r24 + 346: 97 fb bst r25, 7 + 348: 99 1f adc r25, r25 + 34a: 61 f0 breq .+24 ; 0x364 <__fp_splitA+0x20> + 34c: 9f 3f cpi r25, 0xFF ; 255 + 34e: 79 f0 breq .+30 ; 0x36e <__fp_splitA+0x2a> + 350: 87 95 ror r24 + 352: 08 95 ret + 354: 12 16 cp r1, r18 + 356: 13 06 cpc r1, r19 + 358: 14 06 cpc r1, r20 + 35a: 55 1f adc r21, r21 + 35c: f2 cf rjmp .-28 ; 0x342 <__fp_split3+0xe> + 35e: 46 95 lsr r20 + 360: f1 df rcall .-30 ; 0x344 <__fp_splitA> + 362: 08 c0 rjmp .+16 ; 0x374 <__fp_splitA+0x30> + 364: 16 16 cp r1, r22 + 366: 17 06 cpc r1, r23 + 368: 18 06 cpc r1, r24 + 36a: 99 1f adc r25, r25 + 36c: f1 cf rjmp .-30 ; 0x350 <__fp_splitA+0xc> + 36e: 86 95 lsr r24 + 370: 71 05 cpc r23, r1 + 372: 61 05 cpc r22, r1 + 374: 08 94 sec + 376: 08 95 ret + +00000378 <__fp_zero>: + 378: e8 94 clt + +0000037a <__fp_szero>: + 37a: bb 27 eor r27, r27 + 37c: 66 27 eor r22, r22 + 37e: 77 27 eor r23, r23 + 380: cb 01 movw r24, r22 + 382: 97 f9 bld r25, 7 + 384: 08 95 ret + +00000386 <__mulsf3>: + 386: 0b d0 rcall .+22 ; 0x39e <__mulsf3x> + 388: 78 c0 rjmp .+240 ; 0x47a <__fp_round> + 38a: 69 d0 rcall .+210 ; 0x45e <__fp_pscA> + 38c: 28 f0 brcs .+10 ; 0x398 <__mulsf3+0x12> + 38e: 6e d0 rcall .+220 ; 0x46c <__fp_pscB> + 390: 18 f0 brcs .+6 ; 0x398 <__mulsf3+0x12> + 392: 95 23 and r25, r21 + 394: 09 f0 breq .+2 ; 0x398 <__mulsf3+0x12> + 396: 5a c0 rjmp .+180 ; 0x44c <__fp_inf> + 398: 5f c0 rjmp .+190 ; 0x458 <__fp_nan> + 39a: 11 24 eor r1, r1 + 39c: ee cf rjmp .-36 ; 0x37a <__fp_szero> + +0000039e <__mulsf3x>: + 39e: ca df rcall .-108 ; 0x334 <__fp_split3> + 3a0: a0 f3 brcs .-24 ; 0x38a <__mulsf3+0x4> + +000003a2 <__mulsf3_pse>: + 3a2: 95 9f mul r25, r21 + 3a4: d1 f3 breq .-12 ; 0x39a <__mulsf3+0x14> + 3a6: 95 0f add r25, r21 + 3a8: 50 e0 ldi r21, 0x00 ; 0 + 3aa: 55 1f adc r21, r21 + 3ac: 62 9f mul r22, r18 + 3ae: f0 01 movw r30, r0 + 3b0: 72 9f mul r23, r18 + 3b2: bb 27 eor r27, r27 + 3b4: f0 0d add r31, r0 + 3b6: b1 1d adc r27, r1 + 3b8: 63 9f mul r22, r19 + 3ba: aa 27 eor r26, r26 + 3bc: f0 0d add r31, r0 + 3be: b1 1d adc r27, r1 + 3c0: aa 1f adc r26, r26 + 3c2: 64 9f mul r22, r20 + 3c4: 66 27 eor r22, r22 + 3c6: b0 0d add r27, r0 + 3c8: a1 1d adc r26, r1 + 3ca: 66 1f adc r22, r22 + 3cc: 82 9f mul r24, r18 + 3ce: 22 27 eor r18, r18 + 3d0: b0 0d add r27, r0 + 3d2: a1 1d adc r26, r1 + 3d4: 62 1f adc r22, r18 + 3d6: 73 9f mul r23, r19 + 3d8: b0 0d add r27, r0 + 3da: a1 1d adc r26, r1 + 3dc: 62 1f adc r22, r18 + 3de: 83 9f mul r24, r19 + 3e0: a0 0d add r26, r0 + 3e2: 61 1d adc r22, r1 + 3e4: 22 1f adc r18, r18 + 3e6: 74 9f mul r23, r20 + 3e8: 33 27 eor r19, r19 + 3ea: a0 0d add r26, r0 + 3ec: 61 1d adc r22, r1 + 3ee: 23 1f adc r18, r19 + 3f0: 84 9f mul r24, r20 + 3f2: 60 0d add r22, r0 + 3f4: 21 1d adc r18, r1 + 3f6: 82 2f mov r24, r18 + 3f8: 76 2f mov r23, r22 + 3fa: 6a 2f mov r22, r26 + 3fc: 11 24 eor r1, r1 + 3fe: 9f 57 subi r25, 0x7F ; 127 + 400: 50 40 sbci r21, 0x00 ; 0 + 402: 8a f0 brmi .+34 ; 0x426 <__LOCK_REGION_LENGTH__+0x26> + 404: e1 f0 breq .+56 ; 0x43e <__LOCK_REGION_LENGTH__+0x3e> + 406: 88 23 and r24, r24 + 408: 4a f0 brmi .+18 ; 0x41c <__LOCK_REGION_LENGTH__+0x1c> + 40a: ee 0f add r30, r30 + 40c: ff 1f adc r31, r31 + 40e: bb 1f adc r27, r27 + 410: 66 1f adc r22, r22 + 412: 77 1f adc r23, r23 + 414: 88 1f adc r24, r24 + 416: 91 50 subi r25, 0x01 ; 1 + 418: 50 40 sbci r21, 0x00 ; 0 + 41a: a9 f7 brne .-22 ; 0x406 <__LOCK_REGION_LENGTH__+0x6> + 41c: 9e 3f cpi r25, 0xFE ; 254 + 41e: 51 05 cpc r21, r1 + 420: 70 f0 brcs .+28 ; 0x43e <__LOCK_REGION_LENGTH__+0x3e> + 422: 14 c0 rjmp .+40 ; 0x44c <__fp_inf> + 424: aa cf rjmp .-172 ; 0x37a <__fp_szero> + 426: 5f 3f cpi r21, 0xFF ; 255 + 428: ec f3 brlt .-6 ; 0x424 <__LOCK_REGION_LENGTH__+0x24> + 42a: 98 3e cpi r25, 0xE8 ; 232 + 42c: dc f3 brlt .-10 ; 0x424 <__LOCK_REGION_LENGTH__+0x24> + 42e: 86 95 lsr r24 + 430: 77 95 ror r23 + 432: 67 95 ror r22 + 434: b7 95 ror r27 + 436: f7 95 ror r31 + 438: e7 95 ror r30 + 43a: 9f 5f subi r25, 0xFF ; 255 + 43c: c1 f7 brne .-16 ; 0x42e <__LOCK_REGION_LENGTH__+0x2e> + 43e: fe 2b or r31, r30 + 440: 88 0f add r24, r24 + 442: 91 1d adc r25, r1 + 444: 96 95 lsr r25 + 446: 87 95 ror r24 + 448: 97 f9 bld r25, 7 + 44a: 08 95 ret + +0000044c <__fp_inf>: + 44c: 97 f9 bld r25, 7 + 44e: 9f 67 ori r25, 0x7F ; 127 + 450: 80 e8 ldi r24, 0x80 ; 128 + 452: 70 e0 ldi r23, 0x00 ; 0 + 454: 60 e0 ldi r22, 0x00 ; 0 + 456: 08 95 ret + +00000458 <__fp_nan>: + 458: 9f ef ldi r25, 0xFF ; 255 + 45a: 80 ec ldi r24, 0xC0 ; 192 + 45c: 08 95 ret + +0000045e <__fp_pscA>: + 45e: 00 24 eor r0, r0 + 460: 0a 94 dec r0 + 462: 16 16 cp r1, r22 + 464: 17 06 cpc r1, r23 + 466: 18 06 cpc r1, r24 + 468: 09 06 cpc r0, r25 + 46a: 08 95 ret + +0000046c <__fp_pscB>: + 46c: 00 24 eor r0, r0 + 46e: 0a 94 dec r0 + 470: 12 16 cp r1, r18 + 472: 13 06 cpc r1, r19 + 474: 14 06 cpc r1, r20 + 476: 05 06 cpc r0, r21 + 478: 08 95 ret + +0000047a <__fp_round>: + 47a: 09 2e mov r0, r25 + 47c: 03 94 inc r0 + 47e: 00 0c add r0, r0 + 480: 11 f4 brne .+4 ; 0x486 <__fp_round+0xc> + 482: 88 23 and r24, r24 + 484: 52 f0 brmi .+20 ; 0x49a <__fp_round+0x20> + 486: bb 0f add r27, r27 + 488: 40 f4 brcc .+16 ; 0x49a <__fp_round+0x20> + 48a: bf 2b or r27, r31 + 48c: 11 f4 brne .+4 ; 0x492 <__fp_round+0x18> + 48e: 60 ff sbrs r22, 0 + 490: 04 c0 rjmp .+8 ; 0x49a <__fp_round+0x20> + 492: 6f 5f subi r22, 0xFF ; 255 + 494: 7f 4f sbci r23, 0xFF ; 255 + 496: 8f 4f sbci r24, 0xFF ; 255 + 498: 9f 4f sbci r25, 0xFF ; 255 + 49a: 08 95 ret + +0000049c <_exit>: + 49c: f8 94 cli + +0000049e <__stop_program>: + 49e: ff cf rjmp .-2 ; 0x49e <__stop_program> diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.map b/PoolClockAirTemp/Debug/PoolClockAirTemp.map new file mode 100644 index 0000000..dc3c584 --- /dev/null +++ b/PoolClockAirTemp/Debug/PoolClockAirTemp.map @@ -0,0 +1,582 @@ +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/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + main.o (__fixunssfsi) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + main.o (__floatsisf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) (__fp_splitA) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) (__fp_zero) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + main.o (__mulsf3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) (__mulsf3x) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_inf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_nan) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_pscA) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) (__fp_pscB) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) (__fp_round) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text.vSetDisplayDigits + 0x00000000 0xc 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/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\libgcc.a(_clear_bss.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/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o +LOAD 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/avr4\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/avr4\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/avr4\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/avr4\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4\libatmega88pa.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 0x4a0 + *(.vectors) + .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000034 . = ALIGN (0x2) + 0x00000034 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000034 0x0 linker stubs + *(.trampolines*) + 0x00000034 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000034 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000034 __ctors_start = . + *(.ctors) + 0x00000034 __ctors_end = . + 0x00000034 __dtors_start = . + *(.dtors) + 0x00000034 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000034 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000034 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000034 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + 0x00000040 __do_copy_data + .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + 0x00000056 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000066 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init9) + *(.text) + .text 0x0000006a 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x0000006a __vector_22 + 0x0000006a __vector_1 + 0x0000006a __vector_24 + 0x0000006a __vector_12 + 0x0000006a __bad_interrupt + 0x0000006a __vector_6 + 0x0000006a __vector_3 + 0x0000006a __vector_23 + 0x0000006a __vector_25 + 0x0000006a __vector_13 + 0x0000006a __vector_17 + 0x0000006a __vector_19 + 0x0000006a __vector_7 + 0x0000006a __vector_5 + 0x0000006a __vector_4 + 0x0000006a __vector_9 + 0x0000006a __vector_2 + 0x0000006a __vector_21 + 0x0000006a __vector_15 + 0x0000006a __vector_8 + 0x0000006a __vector_14 + 0x0000006a __vector_10 + 0x0000006a __vector_16 + 0x0000006a __vector_18 + 0x0000006a __vector_20 + 0x0000006c . = ALIGN (0x2) + *(.text.*) + .text.__vector_11 + 0x0000006c 0x6e main.o + 0x0000006c __vector_11 + .text.vInit 0x000000da 0x2c main.o + 0x000000da vInit + .text.vSetValue + 0x00000106 0x26 main.o + 0x00000106 vSetValue + .text.u8DS18B20_Reset + 0x0000012c 0x30 main.o + 0x0000012c u8DS18B20_Reset + .text.vDS18B20_WriteBit + 0x0000015c 0x22 main.o + 0x0000015c vDS18B20_WriteBit + .text.vDS18B20_WriteByte + 0x0000017e 0x1a main.o + 0x0000017e vDS18B20_WriteByte + .text.u8DS18B20_ReadBit + 0x00000198 0x2c main.o + 0x00000198 u8DS18B20_ReadBit + .text.u8DS18B20_ReadByte + 0x000001c4 0x22 main.o + 0x000001c4 u8DS18B20_ReadByte + .text.main 0x000001e6 0x7c main.o + 0x000001e6 main + .text.avr-libc.fplib + 0x00000262 0x58 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fixunssfsi.o) + 0x00000262 __fixunssfsi + .text.avr-libc.fplib + 0x000002ba 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(floatsisf.o) + 0x000002ba __floatunsisf + 0x000002be __floatsisf + .text.avr-libc.fplib + 0x00000334 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_split3.o) + 0x00000334 __fp_split3 + 0x00000344 __fp_splitA + .text.avr-libc.fplib + 0x00000378 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_zero.o) + 0x00000378 __fp_zero + 0x0000037a __fp_szero + .text.avr-libc.fplib + 0x00000386 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3.o) + 0x00000386 __mulsf3 + .text.avr-libc.fplib + 0x0000038a 0xc2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(mulsf3x.o) + 0x0000039e __mulsf3x + 0x000003a2 __mulsf3_pse + .text.avr-libc.fplib + 0x0000044c 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_inf.o) + 0x0000044c __fp_inf + .text.avr-libc.fplib + 0x00000458 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_nan.o) + 0x00000458 __fp_nan + .text.avr-libc.fplib + 0x0000045e 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscA.o) + 0x0000045e __fp_pscA + .text.avr-libc.fplib + 0x0000046c 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_pscB.o) + 0x0000046c __fp_pscB + .text.avr-libc.fplib + 0x0000047a 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr4\libm.a(fp_round.o) + 0x0000047a __fp_round + 0x0000049c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000049c 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + 0x0000049c _exit + 0x0000049c exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000049c 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x000004a0 _etext = . + +.data 0x00800100 0x16 load address 0x000004a0 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.g_au8Digits + 0x00800100 0x3 main.o + 0x00800100 g_au8Digits + *(.rodata) + *(.rodata*) + .rodata.g_au8Symbols + 0x00800103 0x12 main.o + *(.gnu.linkonce.d*) + 0x00800116 . = ALIGN (0x2) + *fill* 0x00800115 0x1 + 0x00800116 _edata = . + 0x00800116 PROVIDE (__data_end, .) + +.bss 0x00800116 0x1 + 0x00800116 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.g_u8ISRDigitSelect + 0x00800116 0x1 main.o + 0x00800116 g_u8ISRDigitSelect + *(COMMON) + 0x00800117 PROVIDE (__bss_end, .) + 0x000004a0 __data_load_start = LOADADDR (.data) + 0x000004b6 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800117 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800117 _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 main.o + 0x31 (size before relaxing) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x68 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x68 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0xcee + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_info 0x000005f4 0x6fa main.o + +.debug_abbrev 0x00000000 0x84b + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_abbrev 0x000005a2 0x2a9 main.o + +.debug_line 0x00000000 0x4ba + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_line 0x00000133 0x387 main.o + +.debug_frame 0x00000000 0xec + *(.debug_frame) + .debug_frame 0x00000000 0xec main.o + +.debug_str 0x00000000 0x4d2 + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_str 0x00000208 0x2ca main.o + 0x2fe (size before relaxing) + +.debug_loc 0x00000000 0x59b + *(.debug_loc) + .debug_loc 0x00000000 0x59b 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 0x58 + *(.debug_ranges) + .debug_ranges 0x00000000 0x58 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(PoolClockAirTemp.elf elf32-avr) +LOAD linker stubs diff --git a/PoolClockAirTemp/Debug/PoolClockAirTemp.srec b/PoolClockAirTemp/Debug/PoolClockAirTemp.srec new file mode 100644 index 0000000..e595036 --- /dev/null +++ b/PoolClockAirTemp/Debug/PoolClockAirTemp.srec @@ -0,0 +1,78 @@ +S0180000506F6F6C436C6F636B41697254656D702E73726563D4 +S113000019C033C032C031C030C02FC02EC02DC083 +S11300102CC02BC02AC02AC028C027C026C025C097 +S113002024C023C022C021C020C01FC01EC01DC0C8 +S11300301CC01BC011241FBECFEFD4E0DEBFCDBF58 +S113004011E0A0E0B1E0E0EAF4E002C005900D9216 +S1130050A631B107D9F721E0A6E1B1E001C01D92B4 +S1130060A731B207E1F7BFD019C2CACF1F920F92CE +S11300700FB60F9211248F939F93EF93FF9315B8AC +S11300801BB88DE08A95F1F7000081E090E00090C4 +S1130090160102C0880F991F0A94E2F785B9E0910E +S11300A01601F0E0E050FF4FE081F0E0ED5FFE4F1D +S11300B080818BB9809116018F5F833018F480930F +S11300C0160102C010921601FF91EF919F918F913A +S11300D00F900FBE0F901F9018958FEF8AB987E08D +S11300E084B9109280008AE08093810084EC99E0C6 +S11300F09093890080938800EFE6F0E0808182602D +S11301008083789408959DEC899F912D1124969570 +S113011096959695E0E0F1E09283990F292F220FAE +S1130120220F920F891B81836083089543983B9A21 +S11301308FE599E00197F1F700C000003B98EBE2EE +S1130140F1E03197F1F700C0000086B1E3E3F8E095 +S11301503197F1F700C000008870089543983B9AE6 +S113016096E09A95F1F700C0813009F43B988BE250 +S113017091E00197F1F700C000003B980895CF93F8 +S1130180DF93D82FC8E08D2F8170E8DFD695C1505A +S1130190D1F7DF91CF91089543983B9A86E08A95F1 +S11301A0F1F700C03B98EDE5EA95F1F7000086B160 +S11301B0E0EEF0E03197F1F700C0000083FB882700 +S11301C080F90895CF93DF93D8E0C0E0E5DF20E81D +S11301D0829FC0011124C695C82BD150B9F78C2F2A +S11301E0DF91CF91089579DFE0E0F1E081E182834E +S11301F0818380832FEF8BE792E9215080409040E8 +S1130200E1F700C0000092DF8CECB9DF84E4B7DFD3 +S1130210C3DF8823E9F38ADF8CECB1DF8EEBAFDF39 +S1130220D1DFC82FCFDF682F70E0762F66276C0FE1 +S1130230711D072E000C880B990B41D020E030E093 +S113024040E85DE3A0D00DD0862F6EE05CDF2FE7A1 +S113025084E89EE1215080409040E1F700C0000016 +S1130260D2CF70D088F09F5790F0B92F9927B7510B +S1130270A0F0D1F0660F771F881F991F1AF0BA9566 +S1130280C9F712C0B13081F077D0B1E0089574C0DD +S1130290672F782F8827B85F39F0B93FCCF386955C +S11302A077956795B395D9F73EF4909580957095B9 +S11302B061957F4F8F4F9F4F0895E89409C097FB36 +S11302C03EF490958095709561957F4F8F4F9F4F29 +S11302D09923A9F0F92F96E9BB279395F69587956D +S11302E077956795B795F111F8CFFAF4BB0F11F430 +S11302F060FF1BC06F5F7F4F8F4F9F4F16C08823D7 +S113030011F096E911C0772321F09EE8872F762F0C +S113031005C0662371F096E8862F70E060E02AF04D +S11303209A95660F771F881FDAF7880F9695879539 +S113033097F9089557FD9058440F551F59F05F3FA2 +S113034071F04795880F97FB991F61F09F3F79F0F3 +S113035087950895121613061406551FF2CF469575 +S1130360F1DF08C0161617061806991FF1CF8695F7 +S11303707105610508940895E894BB2766277727DB +S1130380CB0197F908950BD078C069D028F06ED0CE +S113039018F0952309F05AC05FC01124EECFCADFCC +S11303A0A0F3959FD1F3950F50E0551F629FF00184 +S11303B0729FBB27F00DB11D639FAA27F00DB11DDD +S11303C0AA1F649F6627B00DA11D661F829F222766 +S11303D0B00DA11D621F739FB00DA11D621F839FED +S11303E0A00D611D221F749F3327A00D611D231FC3 +S11303F0849F600D211D822F762F6A2F11249F5711 +S113040050408AF0E1F088234AF0EE0FFF1FBB1F33 +S1130410661F771F881F91505040A9F79E3F5105D2 +S113042070F014C0AACF5F3FECF3983EDCF38695DE +S113043077956795B795F795E7959F5FC1F7FE2B7D +S1130440880F911D9695879597F9089597F99F6759 +S113045080E870E060E008959FEF80EC0895002448 +S11304600A941616170618060906089500240A9415 +S113047012161306140605060895092E0394000C9B +S113048011F4882352F0BB0F40F4BF2B11F460FF2A +S113049004C06F5F7F4F8F4F9F4F0895F894FFCF35 +S11304A0101010FC24BAAE66CEDEA4FEEE161EDAE0 +S10904B012ADF30002008E +S9030000FC diff --git a/PoolClockAirTemp/Debug/main.d b/PoolClockAirTemp/Debug/main.d new file mode 100644 index 0000000..58005fb --- /dev/null +++ b/PoolClockAirTemp/Debug/main.d @@ -0,0 +1,49 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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 \ + 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 + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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: + +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: diff --git a/PoolClockAirTemp/Debug/main.o b/PoolClockAirTemp/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..3cefdee37c37401d6b4b60e432ad7eb28d8a7e48 GIT binary patch literal 16808 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 + + + + + + Device + Startup + + + Atmel + 1.2.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom88pa.h + + header + C + PWoJcvZZTeGBgzC7OP4j4w== + + include/avr/iom88pa.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.c + template + source + C Exe + ScNpxY7iwOxCD8VURzPFGA== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa + + libraryPrefix + GCC + + + gcc/dev/atmega88pa + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/Atmel.ATmega_DFP.pdsc + 1.2.132 + true + ATmega88PA + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/PoolClockAirTemp/PoolClockAirTemp.cproj b/PoolClockAirTemp/PoolClockAirTemp.cproj new file mode 100644 index 0000000..1a93928 --- /dev/null +++ b/PoolClockAirTemp/PoolClockAirTemp.cproj @@ -0,0 +1,126 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + {0c83e3a6-3ddd-4274-8944-ae653dc4ac74} + ATmega88PA + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + PoolClockAirTemp + PoolClockAirTemp + PoolClockAirTemp + Native + true + false + true + true + + + true + + 2 + 0 + + + + + + + + + + + + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Default (-Wa,-g) + + + + + + compile + + + + \ No newline at end of file diff --git a/PoolClockAirTemp/main.c b/PoolClockAirTemp/main.c new file mode 100644 index 0000000..3dfc24b --- /dev/null +++ b/PoolClockAirTemp/main.c @@ -0,0 +1,302 @@ +#include +#include +#include +#define F_CPU 20000000UL //20 MHz +#include + +NO LONGER USED + +/* 7-Segment display: */ +#define NUM_DIGITS 3U //3 Digits +#define DIGIT_TENS 2U //left +#define DIGIT_ONES 1U //middle +#define DIGIT_UNIT 0U //right +#define SELECT_DIGIT(digit) (1U << digit) + +/* DS18B20 peripherals: */ +#define DS18B20_PORT PORTC +#define DS18B20_DDR DDRC +#define DS18B20_PIN PINC +#define DS18B20_DQ PINC3 + +/* DS18B20 commands: */ +#define DS18B20_CMD_CONVERTTEMP 0x44U +#define DS18B20_CMD_RSCRATCHPAD 0xBEU +#define DS18B20_CMD_WSCRATCHPAD 0x4EU +#define DS18B20_CMD_CPYSCRATCHPAD 0x48U +#define DS18B20_CMD_RECEEPROM 0xB8U +#define DS18B20_CMD_RPWRSUPPLY 0xB4U +#define DS18B20_CMD_SEARCHROM 0xF0U +#define DS18B20_CMD_READROM 0x33U +#define DS18B20_CMD_MATCHROM 0x55U +#define DS18B20_CMD_SKIPROM 0xCCU +#define DS18B20_CMD_ALARMSEARCH 0xECU + +/* Symbol indexes: */ +#define SYM_n 10U +#define SYM_o 11U +#define SYM_E 12U +#define SYM_R 13U +#define SYM_DEG_CELCIUS 14U +#define SYM_P_P 15U +#define SYM_OFF 16U +#define SYM_DASH 17U + +/* + 7-Segment Layout: + + A + F B + G + E C + D P + + Pin 7 6 5 4 3 2 1 0 + Segment A F B E D C G P +*/ +static uint8_t g_au8Symbols[18U] = +{ +/* 00 */ 0b11111100U, //0 (ABCDEF) +/* 01 */ 0b00100100U, //1 (BC) +/* 02 */ 0b10111010U, //2 (ABDEG) +/* 03 */ 0b10101110U, //3 (ABCDG) +/* 04 */ 0b01100110U, //4 (BCFG) +/* 05 */ 0b11001110U, //5 (ACDFG) +/* 06 */ 0b11011110U, //6 (ACDEFG) +/* 07 */ 0b10100100U, //7 (ABC) +/* 08 */ 0b11111110U, //8 (ABCDEFG) +/* 09 */ 0b11101110U, //9 (ABCDFG) +/* 10 */ 0b00010110U, //n (CEG) SYM_n +/* 11 */ 0b00011110U, //o (CDEG) SYM_o +/* 12 */ 0b11011010U, //E (ADEFG) SYM_E +/* 13 */ 0b00010010U, //r (EG) SYM_r +/* 14 */ 0b10101101U, //degC (ABCDP) SYM_DEG_CELCIUS +/* 15 */ 0b11110011U, //P. (ABEFGP) SYM_P_P +/* 16 */ 0b00000000U, //OFF SYM_OFF +/* 17 */ 0b00000010U //- (G) SYM_DASH +}; + +uint8_t g_u8ISRDigitSelect = 0U; +uint8_t g_au8Digits[3U] = +{ + SYM_OFF, //unit + SYM_OFF, //ones + SYM_OFF //tens +}; + +void vInit( void ); +void vSetValue( uint8_t u8Value, uint8_t u8Unit ); +void vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ); +uint8_t u8DS18B20_Reset( void ); +void vDS18B20_WriteByte( uint8_t u8Byte ); +void vDS18B20_WriteBit( uint8_t u8Bit ); +uint8_t u8DS18B20_ReadByte( void ); +uint8_t u8DS18B20_ReadBit( void ); + + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + } +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main(void) +{ + uint8_t u8TempLo, u8TempHi; + float f32Temperature; + + /* Init I/O: */ + vInit(); + + /* Set default value: */ + vSetDisplayDigits( SYM_DASH, SYM_DASH, SYM_DASH ); + + /* wait 3 seconds for DS18B20 sensor */ + _delay_ms(2400); + + while (1) + { + (void) u8DS18B20_Reset(); + vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + vDS18B20_WriteByte( DS18B20_CMD_CONVERTTEMP ); + while ( !u8DS18B20_ReadBit() ); + (void) u8DS18B20_Reset(); + vDS18B20_WriteByte( DS18B20_CMD_SKIPROM ); + vDS18B20_WriteByte( DS18B20_CMD_RSCRATCHPAD ); + u8TempLo = u8DS18B20_ReadByte(); + u8TempHi = u8DS18B20_ReadByte(); + f32Temperature = ((u8TempHi << 8) + u8TempLo) * 0.0625; + vSetValue( (uint8_t) f32Temperature, SYM_DEG_CELCIUS ); + _delay_ms(500); + } //end while(1) +} + +/************************************************************************/ +/* Initialize inputs and outputs */ +/************************************************************************/ +void vInit( void ) +{ + /* Port D - Pins 0-7: Outputs */ + DDRD = 0b11111111U; + + /* Port B - Pins 0-2: Outputs */ + DDRB = 0b00000111U; + + /* 16-bit TIMER1 in CTC mode + * prescaler = 8 + * 20 MHz / 8 = 2.5 MHz + * Compare value = 2500 => 1 ms IRQ + */ + TCCR1A = 0U; + TCCR1B = (1<>= 1U; + } + + return; //void +} + + +/************************************************************************/ +/* Write single bit to DS18B20 (61 us) */ +/************************************************************************/ +void vDS18B20_WriteBit( uint8_t u8Bit ) +{ + //low for 1 us + DS18B20_PORT &= ~ (1U<>= 1U; + n |= (u8DS18B20_ReadBit()<<7U); + } + + return n; +} + +/************************************************************************/ +/* Read single bit from DS18B20 (60 us) */ +/************************************************************************/ +uint8_t u8DS18B20_ReadBit( void ) +{ + uint8_t u8Bit = 0U; + + //low for 1 us + DS18B20_PORT &= ~ (1U< "PoolClockHumidity.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 "PoolClockHumidity.elf" "PoolClockHumidity.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "PoolClockHumidity.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "PoolClockHumidity.elf" "PoolClockHumidity.a" "PoolClockHumidity.hex" "PoolClockHumidity.lss" "PoolClockHumidity.eep" "PoolClockHumidity.map" "PoolClockHumidity.srec" "PoolClockHumidity.usersignatures" + \ No newline at end of file diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.eep b/PoolClockHumidity/Debug/PoolClockHumidity.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/PoolClockHumidity/Debug/PoolClockHumidity.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.elf b/PoolClockHumidity/Debug/PoolClockHumidity.elf new file mode 100644 index 0000000000000000000000000000000000000000..22981de55e3073f2f011a790b6f86bc2eed0b753 GIT binary patch literal 29748 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 R(8g(U<=cvjc=-VB`0semK92wZ literal 0 HcmV?d00001 diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.hex b/PoolClockHumidity/Debug/PoolClockHumidity.hex new file mode 100644 index 0000000..efe28c8 --- /dev/null +++ b/PoolClockHumidity/Debug/PoolClockHumidity.hex @@ -0,0 +1,148 @@ +:1000000019C033C032C031C030C02FC02EC02DC087 +:100010002CC02BC02AC081C028C027C026C025C044 +:1000200024C023C022C021C020C01FC01EC01DC0CC +:100030001CC01BC011241FBECFEFD4E0DEBFCDBF5C +:1000400011E0A0E0B1E0E0E0F9E002C005900D921F +:10005000A432B107D9F721E0A4E2B1E001C01D92BA +:10006000AC32B207E1F71DD349C4CACF8FEF8AB9CA +:1000700087E084B980E388B93B9843981092800068 +:100080008AE08093810084EC99E0909389008093CA +:100090008800EFE6F0E080818260808378940895A4 +:1000A0009DEC899F912D1124969596959695E0E06B +:1000B000F1E09283990F292F220F220F920F891BB3 +:1000C000818360830895349906C080912B018F5FEE +:1000D00080932B0102C010922B0135990AC08091A8 +:1000E0002A018F5F80932A0190912B01933368F04E +:1000F00006C010922A0180912B01833368F0109280 +:100100002B0181E0809329010895833328F0109218 +:100110002A0182E08093290108951F920F920FB661 +:100120000F9211242F933F934F935F936F937F937D +:100130008F939F93AF93BF93EF93FF9315B81BB823 +:100140008DE08A95F1F7000081E090E000902401B5 +:1001500002C0880F991F0A94E2F785B9E091240143 +:10016000F0E0E050FF4FE081F0E0ED5FFE4F808176 +:100170008BB9809124018F5F833018F48093240120 +:1001800002C0109224019FDFFF91EF91BF91AF91C8 +:100190009F918F917F916F915F914F913F912F919F +:1001A0000F900FBE0F901F901895E0E0F1E090E1E6 +:1001B0009283918390832FEB35E444E021503040CB +:1001C0004040E1F700C00000813021F0823009F4A6 +:1001D000E2C0C1C1E0E0F1E022E1228390E191833D +:1001E00090835FEB65E474E0515060407040E1F74C +:1001F00000C000003CE03283918390838FEBA5E444 +:1002000044E08150A0404040E1F700C0000088E099 +:100210008283918390835FEB65E474E0515060408A +:100220007040E1F700C00000828321839083AFEB30 +:1002300045E454E0A15040405040E1F700C00000C8 +:100240008283318390836FEB75E4A4E0615070404A +:10025000A040E1F700C000008283818390834FEBD0 +:1002600055E464E0415050406040E1F700C00000B8 +:100270008283818341E040837FEBA5E454E07150A9 +:10028000A0405040E1F700C000008283818353E02A +:1002900050836FEB75E4A4E061507040A040E1F73B +:1002A00000C000008283818380836FEB75E4A4E04B +:1002B00061507040A040E1F700C00000828381835C +:1002C00080836FEB75E4A4E061507040A040E1F7DB +:1002D00000C000008283818350835FEB65E474E09B +:1002E000515060407040E1F700C00000828381837C +:1002F0004083AFEB45E454E0A15040405040E1F76B +:1003000000C000008283818390836FEB75E4A4E0DA +:1003100061507040A040E1F700C00000828331834B +:1003200090834FEB55E464E0415050406040E1F76A +:1003300000C000008283218390837FEBA5E444E02A +:100340007150A0404040E1F700C0000082839183DB +:1003500090835FEB65E474E0515060407040E1F7DA +:1003600000C000003283918390838FEBA5E434E0DA +:100370008150A0403040E1F700C00000228391830B +:1003800090834FEB55E464E0415050406040E1F70A +:1003900000C00000E0C0E0E0F1E022E1228380E163 +:1003A000818380837FEB95E4A4E071509040A0406E +:1003B000E1F700C000003CE03283818380834FEB93 +:1003C00055E464E0415050406040E1F700C0000057 +:1003D00098E09283818380837FEBA5E444E07150B1 +:1003E000A0404040E1F700C0000092832183808359 +:1003F0005FEB65E474E0515060407040E1F700C08D +:100400000000928331838083AFEB45E454E0A15038 +:1004100040405040E1F700C0000092839183808308 +:100420006FEB75E4A4E061507040A040E1F700C0BC +:1004300000009283918341E040835FEB65E474E0C8 +:10044000515060407040E1F700C0000092839183FA +:1004500053E05083AFEB65E474E0A150604070401E +:10046000E1F700C00000928391839083AFEB65E4D5 +:1004700074E0A15060407040E1F700C0000052837A +:1004800091839083AFEB65E474E0A15060407040CD +:10049000E1F700C00000428391839083AFEB65E4F5 +:1004A00074E0A15060407040E1F700C0000082831A +:1004B00091839083AFEB65E474E0A150604070409D +:1004C000E1F700C00000828351839083AFEB55E4D5 +:1004D00064E0A15050406040E1F700C0000082831A +:1004E000418390837FEBA5E444E07150A0404040FD +:1004F000E1F700C000008283818390835FEB65E4B5 +:1005000074E0515060407040E1F700C00000828309 +:10051000818330839FEBA5E434E09150A0403040CC +:10052000E1F700C000008283818320834FEB55E414 +:1005300064E0415050406040E1F700C00000828319 +:10054000818380837FEB85E494E07150804090400C +:10055000E1F700C00000E0E0F1E080E18283818308 +:100560008083AFEB25E434E0A15020403040E1F738 +:1005700000C0000008950F931F93CF93DF9300D026 +:1005800000D01F92CDB7DEB73B9889EC07C036E0AC +:100590003A95F1F700C0815009F46EC03399F7CF56 +:1005A00086E507C096E09A95F1F700C0815009F4FE +:1005B00065C0339BF7CF86E507C0A6E0AA95F1F7A3 +:1005C00000C0815009F45CC03399F7CFFE01319629 +:1005D00085E0DF011D928A95E9F7AE014A5F5F4F22 +:1005E00022C0B6E0BA95F1F700C0915011F44AC0AC +:1005F00098E3339BF6CF38EC3A95F1F7220F339915 +:1006000008C00BC0A6E0AA95F1F700C0915011F404 +:100610003BC09EE23399F6CF2160815049F7219388 +:100620004E175F0719F088E020E0E2CFA981B0E023 +:10063000EA81F0E06B8170E04C8150E09D012E0F6B +:100640003F1F260F371F240F351F33270D8110E062 +:1006500020173107D9F4BA2FAA27EA0FFB1FF0930E +:100660002801E0932701762F6627460F571F5093E6 +:100670002601409325010BC082E009C083E007C03A +:1006800084E005C085E003C086E001C087E00F90EC +:100690000F900F900F900F90DF91CF911F910F91BE +:1006A0000895E4DCE0E0F1E090E1928391839083AF +:1006B000AFE4B3EC1197F1F700C0000083E182834F +:1006C00091839083BFE70FE412E1B15000401040E6 +:1006D000E1F700C000008283818390832FE73FE42D +:1006E00042E1215030404040E1F700C000008283E9 +:1006F000818380838FE79FE4A2E181509040A040F6 +:10070000E1F700C0000035E080E123E1D9E1C7E076 +:10071000BAE196E1ABE17CE16DE15EE182832183A8 +:10072000D0830FEB15E444E0015010404040E1F766 +:1007300000C0000082838183C0830FEB15E444E096 +:10074000015010404040E1F700C0000082838183E7 +:10075000B0830FEB15E444E0015010404040E1F756 +:1007600000C0000082839183A0830FEB15E444E076 +:10077000015010404040E1F700C000009283918397 +:1007800090830FEB15E444E0015010404040E1F746 +:1007900000C000007283918380830FEB15E444E076 +:1007A000015010404040E1F700C0000062838183A7 +:1007B00080830FEB15E444E0015010404040E1F726 +:1007C00000C000005283818380830FEB15E444E076 +:1007D000015010404040E1F700C000000FE10283EB +:1007E000218380831FEB45E404E01150404000402A +:1007F000E1F700C000002283218320831FEB45E442 +:1008000004E0115040400040E1F700C000003150CA +:1008100009F084CFE0E0F1E080E18283818380838E +:100820001FEF2EE934E2115020403040E1F700C0C4 +:100830000000EF010CE010E1809129018130B1F15D +:1008400020F0823009F440C0F9CF339B25C03B9A99 +:1008500043984FE788E391E0415080409040E1F7B2 +:1008600000C0000088DE811110C020912701309166 +:100870002801ADECBCEC36D096958795969587957A +:10088000969587956FE00CDC03C00A8389831883F3 +:10089000809129018111D0CFAFE7B4E82EE1A150BA +:1008A000B0402040E1F700C00000C6CF81E07DDC11 +:1008B000109229013FEF44E38CE0315040408040EA +:1008C000E1F700C00000B8CF82E06FDC1092290190 +:1008D0009FEFA4E3BCE09150A040B040E1F700C01E +:1008E0000000AACFA29FB001B39FC001A39F01D077 +:1008F000B29F700D811D1124911D0895F894FFCFB2 +:10090000101010FC24BAAE66CEDEA4FEEE161EDA7F +:1009100012ADF3000250802004081040A02C0C18E7 +:0409200058D0C000EB +:00000001FF diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.lss b/PoolClockHumidity/Debug/PoolClockHumidity.lss new file mode 100644 index 0000000..13dd833 --- /dev/null +++ b/PoolClockHumidity/Debug/PoolClockHumidity.lss @@ -0,0 +1,1958 @@ + +PoolClockHumidity.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000024 00800100 00000900 00000994 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00000900 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000008 00800124 00800124 000009b8 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 000009b8 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000009e8 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000058 00000000 00000000 00000a28 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 0000228b 00000000 00000000 00000a80 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00000838 00000000 00000000 00002d0b 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000ba4 00000000 00000000 00003543 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000f8 00000000 00000000 000040e8 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 000004ef 00000000 00000000 000041e0 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 00001e2d 00000000 00000000 000046cf 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 00000168 00000000 00000000 000064fc 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end> + 2: 33 c0 rjmp .+102 ; 0x6a <__bad_interrupt> + 4: 32 c0 rjmp .+100 ; 0x6a <__bad_interrupt> + 6: 31 c0 rjmp .+98 ; 0x6a <__bad_interrupt> + 8: 30 c0 rjmp .+96 ; 0x6a <__bad_interrupt> + a: 2f c0 rjmp .+94 ; 0x6a <__bad_interrupt> + c: 2e c0 rjmp .+92 ; 0x6a <__bad_interrupt> + e: 2d c0 rjmp .+90 ; 0x6a <__bad_interrupt> + 10: 2c c0 rjmp .+88 ; 0x6a <__bad_interrupt> + 12: 2b c0 rjmp .+86 ; 0x6a <__bad_interrupt> + 14: 2a c0 rjmp .+84 ; 0x6a <__bad_interrupt> + 16: 81 c0 rjmp .+258 ; 0x11a <__vector_11> + 18: 28 c0 rjmp .+80 ; 0x6a <__bad_interrupt> + 1a: 27 c0 rjmp .+78 ; 0x6a <__bad_interrupt> + 1c: 26 c0 rjmp .+76 ; 0x6a <__bad_interrupt> + 1e: 25 c0 rjmp .+74 ; 0x6a <__bad_interrupt> + 20: 24 c0 rjmp .+72 ; 0x6a <__bad_interrupt> + 22: 23 c0 rjmp .+70 ; 0x6a <__bad_interrupt> + 24: 22 c0 rjmp .+68 ; 0x6a <__bad_interrupt> + 26: 21 c0 rjmp .+66 ; 0x6a <__bad_interrupt> + 28: 20 c0 rjmp .+64 ; 0x6a <__bad_interrupt> + 2a: 1f c0 rjmp .+62 ; 0x6a <__bad_interrupt> + 2c: 1e c0 rjmp .+60 ; 0x6a <__bad_interrupt> + 2e: 1d c0 rjmp .+58 ; 0x6a <__bad_interrupt> + 30: 1c c0 rjmp .+56 ; 0x6a <__bad_interrupt> + 32: 1b c0 rjmp .+54 ; 0x6a <__bad_interrupt> + +00000034 <__ctors_end>: + 34: 11 24 eor r1, r1 + 36: 1f be out 0x3f, r1 ; 63 + 38: cf ef ldi r28, 0xFF ; 255 + 3a: d4 e0 ldi r29, 0x04 ; 4 + 3c: de bf out 0x3e, r29 ; 62 + 3e: cd bf out 0x3d, r28 ; 61 + +00000040 <__do_copy_data>: + 40: 11 e0 ldi r17, 0x01 ; 1 + 42: a0 e0 ldi r26, 0x00 ; 0 + 44: b1 e0 ldi r27, 0x01 ; 1 + 46: e0 e0 ldi r30, 0x00 ; 0 + 48: f9 e0 ldi r31, 0x09 ; 9 + 4a: 02 c0 rjmp .+4 ; 0x50 <__do_copy_data+0x10> + 4c: 05 90 lpm r0, Z+ + 4e: 0d 92 st X+, r0 + 50: a4 32 cpi r26, 0x24 ; 36 + 52: b1 07 cpc r27, r17 + 54: d9 f7 brne .-10 ; 0x4c <__do_copy_data+0xc> + +00000056 <__do_clear_bss>: + 56: 21 e0 ldi r18, 0x01 ; 1 + 58: a4 e2 ldi r26, 0x24 ; 36 + 5a: b1 e0 ldi r27, 0x01 ; 1 + 5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start> + +0000005e <.do_clear_bss_loop>: + 5e: 1d 92 st X+, r1 + +00000060 <.do_clear_bss_start>: + 60: ac 32 cpi r26, 0x2C ; 44 + 62: b2 07 cpc r27, r18 + 64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop> + 66: 1d d3 rcall .+1594 ; 0x6a2
+ 68: 49 c4 rjmp .+2194 ; 0x8fc <_exit> + +0000006a <__bad_interrupt>: + 6a: ca cf rjmp .-108 ; 0x0 <__vectors> + +0000006c : +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + g_au8Digits[DIGIT_ONES] = u8Ones; + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6c: 8f ef ldi r24, 0xFF ; 255 + 6e: 8a b9 out 0x0a, r24 ; 10 + 70: 87 e0 ldi r24, 0x07 ; 7 + 72: 84 b9 out 0x04, r24 ; 4 + 74: 80 e3 ldi r24, 0x30 ; 48 + 76: 88 b9 out 0x08, r24 ; 8 + 78: 3b 98 cbi 0x07, 3 ; 7 + 7a: 43 98 cbi 0x08, 3 ; 8 + 7c: 10 92 80 00 sts 0x0080, r1 ; 0x800080 <__EEPROM_REGION_LENGTH__+0x7f0080> + 80: 8a e0 ldi r24, 0x0A ; 10 + 82: 80 93 81 00 sts 0x0081, r24 ; 0x800081 <__EEPROM_REGION_LENGTH__+0x7f0081> + 86: 84 ec ldi r24, 0xC4 ; 196 + 88: 99 e0 ldi r25, 0x09 ; 9 + 8a: 90 93 89 00 sts 0x0089, r25 ; 0x800089 <__EEPROM_REGION_LENGTH__+0x7f0089> + 8e: 80 93 88 00 sts 0x0088, r24 ; 0x800088 <__EEPROM_REGION_LENGTH__+0x7f0088> + 92: ef e6 ldi r30, 0x6F ; 111 + 94: f0 e0 ldi r31, 0x00 ; 0 + 96: 80 81 ld r24, Z + 98: 82 60 ori r24, 0x02 ; 2 + 9a: 80 83 st Z, r24 + 9c: 78 94 sei + 9e: 08 95 ret + +000000a0 : + a0: 9d ec ldi r25, 0xCD ; 205 + a2: 89 9f mul r24, r25 + a4: 91 2d mov r25, r1 + a6: 11 24 eor r1, r1 + a8: 96 95 lsr r25 + aa: 96 95 lsr r25 + ac: 96 95 lsr r25 + ae: e0 e0 ldi r30, 0x00 ; 0 + b0: f1 e0 ldi r31, 0x01 ; 1 + b2: 92 83 std Z+2, r25 ; 0x02 + b4: 99 0f add r25, r25 + b6: 29 2f mov r18, r25 + b8: 22 0f add r18, r18 + ba: 22 0f add r18, r18 + bc: 92 0f add r25, r18 + be: 89 1b sub r24, r25 + c0: 81 83 std Z+1, r24 ; 0x01 + c2: 60 83 st Z, r22 + c4: 08 95 ret + +000000c6 : +/************************************************************************/ +/* Read button status */ +/************************************************************************/ +void s_vReadButtons( void ) +{ + if ( !(PINC & (1< + { + g_u8ButtonCountTop++; + ca: 80 91 2b 01 lds r24, 0x012B ; 0x80012b + ce: 8f 5f subi r24, 0xFF ; 255 + d0: 80 93 2b 01 sts 0x012B, r24 ; 0x80012b + d4: 02 c0 rjmp .+4 ; 0xda + } + else + { + g_u8ButtonCountTop = 0U; //reset button counter + d6: 10 92 2b 01 sts 0x012B, r1 ; 0x80012b + } + + if ( !(PINC & (1< + { + g_u8ButtonCountBot++; + de: 80 91 2a 01 lds r24, 0x012A ; 0x80012a + e2: 8f 5f subi r24, 0xFF ; 255 + e4: 80 93 2a 01 sts 0x012A, r24 ; 0x80012a + else + { + g_u8ButtonCountBot = 0U; //reset button counter + } + + if ( g_u8ButtonCountTop > BUTTON_THRESHOLD ) + e8: 90 91 2b 01 lds r25, 0x012B ; 0x80012b + ec: 93 33 cpi r25, 0x33 ; 51 + ee: 68 f0 brcs .+26 ; 0x10a + f0: 06 c0 rjmp .+12 ; 0xfe + { + g_u8ButtonCountBot++; + } + else + { + g_u8ButtonCountBot = 0U; //reset button counter + f2: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + } + + if ( g_u8ButtonCountTop > BUTTON_THRESHOLD ) + f6: 80 91 2b 01 lds r24, 0x012B ; 0x80012b + fa: 83 33 cpi r24, 0x33 ; 51 + fc: 68 f0 brcs .+26 ; 0x118 + { + g_u8ButtonCountTop = 0U; //reset top counter + fe: 10 92 2b 01 sts 0x012B, r1 ; 0x80012b + g_u8Mode = MODE_ANIMATION_1; + 102: 81 e0 ldi r24, 0x01 ; 1 + 104: 80 93 29 01 sts 0x0129, r24 ; 0x800129 + 108: 08 95 ret + } + else if ( g_u8ButtonCountBot > BUTTON_THRESHOLD ) + 10a: 83 33 cpi r24, 0x33 ; 51 + 10c: 28 f0 brcs .+10 ; 0x118 + { + g_u8ButtonCountBot = 0U; //reset bottom counter + 10e: 10 92 2a 01 sts 0x012A, r1 ; 0x80012a + g_u8Mode = MODE_ANIMATION_2; + 112: 82 e0 ldi r24, 0x02 ; 2 + 114: 80 93 29 01 sts 0x0129, r24 ; 0x800129 + 118: 08 95 ret + +0000011a <__vector_11>: + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + 11a: 1f 92 push r1 + 11c: 0f 92 push r0 + 11e: 0f b6 in r0, 0x3f ; 63 + 120: 0f 92 push r0 + 122: 11 24 eor r1, r1 + 124: 2f 93 push r18 + 126: 3f 93 push r19 + 128: 4f 93 push r20 + 12a: 5f 93 push r21 + 12c: 6f 93 push r22 + 12e: 7f 93 push r23 + 130: 8f 93 push r24 + 132: 9f 93 push r25 + 134: af 93 push r26 + 136: bf 93 push r27 + 138: ef 93 push r30 + 13a: ff 93 push r31 + PORTB = 0; + 13c: 15 b8 out 0x05, r1 ; 5 + PORTD = 0; + 13e: 1b b8 out 0x0b, r1 ; 11 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 140: 8d e0 ldi r24, 0x0D ; 13 + 142: 8a 95 dec r24 + 144: f1 f7 brne .-4 ; 0x142 <__vector_11+0x28> + 146: 00 00 nop + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + 148: 81 e0 ldi r24, 0x01 ; 1 + 14a: 90 e0 ldi r25, 0x00 ; 0 + 14c: 00 90 24 01 lds r0, 0x0124 ; 0x800124 <__data_end> + 150: 02 c0 rjmp .+4 ; 0x156 <__vector_11+0x3c> + 152: 88 0f add r24, r24 + 154: 99 1f adc r25, r25 + 156: 0a 94 dec r0 + 158: e2 f7 brpl .-8 ; 0x152 <__vector_11+0x38> + 15a: 85 b9 out 0x05, r24 ; 5 + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + 15c: e0 91 24 01 lds r30, 0x0124 ; 0x800124 <__data_end> + 160: f0 e0 ldi r31, 0x00 ; 0 + 162: e0 50 subi r30, 0x00 ; 0 + 164: ff 4f sbci r31, 0xFF ; 255 + 166: e0 81 ld r30, Z + 168: f0 e0 ldi r31, 0x00 ; 0 + 16a: ed 5f subi r30, 0xFD ; 253 + 16c: fe 4f sbci r31, 0xFE ; 254 + 16e: 80 81 ld r24, Z + 170: 8b b9 out 0x0b, r24 ; 11 + g_u8ISRDigitSelect++; + 172: 80 91 24 01 lds r24, 0x0124 ; 0x800124 <__data_end> + 176: 8f 5f subi r24, 0xFF ; 255 + if (g_u8ISRDigitSelect > 2U) + 178: 83 30 cpi r24, 0x03 ; 3 + 17a: 18 f4 brcc .+6 ; 0x182 <__vector_11+0x68> + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + 17c: 80 93 24 01 sts 0x0124, r24 ; 0x800124 <__data_end> + 180: 02 c0 rjmp .+4 ; 0x186 <__vector_11+0x6c> + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + 182: 10 92 24 01 sts 0x0124, r1 ; 0x800124 <__data_end> + } + + /* Read and evaluate button status */ + s_vReadButtons(); + 186: 9f df rcall .-194 ; 0xc6 +} + 188: ff 91 pop r31 + 18a: ef 91 pop r30 + 18c: bf 91 pop r27 + 18e: af 91 pop r26 + 190: 9f 91 pop r25 + 192: 8f 91 pop r24 + 194: 7f 91 pop r23 + 196: 6f 91 pop r22 + 198: 5f 91 pop r21 + 19a: 4f 91 pop r20 + 19c: 3f 91 pop r19 + 19e: 2f 91 pop r18 + 1a0: 0f 90 pop r0 + 1a2: 0f be out 0x3f, r0 ; 63 + 1a4: 0f 90 pop r0 + 1a6: 1f 90 pop r1 + 1a8: 18 95 reti + +000001aa : +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1aa: e0 e0 ldi r30, 0x00 ; 0 + 1ac: f1 e0 ldi r31, 0x01 ; 1 + 1ae: 90 e1 ldi r25, 0x10 ; 16 + 1b0: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1b2: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1b4: 90 83 st Z, r25 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 1b6: 2f eb ldi r18, 0xBF ; 191 + 1b8: 35 e4 ldi r19, 0x45 ; 69 + 1ba: 44 e0 ldi r20, 0x04 ; 4 + 1bc: 21 50 subi r18, 0x01 ; 1 + 1be: 30 40 sbci r19, 0x00 ; 0 + 1c0: 40 40 sbci r20, 0x00 ; 0 + 1c2: e1 f7 brne .-8 ; 0x1bc + 1c4: 00 c0 rjmp .+0 ; 0x1c6 + 1c6: 00 00 nop +/************************************************************************/ +void s_vShowAnim( uint8_t u8Select ) +{ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + switch ( u8Select ) + 1c8: 81 30 cpi r24, 0x01 ; 1 + 1ca: 21 f0 breq .+8 ; 0x1d4 + 1cc: 82 30 cpi r24, 0x02 ; 2 + 1ce: 09 f4 brne .+2 ; 0x1d2 + 1d0: e2 c0 rjmp .+452 ; 0x396 + 1d2: c1 c1 rjmp .+898 ; 0x556 <__stack+0x57> +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1d4: e0 e0 ldi r30, 0x00 ; 0 + 1d6: f1 e0 ldi r31, 0x01 ; 1 + 1d8: 22 e1 ldi r18, 0x12 ; 18 + 1da: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1dc: 90 e1 ldi r25, 0x10 ; 16 + 1de: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1e0: 90 83 st Z, r25 + 1e2: 5f eb ldi r21, 0xBF ; 191 + 1e4: 65 e4 ldi r22, 0x45 ; 69 + 1e6: 74 e0 ldi r23, 0x04 ; 4 + 1e8: 51 50 subi r21, 0x01 ; 1 + 1ea: 60 40 sbci r22, 0x00 ; 0 + 1ec: 70 40 sbci r23, 0x00 ; 0 + 1ee: e1 f7 brne .-8 ; 0x1e8 + 1f0: 00 c0 rjmp .+0 ; 0x1f2 + 1f2: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 1f4: 3c e0 ldi r19, 0x0C ; 12 + 1f6: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 1f8: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 1fa: 90 83 st Z, r25 + 1fc: 8f eb ldi r24, 0xBF ; 191 + 1fe: a5 e4 ldi r26, 0x45 ; 69 + 200: 44 e0 ldi r20, 0x04 ; 4 + 202: 81 50 subi r24, 0x01 ; 1 + 204: a0 40 sbci r26, 0x00 ; 0 + 206: 40 40 sbci r20, 0x00 ; 0 + 208: e1 f7 brne .-8 ; 0x202 + 20a: 00 c0 rjmp .+0 ; 0x20c + 20c: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 20e: 88 e0 ldi r24, 0x08 ; 8 + 210: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 212: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 214: 90 83 st Z, r25 + 216: 5f eb ldi r21, 0xBF ; 191 + 218: 65 e4 ldi r22, 0x45 ; 69 + 21a: 74 e0 ldi r23, 0x04 ; 4 + 21c: 51 50 subi r21, 0x01 ; 1 + 21e: 60 40 sbci r22, 0x00 ; 0 + 220: 70 40 sbci r23, 0x00 ; 0 + 222: e1 f7 brne .-8 ; 0x21c + 224: 00 c0 rjmp .+0 ; 0x226 + 226: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 228: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 22a: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 22c: 90 83 st Z, r25 + 22e: af eb ldi r26, 0xBF ; 191 + 230: 45 e4 ldi r20, 0x45 ; 69 + 232: 54 e0 ldi r21, 0x04 ; 4 + 234: a1 50 subi r26, 0x01 ; 1 + 236: 40 40 sbci r20, 0x00 ; 0 + 238: 50 40 sbci r21, 0x00 ; 0 + 23a: e1 f7 brne .-8 ; 0x234 + 23c: 00 c0 rjmp .+0 ; 0x23e + 23e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 240: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 242: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 244: 90 83 st Z, r25 + 246: 6f eb ldi r22, 0xBF ; 191 + 248: 75 e4 ldi r23, 0x45 ; 69 + 24a: a4 e0 ldi r26, 0x04 ; 4 + 24c: 61 50 subi r22, 0x01 ; 1 + 24e: 70 40 sbci r23, 0x00 ; 0 + 250: a0 40 sbci r26, 0x00 ; 0 + 252: e1 f7 brne .-8 ; 0x24c + 254: 00 c0 rjmp .+0 ; 0x256 + 256: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 258: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 25a: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 25c: 90 83 st Z, r25 + 25e: 4f eb ldi r20, 0xBF ; 191 + 260: 55 e4 ldi r21, 0x45 ; 69 + 262: 64 e0 ldi r22, 0x04 ; 4 + 264: 41 50 subi r20, 0x01 ; 1 + 266: 50 40 sbci r21, 0x00 ; 0 + 268: 60 40 sbci r22, 0x00 ; 0 + 26a: e1 f7 brne .-8 ; 0x264 + 26c: 00 c0 rjmp .+0 ; 0x26e + 26e: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 270: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 272: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 274: 41 e0 ldi r20, 0x01 ; 1 + 276: 40 83 st Z, r20 + 278: 7f eb ldi r23, 0xBF ; 191 + 27a: a5 e4 ldi r26, 0x45 ; 69 + 27c: 54 e0 ldi r21, 0x04 ; 4 + 27e: 71 50 subi r23, 0x01 ; 1 + 280: a0 40 sbci r26, 0x00 ; 0 + 282: 50 40 sbci r21, 0x00 ; 0 + 284: e1 f7 brne .-8 ; 0x27e + 286: 00 c0 rjmp .+0 ; 0x288 + 288: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 28a: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 28c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 28e: 53 e0 ldi r21, 0x03 ; 3 + 290: 50 83 st Z, r21 + 292: 6f eb ldi r22, 0xBF ; 191 + 294: 75 e4 ldi r23, 0x45 ; 69 + 296: a4 e0 ldi r26, 0x04 ; 4 + 298: 61 50 subi r22, 0x01 ; 1 + 29a: 70 40 sbci r23, 0x00 ; 0 + 29c: a0 40 sbci r26, 0x00 ; 0 + 29e: e1 f7 brne .-8 ; 0x298 + 2a0: 00 c0 rjmp .+0 ; 0x2a2 + 2a2: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2a4: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2a6: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2a8: 80 83 st Z, r24 + 2aa: 6f eb ldi r22, 0xBF ; 191 + 2ac: 75 e4 ldi r23, 0x45 ; 69 + 2ae: a4 e0 ldi r26, 0x04 ; 4 + 2b0: 61 50 subi r22, 0x01 ; 1 + 2b2: 70 40 sbci r23, 0x00 ; 0 + 2b4: a0 40 sbci r26, 0x00 ; 0 + 2b6: e1 f7 brne .-8 ; 0x2b0 + 2b8: 00 c0 rjmp .+0 ; 0x2ba + 2ba: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2bc: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2be: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2c0: 80 83 st Z, r24 + 2c2: 6f eb ldi r22, 0xBF ; 191 + 2c4: 75 e4 ldi r23, 0x45 ; 69 + 2c6: a4 e0 ldi r26, 0x04 ; 4 + 2c8: 61 50 subi r22, 0x01 ; 1 + 2ca: 70 40 sbci r23, 0x00 ; 0 + 2cc: a0 40 sbci r26, 0x00 ; 0 + 2ce: e1 f7 brne .-8 ; 0x2c8 + 2d0: 00 c0 rjmp .+0 ; 0x2d2 + 2d2: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2d4: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2d6: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2d8: 50 83 st Z, r21 + 2da: 5f eb ldi r21, 0xBF ; 191 + 2dc: 65 e4 ldi r22, 0x45 ; 69 + 2de: 74 e0 ldi r23, 0x04 ; 4 + 2e0: 51 50 subi r21, 0x01 ; 1 + 2e2: 60 40 sbci r22, 0x00 ; 0 + 2e4: 70 40 sbci r23, 0x00 ; 0 + 2e6: e1 f7 brne .-8 ; 0x2e0 + 2e8: 00 c0 rjmp .+0 ; 0x2ea + 2ea: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 2ec: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 2ee: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 2f0: 40 83 st Z, r20 + 2f2: af eb ldi r26, 0xBF ; 191 + 2f4: 45 e4 ldi r20, 0x45 ; 69 + 2f6: 54 e0 ldi r21, 0x04 ; 4 + 2f8: a1 50 subi r26, 0x01 ; 1 + 2fa: 40 40 sbci r20, 0x00 ; 0 + 2fc: 50 40 sbci r21, 0x00 ; 0 + 2fe: e1 f7 brne .-8 ; 0x2f8 + 300: 00 c0 rjmp .+0 ; 0x302 + 302: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 304: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 306: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 308: 90 83 st Z, r25 + 30a: 6f eb ldi r22, 0xBF ; 191 + 30c: 75 e4 ldi r23, 0x45 ; 69 + 30e: a4 e0 ldi r26, 0x04 ; 4 + 310: 61 50 subi r22, 0x01 ; 1 + 312: 70 40 sbci r23, 0x00 ; 0 + 314: a0 40 sbci r26, 0x00 ; 0 + 316: e1 f7 brne .-8 ; 0x310 + 318: 00 c0 rjmp .+0 ; 0x31a + 31a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 31c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 31e: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 320: 90 83 st Z, r25 + 322: 4f eb ldi r20, 0xBF ; 191 + 324: 55 e4 ldi r21, 0x45 ; 69 + 326: 64 e0 ldi r22, 0x04 ; 4 + 328: 41 50 subi r20, 0x01 ; 1 + 32a: 50 40 sbci r21, 0x00 ; 0 + 32c: 60 40 sbci r22, 0x00 ; 0 + 32e: e1 f7 brne .-8 ; 0x328 + 330: 00 c0 rjmp .+0 ; 0x332 + 332: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 334: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 336: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 338: 90 83 st Z, r25 + 33a: 7f eb ldi r23, 0xBF ; 191 + 33c: a5 e4 ldi r26, 0x45 ; 69 + 33e: 44 e0 ldi r20, 0x04 ; 4 + 340: 71 50 subi r23, 0x01 ; 1 + 342: a0 40 sbci r26, 0x00 ; 0 + 344: 40 40 sbci r20, 0x00 ; 0 + 346: e1 f7 brne .-8 ; 0x340 + 348: 00 c0 rjmp .+0 ; 0x34a + 34a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 34c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 34e: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 350: 90 83 st Z, r25 + 352: 5f eb ldi r21, 0xBF ; 191 + 354: 65 e4 ldi r22, 0x45 ; 69 + 356: 74 e0 ldi r23, 0x04 ; 4 + 358: 51 50 subi r21, 0x01 ; 1 + 35a: 60 40 sbci r22, 0x00 ; 0 + 35c: 70 40 sbci r23, 0x00 ; 0 + 35e: e1 f7 brne .-8 ; 0x358 + 360: 00 c0 rjmp .+0 ; 0x362 + 362: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 364: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 366: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 368: 90 83 st Z, r25 + 36a: 8f eb ldi r24, 0xBF ; 191 + 36c: a5 e4 ldi r26, 0x45 ; 69 + 36e: 34 e0 ldi r19, 0x04 ; 4 + 370: 81 50 subi r24, 0x01 ; 1 + 372: a0 40 sbci r26, 0x00 ; 0 + 374: 30 40 sbci r19, 0x00 ; 0 + 376: e1 f7 brne .-8 ; 0x370 + 378: 00 c0 rjmp .+0 ; 0x37a + 37a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 37c: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 37e: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 380: 90 83 st Z, r25 + 382: 4f eb ldi r20, 0xBF ; 191 + 384: 55 e4 ldi r21, 0x45 ; 69 + 386: 64 e0 ldi r22, 0x04 ; 4 + 388: 41 50 subi r20, 0x01 ; 1 + 38a: 50 40 sbci r21, 0x00 ; 0 + 38c: 60 40 sbci r22, 0x00 ; 0 + 38e: e1 f7 brne .-8 ; 0x388 + 390: 00 c0 rjmp .+0 ; 0x392 + 392: 00 00 nop + 394: e0 c0 rjmp .+448 ; 0x556 <__stack+0x57> +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 396: e0 e0 ldi r30, 0x00 ; 0 + 398: f1 e0 ldi r31, 0x01 ; 1 + 39a: 22 e1 ldi r18, 0x12 ; 18 + 39c: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 39e: 80 e1 ldi r24, 0x10 ; 16 + 3a0: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3a2: 80 83 st Z, r24 + 3a4: 7f eb ldi r23, 0xBF ; 191 + 3a6: 95 e4 ldi r25, 0x45 ; 69 + 3a8: a4 e0 ldi r26, 0x04 ; 4 + 3aa: 71 50 subi r23, 0x01 ; 1 + 3ac: 90 40 sbci r25, 0x00 ; 0 + 3ae: a0 40 sbci r26, 0x00 ; 0 + 3b0: e1 f7 brne .-8 ; 0x3aa + 3b2: 00 c0 rjmp .+0 ; 0x3b4 + 3b4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3b6: 3c e0 ldi r19, 0x0C ; 12 + 3b8: 32 83 std Z+2, r19 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3ba: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3bc: 80 83 st Z, r24 + 3be: 4f eb ldi r20, 0xBF ; 191 + 3c0: 55 e4 ldi r21, 0x45 ; 69 + 3c2: 64 e0 ldi r22, 0x04 ; 4 + 3c4: 41 50 subi r20, 0x01 ; 1 + 3c6: 50 40 sbci r21, 0x00 ; 0 + 3c8: 60 40 sbci r22, 0x00 ; 0 + 3ca: e1 f7 brne .-8 ; 0x3c4 + 3cc: 00 c0 rjmp .+0 ; 0x3ce + 3ce: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3d0: 98 e0 ldi r25, 0x08 ; 8 + 3d2: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3d4: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3d6: 80 83 st Z, r24 + 3d8: 7f eb ldi r23, 0xBF ; 191 + 3da: a5 e4 ldi r26, 0x45 ; 69 + 3dc: 44 e0 ldi r20, 0x04 ; 4 + 3de: 71 50 subi r23, 0x01 ; 1 + 3e0: a0 40 sbci r26, 0x00 ; 0 + 3e2: 40 40 sbci r20, 0x00 ; 0 + 3e4: e1 f7 brne .-8 ; 0x3de + 3e6: 00 c0 rjmp .+0 ; 0x3e8 + 3e8: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 3ea: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 3ec: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 3ee: 80 83 st Z, r24 + 3f0: 5f eb ldi r21, 0xBF ; 191 + 3f2: 65 e4 ldi r22, 0x45 ; 69 + 3f4: 74 e0 ldi r23, 0x04 ; 4 + 3f6: 51 50 subi r21, 0x01 ; 1 + 3f8: 60 40 sbci r22, 0x00 ; 0 + 3fa: 70 40 sbci r23, 0x00 ; 0 + 3fc: e1 f7 brne .-8 ; 0x3f6 + 3fe: 00 c0 rjmp .+0 ; 0x400 <__LOCK_REGION_LENGTH__> + 400: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 402: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 404: 31 83 std Z+1, r19 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 406: 80 83 st Z, r24 + 408: af eb ldi r26, 0xBF ; 191 + 40a: 45 e4 ldi r20, 0x45 ; 69 + 40c: 54 e0 ldi r21, 0x04 ; 4 + 40e: a1 50 subi r26, 0x01 ; 1 + 410: 40 40 sbci r20, 0x00 ; 0 + 412: 50 40 sbci r21, 0x00 ; 0 + 414: e1 f7 brne .-8 ; 0x40e <__LOCK_REGION_LENGTH__+0xe> + 416: 00 c0 rjmp .+0 ; 0x418 <__LOCK_REGION_LENGTH__+0x18> + 418: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 41a: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 41c: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 41e: 80 83 st Z, r24 + 420: 6f eb ldi r22, 0xBF ; 191 + 422: 75 e4 ldi r23, 0x45 ; 69 + 424: a4 e0 ldi r26, 0x04 ; 4 + 426: 61 50 subi r22, 0x01 ; 1 + 428: 70 40 sbci r23, 0x00 ; 0 + 42a: a0 40 sbci r26, 0x00 ; 0 + 42c: e1 f7 brne .-8 ; 0x426 <__LOCK_REGION_LENGTH__+0x26> + 42e: 00 c0 rjmp .+0 ; 0x430 <__LOCK_REGION_LENGTH__+0x30> + 430: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 432: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 434: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 436: 41 e0 ldi r20, 0x01 ; 1 + 438: 40 83 st Z, r20 + 43a: 5f eb ldi r21, 0xBF ; 191 + 43c: 65 e4 ldi r22, 0x45 ; 69 + 43e: 74 e0 ldi r23, 0x04 ; 4 + 440: 51 50 subi r21, 0x01 ; 1 + 442: 60 40 sbci r22, 0x00 ; 0 + 444: 70 40 sbci r23, 0x00 ; 0 + 446: e1 f7 brne .-8 ; 0x440 <__LOCK_REGION_LENGTH__+0x40> + 448: 00 c0 rjmp .+0 ; 0x44a <__LOCK_REGION_LENGTH__+0x4a> + 44a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 44c: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 44e: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 450: 53 e0 ldi r21, 0x03 ; 3 + 452: 50 83 st Z, r21 + 454: af eb ldi r26, 0xBF ; 191 + 456: 65 e4 ldi r22, 0x45 ; 69 + 458: 74 e0 ldi r23, 0x04 ; 4 + 45a: a1 50 subi r26, 0x01 ; 1 + 45c: 60 40 sbci r22, 0x00 ; 0 + 45e: 70 40 sbci r23, 0x00 ; 0 + 460: e1 f7 brne .-8 ; 0x45a <__LOCK_REGION_LENGTH__+0x5a> + 462: 00 c0 rjmp .+0 ; 0x464 <__LOCK_REGION_LENGTH__+0x64> + 464: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 466: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 468: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 46a: 90 83 st Z, r25 + 46c: af eb ldi r26, 0xBF ; 191 + 46e: 65 e4 ldi r22, 0x45 ; 69 + 470: 74 e0 ldi r23, 0x04 ; 4 + 472: a1 50 subi r26, 0x01 ; 1 + 474: 60 40 sbci r22, 0x00 ; 0 + 476: 70 40 sbci r23, 0x00 ; 0 + 478: e1 f7 brne .-8 ; 0x472 <__LOCK_REGION_LENGTH__+0x72> + 47a: 00 c0 rjmp .+0 ; 0x47c <__LOCK_REGION_LENGTH__+0x7c> + 47c: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 47e: 52 83 std Z+2, r21 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 480: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 482: 90 83 st Z, r25 + 484: af eb ldi r26, 0xBF ; 191 + 486: 65 e4 ldi r22, 0x45 ; 69 + 488: 74 e0 ldi r23, 0x04 ; 4 + 48a: a1 50 subi r26, 0x01 ; 1 + 48c: 60 40 sbci r22, 0x00 ; 0 + 48e: 70 40 sbci r23, 0x00 ; 0 + 490: e1 f7 brne .-8 ; 0x48a <__LOCK_REGION_LENGTH__+0x8a> + 492: 00 c0 rjmp .+0 ; 0x494 <__LOCK_REGION_LENGTH__+0x94> + 494: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 496: 42 83 std Z+2, r20 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 498: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 49a: 90 83 st Z, r25 + 49c: af eb ldi r26, 0xBF ; 191 + 49e: 65 e4 ldi r22, 0x45 ; 69 + 4a0: 74 e0 ldi r23, 0x04 ; 4 + 4a2: a1 50 subi r26, 0x01 ; 1 + 4a4: 60 40 sbci r22, 0x00 ; 0 + 4a6: 70 40 sbci r23, 0x00 ; 0 + 4a8: e1 f7 brne .-8 ; 0x4a2 <__LOCK_REGION_LENGTH__+0xa2> + 4aa: 00 c0 rjmp .+0 ; 0x4ac <__LOCK_REGION_LENGTH__+0xac> + 4ac: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4ae: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4b0: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4b2: 90 83 st Z, r25 + 4b4: af eb ldi r26, 0xBF ; 191 + 4b6: 65 e4 ldi r22, 0x45 ; 69 + 4b8: 74 e0 ldi r23, 0x04 ; 4 + 4ba: a1 50 subi r26, 0x01 ; 1 + 4bc: 60 40 sbci r22, 0x00 ; 0 + 4be: 70 40 sbci r23, 0x00 ; 0 + 4c0: e1 f7 brne .-8 ; 0x4ba <__LOCK_REGION_LENGTH__+0xba> + 4c2: 00 c0 rjmp .+0 ; 0x4c4 <__LOCK_REGION_LENGTH__+0xc4> + 4c4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4c6: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4c8: 51 83 std Z+1, r21 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4ca: 90 83 st Z, r25 + 4cc: af eb ldi r26, 0xBF ; 191 + 4ce: 55 e4 ldi r21, 0x45 ; 69 + 4d0: 64 e0 ldi r22, 0x04 ; 4 + 4d2: a1 50 subi r26, 0x01 ; 1 + 4d4: 50 40 sbci r21, 0x00 ; 0 + 4d6: 60 40 sbci r22, 0x00 ; 0 + 4d8: e1 f7 brne .-8 ; 0x4d2 <__LOCK_REGION_LENGTH__+0xd2> + 4da: 00 c0 rjmp .+0 ; 0x4dc <__LOCK_REGION_LENGTH__+0xdc> + 4dc: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4de: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4e0: 41 83 std Z+1, r20 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4e2: 90 83 st Z, r25 + 4e4: 7f eb ldi r23, 0xBF ; 191 + 4e6: a5 e4 ldi r26, 0x45 ; 69 + 4e8: 44 e0 ldi r20, 0x04 ; 4 + 4ea: 71 50 subi r23, 0x01 ; 1 + 4ec: a0 40 sbci r26, 0x00 ; 0 + 4ee: 40 40 sbci r20, 0x00 ; 0 + 4f0: e1 f7 brne .-8 ; 0x4ea <__LOCK_REGION_LENGTH__+0xea> + 4f2: 00 c0 rjmp .+0 ; 0x4f4 <__LOCK_REGION_LENGTH__+0xf4> + 4f4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 4f6: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 4f8: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 4fa: 90 83 st Z, r25 + 4fc: 5f eb ldi r21, 0xBF ; 191 + 4fe: 65 e4 ldi r22, 0x45 ; 69 + 500: 74 e0 ldi r23, 0x04 ; 4 + 502: 51 50 subi r21, 0x01 ; 1 + 504: 60 40 sbci r22, 0x00 ; 0 + 506: 70 40 sbci r23, 0x00 ; 0 + 508: e1 f7 brne .-8 ; 0x502 <__stack+0x3> + 50a: 00 c0 rjmp .+0 ; 0x50c <__stack+0xd> + 50c: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 50e: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 510: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 512: 30 83 st Z, r19 + 514: 9f eb ldi r25, 0xBF ; 191 + 516: a5 e4 ldi r26, 0x45 ; 69 + 518: 34 e0 ldi r19, 0x04 ; 4 + 51a: 91 50 subi r25, 0x01 ; 1 + 51c: a0 40 sbci r26, 0x00 ; 0 + 51e: 30 40 sbci r19, 0x00 ; 0 + 520: e1 f7 brne .-8 ; 0x51a <__stack+0x1b> + 522: 00 c0 rjmp .+0 ; 0x524 <__stack+0x25> + 524: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 526: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 528: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 52a: 20 83 st Z, r18 + 52c: 4f eb ldi r20, 0xBF ; 191 + 52e: 55 e4 ldi r21, 0x45 ; 69 + 530: 64 e0 ldi r22, 0x04 ; 4 + 532: 41 50 subi r20, 0x01 ; 1 + 534: 50 40 sbci r21, 0x00 ; 0 + 536: 60 40 sbci r22, 0x00 ; 0 + 538: e1 f7 brne .-8 ; 0x532 <__stack+0x33> + 53a: 00 c0 rjmp .+0 ; 0x53c <__stack+0x3d> + 53c: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 53e: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 540: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 542: 80 83 st Z, r24 + 544: 7f eb ldi r23, 0xBF ; 191 + 546: 85 e4 ldi r24, 0x45 ; 69 + 548: 94 e0 ldi r25, 0x04 ; 4 + 54a: 71 50 subi r23, 0x01 ; 1 + 54c: 80 40 sbci r24, 0x00 ; 0 + 54e: 90 40 sbci r25, 0x00 ; 0 + 550: e1 f7 brne .-8 ; 0x54a <__stack+0x4b> + 552: 00 c0 rjmp .+0 ; 0x554 <__stack+0x55> + 554: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 556: e0 e0 ldi r30, 0x00 ; 0 + 558: f1 e0 ldi r31, 0x01 ; 1 + 55a: 80 e1 ldi r24, 0x10 ; 16 + 55c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 55e: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 560: 80 83 st Z, r24 + 562: af eb ldi r26, 0xBF ; 191 + 564: 25 e4 ldi r18, 0x45 ; 69 + 566: 34 e0 ldi r19, 0x04 ; 4 + 568: a1 50 subi r26, 0x01 ; 1 + 56a: 20 40 sbci r18, 0x00 ; 0 + 56c: 30 40 sbci r19, 0x00 ; 0 + 56e: e1 f7 brne .-8 ; 0x568 <__stack+0x69> + 570: 00 c0 rjmp .+0 ; 0x572 <__stack+0x73> + 572: 00 00 nop + 574: 08 95 ret + +00000576 : + +/************************************************************************/ +/* Read humidity and temperature from DHT22 */ +/************************************************************************/ +uint8_t s_u8ReadSensor( void ) +{ + 576: 0f 93 push r16 + 578: 1f 93 push r17 + 57a: cf 93 push r28 + 57c: df 93 push r29 + 57e: 00 d0 rcall .+0 ; 0x580 + 580: 00 d0 rcall .+0 ; 0x582 + 582: 1f 92 push r1 + 584: cd b7 in r28, 0x3d ; 61 + 586: de b7 in r29, 0x3e ; 62 + uint8_t timeout = 200; + + SENSOR_sda_in; + 588: 3b 98 cbi 0x07, 3 ; 7 + + // Bus master has released time min: 20us, typ: 30us, max: 200us + while ( SENSOR_is_hi ) + 58a: 89 ec ldi r24, 0xC9 ; 201 + 58c: 07 c0 rjmp .+14 ; 0x59c + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 58e: 36 e0 ldi r19, 0x06 ; 6 + 590: 3a 95 dec r19 + 592: f1 f7 brne .-4 ; 0x590 + 594: 00 c0 rjmp .+0 ; 0x596 + 596: 81 50 subi r24, 0x01 ; 1 + { + _delay_us(1); + if ( !timeout-- ) + 598: 09 f4 brne .+2 ; 0x59c + 59a: 6e c0 rjmp .+220 ; 0x678 + uint8_t timeout = 200; + + SENSOR_sda_in; + + // Bus master has released time min: 20us, typ: 30us, max: 200us + while ( SENSOR_is_hi ) + 59c: 33 99 sbic 0x06, 3 ; 6 + 59e: f7 cf rjmp .-18 ; 0x58e + 5a0: 86 e5 ldi r24, 0x56 ; 86 + 5a2: 07 c0 rjmp .+14 ; 0x5b2 + 5a4: 96 e0 ldi r25, 0x06 ; 6 + 5a6: 9a 95 dec r25 + 5a8: f1 f7 brne .-4 ; 0x5a6 + 5aa: 00 c0 rjmp .+0 ; 0x5ac + 5ac: 81 50 subi r24, 0x01 ; 1 + // AM2302 response signal min: 75us typ:80us max:85us + timeout = 85; + while(SENSOR_is_low) + { + _delay_us(1); + if (!timeout--) + 5ae: 09 f4 brne .+2 ; 0x5b2 + 5b0: 65 c0 rjmp .+202 ; 0x67c + } + } + + // AM2302 response signal min: 75us typ:80us max:85us + timeout = 85; + while(SENSOR_is_low) + 5b2: 33 9b sbis 0x06, 3 ; 6 + 5b4: f7 cf rjmp .-18 ; 0x5a4 + 5b6: 86 e5 ldi r24, 0x56 ; 86 + 5b8: 07 c0 rjmp .+14 ; 0x5c8 + 5ba: a6 e0 ldi r26, 0x06 ; 6 + 5bc: aa 95 dec r26 + 5be: f1 f7 brne .-4 ; 0x5bc + 5c0: 00 c0 rjmp .+0 ; 0x5c2 + 5c2: 81 50 subi r24, 0x01 ; 1 + + timeout = 85; + while(SENSOR_is_hi) + { + _delay_us(1); + if (!timeout--) + 5c4: 09 f4 brne .+2 ; 0x5c8 + 5c6: 5c c0 rjmp .+184 ; 0x680 + return 3; + } + } // response to low time + + timeout = 85; + while(SENSOR_is_hi) + 5c8: 33 99 sbic 0x06, 3 ; 6 + 5ca: f7 cf rjmp .-18 ; 0x5ba + * signal 0 high time: 22 26 30 (bit=0) + * signal 1 high time: 68 70 75 (bit=1) + * signal 0,1 down time: 48 50 55 + */ + + uint8_t sensor_data[5]={0}; + 5cc: fe 01 movw r30, r28 + 5ce: 31 96 adiw r30, 0x01 ; 1 + 5d0: 85 e0 ldi r24, 0x05 ; 5 + 5d2: df 01 movw r26, r30 + 5d4: 1d 92 st X+, r1 + 5d6: 8a 95 dec r24 + 5d8: e9 f7 brne .-6 ; 0x5d4 + 5da: ae 01 movw r20, r28 + 5dc: 4a 5f subi r20, 0xFA ; 250 + 5de: 5f 4f sbci r21, 0xFF ; 255 + 5e0: 22 c0 rjmp .+68 ; 0x626 + 5e2: b6 e0 ldi r27, 0x06 ; 6 + 5e4: ba 95 dec r27 + 5e6: f1 f7 brne .-4 ; 0x5e4 + 5e8: 00 c0 rjmp .+0 ; 0x5ea + 5ea: 91 50 subi r25, 0x01 ; 1 + while(SENSOR_is_low) + { + _delay_us(1); + + // if timeout == 0 => sensor do not response + if (!timeout--) + 5ec: 11 f4 brne .+4 ; 0x5f2 + 5ee: 4a c0 rjmp .+148 ; 0x684 + 5f0: 98 e3 ldi r25, 0x38 ; 56 + // get 8 bits from sensor + for(uint8_t j = 1; j <= 8; j++) + { + // wait for sensor response + timeout = 55; + while(SENSOR_is_low) + 5f2: 33 9b sbis 0x06, 3 ; 6 + 5f4: f6 cf rjmp .-20 ; 0x5e2 + 5f6: 38 ec ldi r19, 0xC8 ; 200 + 5f8: 3a 95 dec r19 + 5fa: f1 f7 brne .-4 ; 0x5f8 + } + } + + // wait 30 us to check if bit is logical "1" or "0" + _delay_us(30); + sensor_byte <<= 1; // add new lower bit + 5fc: 22 0f add r18, r18 + + // If sda ist high after 30 us then bit is logical "1" else it was a logical "0" + // For a logical "1" sda have to be low after 75 us. + if (SENSOR_is_hi) + 5fe: 33 99 sbic 0x06, 3 ; 6 + 600: 08 c0 rjmp .+16 ; 0x612 + 602: 0b c0 rjmp .+22 ; 0x61a + 604: a6 e0 ldi r26, 0x06 ; 6 + 606: aa 95 dec r26 + 608: f1 f7 brne .-4 ; 0x606 + 60a: 00 c0 rjmp .+0 ; 0x60c + 60c: 91 50 subi r25, 0x01 ; 1 + + while(SENSOR_is_hi) + { + _delay_us(1); + + if (!timeout--) + 60e: 11 f4 brne .+4 ; 0x614 + 610: 3b c0 rjmp .+118 ; 0x688 + 612: 9e e2 ldi r25, 0x2E ; 46 + if (SENSOR_is_hi) + { + sensor_byte |= 1; // add logical "1" + timeout = 45; // 30us - 75us = 45us + + while(SENSOR_is_hi) + 614: 33 99 sbic 0x06, 3 ; 6 + 616: f6 cf rjmp .-20 ; 0x604 + + // If sda ist high after 30 us then bit is logical "1" else it was a logical "0" + // For a logical "1" sda have to be low after 75 us. + if (SENSOR_is_hi) + { + sensor_byte |= 1; // add logical "1" + 618: 21 60 ori r18, 0x01 ; 1 + 61a: 81 50 subi r24, 0x01 ; 1 + for(uint8_t i = 0; i < 5; i++) + { + uint8_t sensor_byte = 0; + + // get 8 bits from sensor + for(uint8_t j = 1; j <= 8; j++) + 61c: 49 f7 brne .-46 ; 0x5f0 + } + } + } + } + + sensor_data[i] = sensor_byte; + 61e: 21 93 st Z+, r18 + * signal 0,1 down time: 48 50 55 + */ + + uint8_t sensor_data[5]={0}; + + for(uint8_t i = 0; i < 5; i++) + 620: 4e 17 cp r20, r30 + 622: 5f 07 cpc r21, r31 + 624: 19 f0 breq .+6 ; 0x62c + 626: 88 e0 ldi r24, 0x08 ; 8 + 628: 20 e0 ldi r18, 0x00 ; 0 + 62a: e2 cf rjmp .-60 ; 0x5f0 + + sensor_data[i] = sensor_byte; + } + + // checksum + if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4]) + 62c: a9 81 ldd r26, Y+1 ; 0x01 + 62e: b0 e0 ldi r27, 0x00 ; 0 + 630: ea 81 ldd r30, Y+2 ; 0x02 + 632: f0 e0 ldi r31, 0x00 ; 0 + 634: 6b 81 ldd r22, Y+3 ; 0x03 + 636: 70 e0 ldi r23, 0x00 ; 0 + 638: 4c 81 ldd r20, Y+4 ; 0x04 + 63a: 50 e0 ldi r21, 0x00 ; 0 + 63c: 9d 01 movw r18, r26 + 63e: 2e 0f add r18, r30 + 640: 3f 1f adc r19, r31 + 642: 26 0f add r18, r22 + 644: 37 1f adc r19, r23 + 646: 24 0f add r18, r20 + 648: 35 1f adc r19, r21 + 64a: 33 27 eor r19, r19 + 64c: 0d 81 ldd r16, Y+5 ; 0x05 + 64e: 10 e0 ldi r17, 0x00 ; 0 + 650: 20 17 cp r18, r16 + 652: 31 07 cpc r19, r17 + 654: d9 f4 brne .+54 ; 0x68c + // debug output + //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff )); + return 7; + } + + g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1]; + 656: ba 2f mov r27, r26 + 658: aa 27 eor r26, r26 + 65a: ea 0f add r30, r26 + 65c: fb 1f adc r31, r27 + 65e: f0 93 28 01 sts 0x0128, r31 ; 0x800128 + 662: e0 93 27 01 sts 0x0127, r30 ; 0x800127 + g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3]; + 666: 76 2f mov r23, r22 + 668: 66 27 eor r22, r22 + 66a: 46 0f add r20, r22 + 66c: 57 1f adc r21, r23 + 66e: 50 93 26 01 sts 0x0126, r21 ; 0x800126 + 672: 40 93 25 01 sts 0x0125, r20 ; 0x800125 + + return 0; + 676: 0b c0 rjmp .+22 ; 0x68e + while ( SENSOR_is_hi ) + { + _delay_us(1); + if ( !timeout-- ) + { + return 2; + 678: 82 e0 ldi r24, 0x02 ; 2 + 67a: 09 c0 rjmp .+18 ; 0x68e + while(SENSOR_is_low) + { + _delay_us(1); + if (!timeout--) + { + return 3; + 67c: 83 e0 ldi r24, 0x03 ; 3 + 67e: 07 c0 rjmp .+14 ; 0x68e + while(SENSOR_is_hi) + { + _delay_us(1); + if (!timeout--) + { + return 4; + 680: 84 e0 ldi r24, 0x04 ; 4 + 682: 05 c0 rjmp .+10 ; 0x68e + _delay_us(1); + + // if timeout == 0 => sensor do not response + if (!timeout--) + { + return 5; + 684: 85 e0 ldi r24, 0x05 ; 5 + 686: 03 c0 rjmp .+6 ; 0x68e + { + _delay_us(1); + + if (!timeout--) + { + return 6; + 688: 86 e0 ldi r24, 0x06 ; 6 + 68a: 01 c0 rjmp .+2 ; 0x68e + // checksum + if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4]) + { + // debug output + //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff )); + return 7; + 68c: 87 e0 ldi r24, 0x07 ; 7 + + g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1]; + g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3]; + + return 0; + 68e: 0f 90 pop r0 + 690: 0f 90 pop r0 + 692: 0f 90 pop r0 + 694: 0f 90 pop r0 + 696: 0f 90 pop r0 + 698: df 91 pop r29 + 69a: cf 91 pop r28 + 69c: 1f 91 pop r17 + 69e: 0f 91 pop r16 + 6a0: 08 95 ret + +000006a2
: +int main(void) +{ + uint8_t u8ErrorCode = 0U; + uint8_t u8Loop = 0U; + + s_vInit(); + 6a2: e4 dc rcall .-1592 ; 0x6c +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6a4: e0 e0 ldi r30, 0x00 ; 0 + 6a6: f1 e0 ldi r31, 0x01 ; 1 + 6a8: 90 e1 ldi r25, 0x10 ; 16 + 6aa: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6ac: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6ae: 90 83 st Z, r25 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 6b0: af e4 ldi r26, 0x4F ; 79 + 6b2: b3 ec ldi r27, 0xC3 ; 195 + 6b4: 11 97 sbiw r26, 0x01 ; 1 + 6b6: f1 f7 brne .-4 ; 0x6b4 + 6b8: 00 c0 rjmp .+0 ; 0x6ba + 6ba: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6bc: 83 e1 ldi r24, 0x13 ; 19 + 6be: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6c0: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6c2: 90 83 st Z, r25 + 6c4: bf e7 ldi r27, 0x7F ; 127 + 6c6: 0f e4 ldi r16, 0x4F ; 79 + 6c8: 12 e1 ldi r17, 0x12 ; 18 + 6ca: b1 50 subi r27, 0x01 ; 1 + 6cc: 00 40 sbci r16, 0x00 ; 0 + 6ce: 10 40 sbci r17, 0x00 ; 0 + 6d0: e1 f7 brne .-8 ; 0x6ca + 6d2: 00 c0 rjmp .+0 ; 0x6d4 + 6d4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6d6: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6d8: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6da: 90 83 st Z, r25 + 6dc: 2f e7 ldi r18, 0x7F ; 127 + 6de: 3f e4 ldi r19, 0x4F ; 79 + 6e0: 42 e1 ldi r20, 0x12 ; 18 + 6e2: 21 50 subi r18, 0x01 ; 1 + 6e4: 30 40 sbci r19, 0x00 ; 0 + 6e6: 40 40 sbci r20, 0x00 ; 0 + 6e8: e1 f7 brne .-8 ; 0x6e2 + 6ea: 00 c0 rjmp .+0 ; 0x6ec + 6ec: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 6ee: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 6f0: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 6f2: 80 83 st Z, r24 + 6f4: 8f e7 ldi r24, 0x7F ; 127 + 6f6: 9f e4 ldi r25, 0x4F ; 79 + 6f8: a2 e1 ldi r26, 0x12 ; 18 + 6fa: 81 50 subi r24, 0x01 ; 1 + 6fc: 90 40 sbci r25, 0x00 ; 0 + 6fe: a0 40 sbci r26, 0x00 ; 0 + 700: e1 f7 brne .-8 ; 0x6fa + 702: 00 c0 rjmp .+0 ; 0x704 + 704: 00 00 nop + 706: 35 e0 ldi r19, 0x05 ; 5 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 708: 80 e1 ldi r24, 0x10 ; 16 + g_au8Digits[DIGIT_ONES] = u8Ones; + 70a: 23 e1 ldi r18, 0x13 ; 19 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 70c: d9 e1 ldi r29, 0x19 ; 25 + 70e: c7 e0 ldi r28, 0x07 ; 7 + 710: ba e1 ldi r27, 0x1A ; 26 +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + g_au8Digits[DIGIT_ONES] = u8Ones; + 712: 96 e1 ldi r25, 0x16 ; 22 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 714: ab e1 ldi r26, 0x1B ; 27 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 716: 7c e1 ldi r23, 0x1C ; 28 + 718: 6d e1 ldi r22, 0x1D ; 29 + 71a: 5e e1 ldi r21, 0x1E ; 30 + 71c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 71e: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 720: d0 83 st Z, r29 + 722: 0f eb ldi r16, 0xBF ; 191 + 724: 15 e4 ldi r17, 0x45 ; 69 + 726: 44 e0 ldi r20, 0x04 ; 4 + 728: 01 50 subi r16, 0x01 ; 1 + 72a: 10 40 sbci r17, 0x00 ; 0 + 72c: 40 40 sbci r20, 0x00 ; 0 + 72e: e1 f7 brne .-8 ; 0x728 + 730: 00 c0 rjmp .+0 ; 0x732 + 732: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 734: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 736: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 738: c0 83 st Z, r28 + 73a: 0f eb ldi r16, 0xBF ; 191 + 73c: 15 e4 ldi r17, 0x45 ; 69 + 73e: 44 e0 ldi r20, 0x04 ; 4 + 740: 01 50 subi r16, 0x01 ; 1 + 742: 10 40 sbci r17, 0x00 ; 0 + 744: 40 40 sbci r20, 0x00 ; 0 + 746: e1 f7 brne .-8 ; 0x740 + 748: 00 c0 rjmp .+0 ; 0x74a + 74a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 74c: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 74e: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 750: b0 83 st Z, r27 + 752: 0f eb ldi r16, 0xBF ; 191 + 754: 15 e4 ldi r17, 0x45 ; 69 + 756: 44 e0 ldi r20, 0x04 ; 4 + 758: 01 50 subi r16, 0x01 ; 1 + 75a: 10 40 sbci r17, 0x00 ; 0 + 75c: 40 40 sbci r20, 0x00 ; 0 + 75e: e1 f7 brne .-8 ; 0x758 + 760: 00 c0 rjmp .+0 ; 0x762 + 762: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 764: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 766: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 768: a0 83 st Z, r26 + 76a: 0f eb ldi r16, 0xBF ; 191 + 76c: 15 e4 ldi r17, 0x45 ; 69 + 76e: 44 e0 ldi r20, 0x04 ; 4 + 770: 01 50 subi r16, 0x01 ; 1 + 772: 10 40 sbci r17, 0x00 ; 0 + 774: 40 40 sbci r20, 0x00 ; 0 + 776: e1 f7 brne .-8 ; 0x770 + 778: 00 c0 rjmp .+0 ; 0x77a + 77a: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 77c: 92 83 std Z+2, r25 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 77e: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 780: 90 83 st Z, r25 + 782: 0f eb ldi r16, 0xBF ; 191 + 784: 15 e4 ldi r17, 0x45 ; 69 + 786: 44 e0 ldi r20, 0x04 ; 4 + 788: 01 50 subi r16, 0x01 ; 1 + 78a: 10 40 sbci r17, 0x00 ; 0 + 78c: 40 40 sbci r20, 0x00 ; 0 + 78e: e1 f7 brne .-8 ; 0x788 + 790: 00 c0 rjmp .+0 ; 0x792 + 792: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 794: 72 83 std Z+2, r23 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 796: 91 83 std Z+1, r25 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 798: 80 83 st Z, r24 + 79a: 0f eb ldi r16, 0xBF ; 191 + 79c: 15 e4 ldi r17, 0x45 ; 69 + 79e: 44 e0 ldi r20, 0x04 ; 4 + 7a0: 01 50 subi r16, 0x01 ; 1 + 7a2: 10 40 sbci r17, 0x00 ; 0 + 7a4: 40 40 sbci r20, 0x00 ; 0 + 7a6: e1 f7 brne .-8 ; 0x7a0 + 7a8: 00 c0 rjmp .+0 ; 0x7aa + 7aa: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 7ac: 62 83 std Z+2, r22 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 7ae: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 7b0: 80 83 st Z, r24 + 7b2: 0f eb ldi r16, 0xBF ; 191 + 7b4: 15 e4 ldi r17, 0x45 ; 69 + 7b6: 44 e0 ldi r20, 0x04 ; 4 + 7b8: 01 50 subi r16, 0x01 ; 1 + 7ba: 10 40 sbci r17, 0x00 ; 0 + 7bc: 40 40 sbci r20, 0x00 ; 0 + 7be: e1 f7 brne .-8 ; 0x7b8 + 7c0: 00 c0 rjmp .+0 ; 0x7c2 + 7c2: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 7c4: 52 83 std Z+2, r21 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 7c6: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 7c8: 80 83 st Z, r24 + 7ca: 0f eb ldi r16, 0xBF ; 191 + 7cc: 15 e4 ldi r17, 0x45 ; 69 + 7ce: 44 e0 ldi r20, 0x04 ; 4 + 7d0: 01 50 subi r16, 0x01 ; 1 + 7d2: 10 40 sbci r17, 0x00 ; 0 + 7d4: 40 40 sbci r20, 0x00 ; 0 + 7d6: e1 f7 brne .-8 ; 0x7d0 + 7d8: 00 c0 rjmp .+0 ; 0x7da + 7da: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 7dc: 0f e1 ldi r16, 0x1F ; 31 + 7de: 02 83 std Z+2, r16 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 7e0: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 7e2: 80 83 st Z, r24 + 7e4: 1f eb ldi r17, 0xBF ; 191 + 7e6: 45 e4 ldi r20, 0x45 ; 69 + 7e8: 04 e0 ldi r16, 0x04 ; 4 + 7ea: 11 50 subi r17, 0x01 ; 1 + 7ec: 40 40 sbci r20, 0x00 ; 0 + 7ee: 00 40 sbci r16, 0x00 ; 0 + 7f0: e1 f7 brne .-8 ; 0x7ea + 7f2: 00 c0 rjmp .+0 ; 0x7f4 + 7f4: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 7f6: 22 83 std Z+2, r18 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 7f8: 21 83 std Z+1, r18 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 7fa: 20 83 st Z, r18 + 7fc: 1f eb ldi r17, 0xBF ; 191 + 7fe: 45 e4 ldi r20, 0x45 ; 69 + 800: 04 e0 ldi r16, 0x04 ; 4 + 802: 11 50 subi r17, 0x01 ; 1 + 804: 40 40 sbci r20, 0x00 ; 0 + 806: 00 40 sbci r16, 0x00 ; 0 + 808: e1 f7 brne .-8 ; 0x802 + 80a: 00 c0 rjmp .+0 ; 0x80c + 80c: 00 00 nop + 80e: 31 50 subi r19, 0x01 ; 1 + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_A ); + _delay_ms(300); + + while ( u8Loop < 5U ) + 810: 09 f0 breq .+2 ; 0x814 + 812: 84 cf rjmp .-248 ; 0x71c +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 814: e0 e0 ldi r30, 0x00 ; 0 + 816: f1 e0 ldi r31, 0x01 ; 1 + 818: 80 e1 ldi r24, 0x10 ; 16 + 81a: 82 83 std Z+2, r24 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 81c: 81 83 std Z+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 81e: 80 83 st Z, r24 + 820: 1f ef ldi r17, 0xFF ; 255 + 822: 2e e9 ldi r18, 0x9E ; 158 + 824: 34 e2 ldi r19, 0x24 ; 36 + 826: 11 50 subi r17, 0x01 ; 1 + 828: 20 40 sbci r18, 0x00 ; 0 + 82a: 30 40 sbci r19, 0x00 ; 0 + 82c: e1 f7 brne .-8 ; 0x826 + 82e: 00 c0 rjmp .+0 ; 0x830 + 830: 00 00 nop +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 832: ef 01 movw r28, r30 + 834: 0c e0 ldi r16, 0x0C ; 12 + g_au8Digits[DIGIT_ONES] = u8Ones; + g_au8Digits[DIGIT_UNIT] = u8Unit; + 836: 10 e1 ldi r17, 0x10 ; 16 + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(600); + + while ( 1 ) + { + switch ( g_u8Mode ) + 838: 80 91 29 01 lds r24, 0x0129 ; 0x800129 + 83c: 81 30 cpi r24, 0x01 ; 1 + 83e: b1 f1 breq .+108 ; 0x8ac + 840: 20 f0 brcs .+8 ; 0x84a + 842: 82 30 cpi r24, 0x02 ; 2 + 844: 09 f4 brne .+2 ; 0x848 + 846: 40 c0 rjmp .+128 ; 0x8c8 + 848: f9 cf rjmp .-14 ; 0x83c + { + case MODE_MEASURE: + if ( SENSOR_is_hi ) + 84a: 33 9b sbis 0x06, 3 ; 6 + 84c: 25 c0 rjmp .+74 ; 0x898 + { + SENSOR_sda_out; + 84e: 3b 9a sbi 0x07, 3 ; 7 + SENSOR_sda_low; + 850: 43 98 cbi 0x08, 3 ; 8 + 852: 4f e7 ldi r20, 0x7F ; 127 + 854: 88 e3 ldi r24, 0x38 ; 56 + 856: 91 e0 ldi r25, 0x01 ; 1 + 858: 41 50 subi r20, 0x01 ; 1 + 85a: 80 40 sbci r24, 0x00 ; 0 + 85c: 90 40 sbci r25, 0x00 ; 0 + 85e: e1 f7 brne .-8 ; 0x858 + 860: 00 c0 rjmp .+0 ; 0x862 + 862: 00 00 nop + _delay_ms(20); + u8ErrorCode = s_u8ReadSensor(); + 864: 88 de rcall .-752 ; 0x576 + if ( 0U == u8ErrorCode ) + 866: 81 11 cpse r24, r1 + 868: 10 c0 rjmp .+32 ; 0x88a + { + s_vSetValue( g_u16Humidity / 10, SYM_P_P ); + 86a: 20 91 27 01 lds r18, 0x0127 ; 0x800127 + 86e: 30 91 28 01 lds r19, 0x0128 ; 0x800128 + 872: ad ec ldi r26, 0xCD ; 205 + 874: bc ec ldi r27, 0xCC ; 204 + 876: 36 d0 rcall .+108 ; 0x8e4 <__umulhisi3> + 878: 96 95 lsr r25 + 87a: 87 95 ror r24 + 87c: 96 95 lsr r25 + 87e: 87 95 ror r24 + 880: 96 95 lsr r25 + 882: 87 95 ror r24 + 884: 6f e0 ldi r22, 0x0F ; 15 + 886: 0c dc rcall .-2024 ; 0xa0 + 888: 03 c0 rjmp .+6 ; 0x890 +/************************************************************************/ +/* Set display digits individually */ +/************************************************************************/ +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ) +{ + g_au8Digits[DIGIT_TENS] = u8Tens; + 88a: 0a 83 std Y+2, r16 ; 0x02 + g_au8Digits[DIGIT_ONES] = u8Ones; + 88c: 89 83 std Y+1, r24 ; 0x01 + g_au8Digits[DIGIT_UNIT] = u8Unit; + 88e: 18 83 st Y, r17 + else + { + s_vSetDisplayDigits( SYM_E, u8ErrorCode, SYM_OFF ); + } + } + if ( g_u8Mode == MODE_MEASURE ) + 890: 80 91 29 01 lds r24, 0x0129 ; 0x800129 + 894: 81 11 cpse r24, r1 + 896: d0 cf rjmp .-96 ; 0x838 + 898: af e7 ldi r26, 0x7F ; 127 + 89a: b4 e8 ldi r27, 0x84 ; 132 + 89c: 2e e1 ldi r18, 0x1E ; 30 + 89e: a1 50 subi r26, 0x01 ; 1 + 8a0: b0 40 sbci r27, 0x00 ; 0 + 8a2: 20 40 sbci r18, 0x00 ; 0 + 8a4: e1 f7 brne .-8 ; 0x89e + 8a6: 00 c0 rjmp .+0 ; 0x8a8 + 8a8: 00 00 nop + 8aa: c6 cf rjmp .-116 ; 0x838 + { + _delay_ms(500); + } + break; + case MODE_ANIMATION_1: + s_vShowAnim(g_u8Mode); + 8ac: 81 e0 ldi r24, 0x01 ; 1 + 8ae: 7d dc rcall .-1798 ; 0x1aa + g_u8Mode = MODE_MEASURE; + 8b0: 10 92 29 01 sts 0x0129, r1 ; 0x800129 + 8b4: 3f ef ldi r19, 0xFF ; 255 + 8b6: 44 e3 ldi r20, 0x34 ; 52 + 8b8: 8c e0 ldi r24, 0x0C ; 12 + 8ba: 31 50 subi r19, 0x01 ; 1 + 8bc: 40 40 sbci r20, 0x00 ; 0 + 8be: 80 40 sbci r24, 0x00 ; 0 + 8c0: e1 f7 brne .-8 ; 0x8ba + 8c2: 00 c0 rjmp .+0 ; 0x8c4 + 8c4: 00 00 nop + 8c6: b8 cf rjmp .-144 ; 0x838 + _delay_ms(200); + break; + case MODE_ANIMATION_2: + s_vShowAnim(g_u8Mode); + 8c8: 82 e0 ldi r24, 0x02 ; 2 + 8ca: 6f dc rcall .-1826 ; 0x1aa + g_u8Mode = MODE_MEASURE; + 8cc: 10 92 29 01 sts 0x0129, r1 ; 0x800129 + 8d0: 9f ef ldi r25, 0xFF ; 255 + 8d2: a4 e3 ldi r26, 0x34 ; 52 + 8d4: bc e0 ldi r27, 0x0C ; 12 + 8d6: 91 50 subi r25, 0x01 ; 1 + 8d8: a0 40 sbci r26, 0x00 ; 0 + 8da: b0 40 sbci r27, 0x00 ; 0 + 8dc: e1 f7 brne .-8 ; 0x8d6 + 8de: 00 c0 rjmp .+0 ; 0x8e0 + 8e0: 00 00 nop + 8e2: aa cf rjmp .-172 ; 0x838 + +000008e4 <__umulhisi3>: + 8e4: a2 9f mul r26, r18 + 8e6: b0 01 movw r22, r0 + 8e8: b3 9f mul r27, r19 + 8ea: c0 01 movw r24, r0 + 8ec: a3 9f mul r26, r19 + 8ee: 01 d0 rcall .+2 ; 0x8f2 <__umulhisi3+0xe> + 8f0: b2 9f mul r27, r18 + 8f2: 70 0d add r23, r0 + 8f4: 81 1d adc r24, r1 + 8f6: 11 24 eor r1, r1 + 8f8: 91 1d adc r25, r1 + 8fa: 08 95 ret + +000008fc <_exit>: + 8fc: f8 94 cli + +000008fe <__stop_program>: + 8fe: ff cf rjmp .-2 ; 0x8fe <__stop_program> diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.map b/PoolClockHumidity/Debug/PoolClockHumidity.map new file mode 100644 index 0000000..d294e4e --- /dev/null +++ b/PoolClockHumidity/Debug/PoolClockHumidity.map @@ -0,0 +1,514 @@ +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/avr4\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + main.o (__umulhisi3) + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text.s_vSetDisplayDigits + 0x00000000 0xc 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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\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/avr4\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/avr4\libgcc.a(_umulhisi3.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/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o +LOAD 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/avr4\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/avr4\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/avr4\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/avr4\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4\libatmega88pa.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 0x900 + *(.vectors) + .vectors 0x00000000 0x34 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000034 . = ALIGN (0x2) + 0x00000034 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000034 0x0 linker stubs + *(.trampolines*) + 0x00000034 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000034 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000034 __ctors_start = . + *(.ctors) + 0x00000034 __ctors_end = . + 0x00000034 __dtors_start = . + *(.dtors) + 0x00000034 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000034 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x00000034 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000034 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000040 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_copy_data.o) + 0x00000040 __do_copy_data + .init4 0x00000056 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_clear_bss.o) + 0x00000056 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000066 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + *(.init9) + *(.text) + .text 0x0000006a 0x2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + 0x0000006a __vector_22 + 0x0000006a __vector_1 + 0x0000006a __vector_24 + 0x0000006a __vector_12 + 0x0000006a __bad_interrupt + 0x0000006a __vector_6 + 0x0000006a __vector_3 + 0x0000006a __vector_23 + 0x0000006a __vector_25 + 0x0000006a __vector_13 + 0x0000006a __vector_17 + 0x0000006a __vector_19 + 0x0000006a __vector_7 + 0x0000006a __vector_5 + 0x0000006a __vector_4 + 0x0000006a __vector_9 + 0x0000006a __vector_2 + 0x0000006a __vector_21 + 0x0000006a __vector_15 + 0x0000006a __vector_8 + 0x0000006a __vector_14 + 0x0000006a __vector_10 + 0x0000006a __vector_16 + 0x0000006a __vector_18 + 0x0000006a __vector_20 + 0x0000006c . = ALIGN (0x2) + *(.text.*) + .text.s_vInit 0x0000006c 0x34 main.o + 0x0000006c s_vInit + .text.s_vSetValue + 0x000000a0 0x26 main.o + 0x000000a0 s_vSetValue + .text.s_vReadButtons + 0x000000c6 0x54 main.o + 0x000000c6 s_vReadButtons + .text.__vector_11 + 0x0000011a 0x90 main.o + 0x0000011a __vector_11 + .text.s_vShowAnim + 0x000001aa 0x3cc main.o + 0x000001aa s_vShowAnim + .text.s_u8ReadSensor + 0x00000576 0x12c main.o + 0x00000576 s_u8ReadSensor + .text.main 0x000006a2 0x242 main.o + 0x000006a2 main + .text.libgcc.mul + 0x000008e4 0x18 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_umulhisi3.o) + 0x000008e4 __umulhisi3 + 0x000008fc . = ALIGN (0x2) + *(.fini9) + .fini9 0x000008fc 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + 0x000008fc _exit + 0x000008fc exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000008fc 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x00000900 _etext = . + +.data 0x00800100 0x24 load address 0x00000900 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + .data.g_au8Digits + 0x00800100 0x3 main.o + 0x00800100 g_au8Digits + *(.rodata) + *(.rodata*) + .rodata.g_au8Symbols + 0x00800103 0x20 main.o + *(.gnu.linkonce.d*) + 0x00800124 . = ALIGN (0x2) + *fill* 0x00800123 0x1 + 0x00800124 _edata = . + 0x00800124 PROVIDE (__data_end, .) + +.bss 0x00800124 0x8 + 0x00800124 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.g_u8ISRDigitSelect + 0x00800124 0x1 main.o + 0x00800124 g_u8ISRDigitSelect + .bss.g_u16Temperature + 0x00800125 0x2 main.o + 0x00800125 g_u16Temperature + .bss.g_u16Humidity + 0x00800127 0x2 main.o + 0x00800127 g_u16Humidity + .bss.g_u8Mode 0x00800129 0x1 main.o + .bss.g_u8ButtonCountBot + 0x0080012a 0x1 main.o + .bss.g_u8ButtonCountTop + 0x0080012b 0x1 main.o + *(COMMON) + 0x0080012c PROVIDE (__bss_end, .) + 0x00000900 __data_load_start = LOADADDR (.data) + 0x00000924 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080012c 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x0080012c _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 main.o + 0x31 (size before relaxing) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x58 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x58 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x228b + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_info 0x000005f4 0x1c97 main.o + +.debug_abbrev 0x00000000 0x838 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_abbrev 0x000005a2 0x296 main.o + +.debug_line 0x00000000 0xba4 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_line 0x00000133 0xa71 main.o + +.debug_frame 0x00000000 0xf8 + *(.debug_frame) + .debug_frame 0x00000000 0xf8 main.o + +.debug_str 0x00000000 0x4ef + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/gcc/dev/atmega88pa/avr4/crtatmega88pa.o + .debug_str 0x00000208 0x2e7 main.o + 0x31b (size before relaxing) + +.debug_loc 0x00000000 0x1e2d + *(.debug_loc) + .debug_loc 0x00000000 0x1e2d 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 0x168 + *(.debug_ranges) + .debug_ranges 0x00000000 0x168 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(PoolClockHumidity.elf elf32-avr) +LOAD linker stubs diff --git a/PoolClockHumidity/Debug/PoolClockHumidity.srec b/PoolClockHumidity/Debug/PoolClockHumidity.srec new file mode 100644 index 0000000..2c36cf8 --- /dev/null +++ b/PoolClockHumidity/Debug/PoolClockHumidity.srec @@ -0,0 +1,149 @@ +S0190000506F6F6C436C6F636B48756D69646974792E7372656338 +S113000019C033C032C031C030C02FC02EC02DC083 +S11300102CC02BC02AC081C028C027C026C025C040 +S113002024C023C022C021C020C01FC01EC01DC0C8 +S11300301CC01BC011241FBECFEFD4E0DEBFCDBF58 +S113004011E0A0E0B1E0E0E0F9E002C005900D921B +S1130050A432B107D9F721E0A4E2B1E001C01D92B6 +S1130060AC32B207E1F71DD349C4CACF8FEF8AB9C6 +S113007087E084B980E388B93B9843981092800064 +S11300808AE08093810084EC99E0909389008093C6 +S11300908800EFE6F0E080818260808378940895A0 +S11300A09DEC899F912D1124969596959695E0E067 +S11300B0F1E09283990F292F220F220F920F891BAF +S11300C0818360830895349906C080912B018F5FEA +S11300D080932B0102C010922B0135990AC08091A4 +S11300E02A018F5F80932A0190912B01933368F04A +S11300F006C010922A0180912B01833368F010927C +S11301002B0181E0809329010895833328F0109214 +S11301102A0182E08093290108951F920F920FB65D +S11301200F9211242F933F934F935F936F937F9379 +S11301308F939F93AF93BF93EF93FF9315B81BB81F +S11301408DE08A95F1F7000081E090E000902401B1 +S113015002C0880F991F0A94E2F785B9E09124013F +S1130160F0E0E050FF4FE081F0E0ED5FFE4F808172 +S11301708BB9809124018F5F833018F4809324011C +S113018002C0109224019FDFFF91EF91BF91AF91C4 +S11301909F918F917F916F915F914F913F912F919B +S11301A00F900FBE0F901F901895E0E0F1E090E1E2 +S11301B09283918390832FEB35E444E021503040C7 +S11301C04040E1F700C00000813021F0823009F4A2 +S11301D0E2C0C1C1E0E0F1E022E1228390E1918339 +S11301E090835FEB65E474E0515060407040E1F748 +S11301F000C000003CE03283918390838FEBA5E440 +S113020044E08150A0404040E1F700C0000088E095 +S11302108283918390835FEB65E474E05150604086 +S11302207040E1F700C00000828321839083AFEB2C +S113023045E454E0A15040405040E1F700C00000C4 +S11302408283318390836FEB75E4A4E06150704046 +S1130250A040E1F700C000008283818390834FEBCC +S113026055E464E0415050406040E1F700C00000B4 +S11302708283818341E040837FEBA5E454E07150A5 +S1130280A0405040E1F700C000008283818353E026 +S113029050836FEB75E4A4E061507040A040E1F737 +S11302A000C000008283818380836FEB75E4A4E047 +S11302B061507040A040E1F700C000008283818358 +S11302C080836FEB75E4A4E061507040A040E1F7D7 +S11302D000C000008283818350835FEB65E474E097 +S11302E0515060407040E1F700C000008283818378 +S11302F04083AFEB45E454E0A15040405040E1F767 +S113030000C000008283818390836FEB75E4A4E0D6 +S113031061507040A040E1F700C000008283318347 +S113032090834FEB55E464E0415050406040E1F766 +S113033000C000008283218390837FEBA5E444E026 +S11303407150A0404040E1F700C0000082839183D7 +S113035090835FEB65E474E0515060407040E1F7D6 +S113036000C000003283918390838FEBA5E434E0D6 +S11303708150A0403040E1F700C000002283918307 +S113038090834FEB55E464E0415050406040E1F706 +S113039000C00000E0C0E0E0F1E022E1228380E15F +S11303A0818380837FEB95E4A4E071509040A0406A +S11303B0E1F700C000003CE03283818380834FEB8F +S11303C055E464E0415050406040E1F700C0000053 +S11303D098E09283818380837FEBA5E444E07150AD +S11303E0A0404040E1F700C0000092832183808355 +S11303F05FEB65E474E0515060407040E1F700C089 +S11304000000928331838083AFEB45E454E0A15034 +S113041040405040E1F700C0000092839183808304 +S11304206FEB75E4A4E061507040A040E1F700C0B8 +S113043000009283918341E040835FEB65E474E0C4 +S1130440515060407040E1F700C0000092839183F6 +S113045053E05083AFEB65E474E0A150604070401A +S1130460E1F700C00000928391839083AFEB65E4D1 +S113047074E0A15060407040E1F700C00000528376 +S113048091839083AFEB65E474E0A15060407040C9 +S1130490E1F700C00000428391839083AFEB65E4F1 +S11304A074E0A15060407040E1F700C00000828316 +S11304B091839083AFEB65E474E0A1506040704099 +S11304C0E1F700C00000828351839083AFEB55E4D1 +S11304D064E0A15050406040E1F700C00000828316 +S11304E0418390837FEBA5E444E07150A0404040F9 +S11304F0E1F700C000008283818390835FEB65E4B1 +S113050074E0515060407040E1F700C00000828305 +S1130510818330839FEBA5E434E09150A0403040C8 +S1130520E1F700C000008283818320834FEB55E410 +S113053064E0415050406040E1F700C00000828315 +S1130540818380837FEB85E494E071508040904008 +S1130550E1F700C00000E0E0F1E080E18283818304 +S11305608083AFEB25E434E0A15020403040E1F734 +S113057000C0000008950F931F93CF93DF9300D022 +S113058000D01F92CDB7DEB73B9889EC07C036E0A8 +S11305903A95F1F700C0815009F46EC03399F7CF52 +S11305A086E507C096E09A95F1F700C0815009F4FA +S11305B065C0339BF7CF86E507C0A6E0AA95F1F79F +S11305C000C0815009F45CC03399F7CFFE01319625 +S11305D085E0DF011D928A95E9F7AE014A5F5F4F1E +S11305E022C0B6E0BA95F1F700C0915011F44AC0A8 +S11305F098E3339BF6CF38EC3A95F1F7220F339911 +S113060008C00BC0A6E0AA95F1F700C0915011F400 +S11306103BC09EE23399F6CF2160815049F7219384 +S11306204E175F0719F088E020E0E2CFA981B0E01F +S1130630EA81F0E06B8170E04C8150E09D012E0F67 +S11306403F1F260F371F240F351F33270D8110E05E +S113065020173107D9F4BA2FAA27EA0FFB1FF0930A +S11306602801E0932701762F6627460F571F5093E2 +S11306702601409325010BC082E009C083E007C036 +S113068084E005C085E003C086E001C087E00F90E8 +S11306900F900F900F900F90DF91CF911F910F91BA +S11306A00895E4DCE0E0F1E090E1928391839083AB +S11306B0AFE4B3EC1197F1F700C0000083E182834B +S11306C091839083BFE70FE412E1B15000401040E2 +S11306D0E1F700C000008283818390832FE73FE429 +S11306E042E1215030404040E1F700C000008283E5 +S11306F0818380838FE79FE4A2E181509040A040F2 +S1130700E1F700C0000035E080E123E1D9E1C7E072 +S1130710BAE196E1ABE17CE16DE15EE182832183A4 +S1130720D0830FEB15E444E0015010404040E1F762 +S113073000C0000082838183C0830FEB15E444E092 +S1130740015010404040E1F700C0000082838183E3 +S1130750B0830FEB15E444E0015010404040E1F752 +S113076000C0000082839183A0830FEB15E444E072 +S1130770015010404040E1F700C000009283918393 +S113078090830FEB15E444E0015010404040E1F742 +S113079000C000007283918380830FEB15E444E072 +S11307A0015010404040E1F700C0000062838183A3 +S11307B080830FEB15E444E0015010404040E1F722 +S11307C000C000005283818380830FEB15E444E072 +S11307D0015010404040E1F700C000000FE10283E7 +S11307E0218380831FEB45E404E011504040004026 +S11307F0E1F700C000002283218320831FEB45E43E +S113080004E0115040400040E1F700C000003150C6 +S113081009F084CFE0E0F1E080E18283818380838A +S11308201FEF2EE934E2115020403040E1F700C0C0 +S11308300000EF010CE010E1809129018130B1F159 +S113084020F0823009F440C0F9CF339B25C03B9A95 +S113085043984FE788E391E0415080409040E1F7AE +S113086000C0000088DE811110C020912701309162 +S11308702801ADECBCEC36D0969587959695879576 +S1130880969587956FE00CDC03C00A8389831883EF +S1130890809129018111D0CFAFE7B4E82EE1A150B6 +S11308A0B0402040E1F700C00000C6CF81E07DDC0D +S11308B0109229013FEF44E38CE0315040408040E6 +S11308C0E1F700C00000B8CF82E06FDC109229018C +S11308D09FEFA4E3BCE09150A040B040E1F700C01A +S11308E00000AACFA29FB001B39FC001A39F01D073 +S11308F0B29F700D811D1124911D0895F894FFCFAE +S1130900101010FC24BAAE66CEDEA4FEEE161EDA7B +S113091012ADF3000250802004081040A02C0C18E3 +S107092058D0C000E7 +S9030000FC diff --git a/PoolClockHumidity/Debug/main.d b/PoolClockHumidity/Debug/main.d new file mode 100644 index 0000000..58005fb --- /dev/null +++ b/PoolClockHumidity/Debug/main.d @@ -0,0 +1,49 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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 \ + 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 + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.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\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\Packs\atmel\ATmega_DFP\1.2.132\include/avr/iom88pa.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: + +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: diff --git a/PoolClockHumidity/Debug/main.o b/PoolClockHumidity/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..5b424a27aa4a0537819ac506fe4647ba45416f98 GIT binary patch literal 52652 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 H%;5h6BLyI( literal 0 HcmV?d00001 diff --git a/PoolClockHumidity/Debug/makedep.mk b/PoolClockHumidity/Debug/makedep.mk new file mode 100644 index 0000000..6a14fde --- /dev/null +++ b/PoolClockHumidity/Debug/makedep.mk @@ -0,0 +1,6 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +main.c + diff --git a/PoolClockHumidity/PoolClockHumidity.componentinfo.xml b/PoolClockHumidity/PoolClockHumidity.componentinfo.xml new file mode 100644 index 0000000..a769be1 --- /dev/null +++ b/PoolClockHumidity/PoolClockHumidity.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.2.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include + + include + C + + + include + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\include\avr\iom88pa.h + + header + C + PWoJcvZZTeGBgzC7OP4j4w== + + include/avr/iom88pa.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.c + template + source + C Exe + kmH2PIOziCxLiJPtoFZn0Q== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa + + libraryPrefix + GCC + + + gcc/dev/atmega88pa + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.132/Atmel.ATmega_DFP.pdsc + 1.2.132 + true + ATmega88PA + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/PoolClockHumidity/PoolClockHumidity.cproj b/PoolClockHumidity/PoolClockHumidity.cproj new file mode 100644 index 0000000..73700b2 --- /dev/null +++ b/PoolClockHumidity/PoolClockHumidity.cproj @@ -0,0 +1,126 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + {568da8c2-e6fe-4e7c-a24e-9e4900dab3c9} + ATmega88PA + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + PoolClockHumidity + PoolClockHumidity + PoolClockHumidity + Native + true + false + true + true + + + true + + 2 + 0 + + + + + + + + + + + + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + + + + + + + -mmcu=atmega88pa -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\gcc\dev\atmega88pa" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.132\include + + + Default (-Wa,-g) + + + + + + compile + + + + \ No newline at end of file diff --git a/PoolClockHumidity/main.c b/PoolClockHumidity/main.c new file mode 100644 index 0000000..c0598b2 --- /dev/null +++ b/PoolClockHumidity/main.c @@ -0,0 +1,558 @@ +#include +#include +#include +#define F_CPU 20000000UL //20 MHz +#include + +/* 7-Segment display: */ +#define NUM_DIGITS 3U //3 Digits +#define DIGIT_TENS 2U //left +#define DIGIT_ONES 1U //middle +#define DIGIT_UNIT 0U //right +#define SELECT_DIGIT(digit) (1U << digit) + +/* DHT22 peripherals: */ +#define DDR_SENSOR DDRC +#define PORT_SENSOR PORTC +#define PIN_SENSOR PINC +#define SENSOR PINC3 + +/* DHT22 commands: */ +#define SENSOR_sda_out DDR_SENSOR |= (1 << SENSOR) +#define SENSOR_sda_in DDR_SENSOR &= ~(1 << SENSOR) // release sda => hi in consequence of pullup +#define SENSOR_sda_low PORT_SENSOR &= ~(1 << SENSOR) +#define SENSOR_is_hi PIN_SENSOR & (1 << SENSOR) +#define SENSOR_is_low !(PIN_SENSOR & (1 << SENSOR)) + +#define MODE_MEASURE 0U +#define MODE_ANIMATION_1 1U +#define MODE_ANIMATION_2 2U + +#define ANIMATION_DELAY_MS 70U + +#define ANIMATION_START_DELAY_MS 70U + +#define BUTTON_THRESHOLD 50 //software debounce + +/* Symbol indexes: */ +#define SYM_n 10U +#define SYM_o 11U +#define SYM_E 12U +#define SYM_R 13U +#define SYM_DEG_CELCIUS 14U +#define SYM_P_P 15U +#define SYM_OFF 16U +#define SYM_DASH 17U +#define SYM_I 18U +#define SYM_SEG_A 19U +#define SYM_SEG_B 20U +#define SYM_SEG_C 21U +#define SYM_SEG_D 22U +#define SYM_SEG_E 23U +#define SYM_SEG_F 24U +#define SYM_SEG_AB 25U +#define SYM_SEG_BCD 26U +#define SYM_SEG_CD 27U +#define SYM_SEG_DE 28U +#define SYM_SEG_DEF 29U +#define SYM_SEG_AEF 30U +#define SYM_SEG_AF 31U + +/* + 7-Segment Layout: + + A + F B + G + E C + D P + + Pin 7 6 5 4 3 2 1 0 + Segment A F B E D C G P +*/ +static uint8_t g_au8Symbols[32U] = +{ +/* 00 */ 0b11111100U, //0 (ABCDEF) +/* 01 */ 0b00100100U, //1 (BC) +/* 02 */ 0b10111010U, //2 (ABDEG) +/* 03 */ 0b10101110U, //3 (ABCDG) +/* 04 */ 0b01100110U, //4 (BCFG) +/* 05 */ 0b11001110U, //5 (ACDFG) +/* 06 */ 0b11011110U, //6 (ACDEFG) +/* 07 */ 0b10100100U, //7 (ABC) +/* 08 */ 0b11111110U, //8 (ABCDEFG) +/* 09 */ 0b11101110U, //9 (ABCDFG) +/* 10 */ 0b00010110U, //n (CEG) SYM_n +/* 11 */ 0b00011110U, //o (CDEG) SYM_o +/* 12 */ 0b11011010U, //E (ADEFG) SYM_E +/* 13 */ 0b00010010U, //r (EG) SYM_r +/* 14 */ 0b10101101U, //degC (ABCDP) SYM_DEG_CELCIUS +/* 15 */ 0b11110011U, //P. (ABEFGP) SYM_P_P +/* 16 */ 0b00000000U, //OFF SYM_OFF +/* 17 */ 0b00000010U, //- (G) SYM_DASH +/* 18 */ 0b01010000U, //I (EF) SYM_I +/* 19 */ 0b10000000U, //SegA SYM_SEG_A +/* 20 */ 0b00100000U, //SegB SYM_SEG_B +/* 21 */ 0b00000100U, //SegC SYM_SEG_C +/* 22 */ 0b00001000U, //SegD SYM_SEG_D +/* 23 */ 0b00010000U, //SegE SYM_SEG_E +/* 24 */ 0b01000000U, //SegF SYM_SEG_F +/* 25 */ 0b10100000U, //SegAB SYM_SEG_AB +/* 26 */ 0b00101100U, //SegBCD SYM_SEG_BCD +/* 27 */ 0b00001100U, //SegCD SYM_SEG_CD +/* 28 */ 0b00011000U, //SegDE SYM_SEG_DE +/* 29 */ 0b01011000U, //SegDEF SYM_SEG_DEF +/* 30 */ 0b11010000U, //SegAEF SYM_SEG_AEF +/* 31 */ 0b11000000U //SegAF SYM_SEG_AF +}; + +static uint8_t g_u8ButtonCountTop = 0U; //upper button counter +static uint8_t g_u8ButtonCountBot = 0U; //lower button counter +static uint8_t g_u8Mode = MODE_MEASURE; //Current display mode + + +uint16_t g_u16Humidity = 0U; +uint16_t g_u16Temperature = 0U; + +uint8_t g_u8ISRDigitSelect = 0U; +uint8_t g_au8Digits[3U] = +{ + SYM_OFF, //unit + SYM_OFF, //ones + SYM_OFF //tens +}; + +void s_vInit( void ); +void s_vSetValue( uint8_t u8Value, uint8_t u8Unit ); +void s_vSetDisplayDigits( uint8_t u8Tens, uint8_t u8Ones, uint8_t u8Unit ); + +void s_vReadButtons( void ); +void s_vShowAnim( uint8_t u8Select ); + +uint8_t s_u8ReadSensor( void ); + +/************************************************************************/ +/* Timer1 ISR - show values on display */ +/************************************************************************/ +ISR ( TIMER1_COMPA_vect ) +{ + PORTB = 0; + PORTD = 0; + _delay_us(2); + PORTB = SELECT_DIGIT(g_u8ISRDigitSelect); + PORTD = g_au8Symbols[g_au8Digits[g_u8ISRDigitSelect]]; + g_u8ISRDigitSelect++; + if (g_u8ISRDigitSelect > 2U) + { + g_u8ISRDigitSelect = 0U; + } + + /* Read and evaluate button status */ + s_vReadButtons(); +} + +/************************************************************************/ +/* main() */ +/************************************************************************/ +int main(void) +{ + uint8_t u8ErrorCode = 0U; + uint8_t u8Loop = 0U; + + s_vInit(); + + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(10); + + s_vSetDisplayDigits( SYM_SEG_A, SYM_OFF, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_OFF ); + _delay_ms(300); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_A ); + _delay_ms(300); + + while ( u8Loop < 5U ) + { + s_vSetDisplayDigits( SYM_OFF, SYM_SEG_A, SYM_SEG_AB ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, 7U ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_SEG_BCD ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_SEG_D, SYM_SEG_CD ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_D, SYM_SEG_D, SYM_SEG_D ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_DE, SYM_SEG_D, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_DEF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_AEF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_AF, SYM_SEG_A, SYM_OFF ); + _delay_ms(ANIMATION_START_DELAY_MS); + s_vSetDisplayDigits( SYM_SEG_A, SYM_SEG_A, SYM_SEG_A ); + _delay_ms(ANIMATION_START_DELAY_MS); + u8Loop++; + } + + /* Set default value: */ + //s_vSetDisplayDigits( SYM_DASH, SYM_DASH, SYM_DASH ); + + /* wait 3 seconds for humity sensor */ + //_delay_ms(3000); + + /* Set default value: */ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(600); + + while ( 1 ) + { + switch ( g_u8Mode ) + { + case MODE_MEASURE: + if ( SENSOR_is_hi ) + { + SENSOR_sda_out; + SENSOR_sda_low; + _delay_ms(20); + u8ErrorCode = s_u8ReadSensor(); + if ( 0U == u8ErrorCode ) + { + s_vSetValue( g_u16Humidity / 10, SYM_P_P ); + //vSetDisplayValues( g_u16Temperature / 10, SYM_DEG_CELCIUS ); + } + else + { + s_vSetDisplayDigits( SYM_E, u8ErrorCode, SYM_OFF ); + } + } + if ( g_u8Mode == MODE_MEASURE ) + { + _delay_ms(500); + } + break; + case MODE_ANIMATION_1: + s_vShowAnim(g_u8Mode); + g_u8Mode = MODE_MEASURE; + _delay_ms(200); + break; + case MODE_ANIMATION_2: + s_vShowAnim(g_u8Mode); + g_u8Mode = MODE_MEASURE; + _delay_ms(200); + break; + default: + break; + } //end switch + + // _delay_ms(3000); //wait 3 seconds for new measurement + } //end while(1) + + return 0; +} + +/************************************************************************/ +/* Initialize inputs and outputs */ +/************************************************************************/ +void s_vInit( void ) +{ + /* Port D - Pins 0-7: Outputs */ + DDRD = 0b11111111U; + + /* Port B - Pins 0-2: Outputs */ + DDRB = 0b00000111U; + + /* Port C - Pins 4-5: Inputs with internal Pull-up */ + PORTC = 0b00110000U; + + /* Sensor init: */ + DDR_SENSOR &= ~(1 << SENSOR); // define as input + PORT_SENSOR &= ~(1 << SENSOR); // disable pullup + + /* 16-bit TIMER1 in CTC mode + * prescaler = 8 + * 20 MHz / 8 = 2.5 MHz + * Compare value = 2500 => 1 ms IRQ + */ + TCCR1A = 0U; + TCCR1B = (1< BUTTON_THRESHOLD ) + { + g_u8ButtonCountTop = 0U; //reset top counter + g_u8Mode = MODE_ANIMATION_1; + } + else if ( g_u8ButtonCountBot > BUTTON_THRESHOLD ) + { + g_u8ButtonCountBot = 0U; //reset bottom counter + g_u8Mode = MODE_ANIMATION_2; + } + + return; //void +} +/************************************************************************/ +/* */ +/************************************************************************/ +void s_vShowAnim( uint8_t u8Select ) +{ + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + switch ( u8Select ) + { + case MODE_ANIMATION_1: //fade from left to right and from right to left + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + break; + case MODE_ANIMATION_2: //fade from left to right and clear + s_vSetDisplayDigits( SYM_I, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_E, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, SYM_I, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, SYM_E, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 8U, 8U, 1U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 3U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 8U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( 3U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( 1U, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, 8U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( SYM_OFF, 3U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, 1U, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, 8U ); + _delay_ms(ANIMATION_DELAY_MS); + + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_E ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_I ); + _delay_ms(ANIMATION_DELAY_MS); + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + break; + default: + break; + } //end switch + s_vSetDisplayDigits( SYM_OFF, SYM_OFF, SYM_OFF ); + _delay_ms(ANIMATION_DELAY_MS); + + return; //void +} + +/************************************************************************/ +/* Read humidity and temperature from DHT22 */ +/************************************************************************/ +uint8_t s_u8ReadSensor( void ) +{ + uint8_t timeout = 200; + + SENSOR_sda_in; + + // Bus master has released time min: 20us, typ: 30us, max: 200us + while ( SENSOR_is_hi ) + { + _delay_us(1); + if ( !timeout-- ) + { + return 2; + } + } + + // AM2302 response signal min: 75us typ:80us max:85us + timeout = 85; + while(SENSOR_is_low) + { + _delay_us(1); + if (!timeout--) + { + return 3; + } + } // response to low time + + timeout = 85; + while(SENSOR_is_hi) + { + _delay_us(1); + if (!timeout--) + { + return 4; + } + } // response to high time + + + /* + * time in us: min typ max + * signal 0 high time: 22 26 30 (bit=0) + * signal 1 high time: 68 70 75 (bit=1) + * signal 0,1 down time: 48 50 55 + */ + + uint8_t sensor_data[5]={0}; + + for(uint8_t i = 0; i < 5; i++) + { + uint8_t sensor_byte = 0; + + // get 8 bits from sensor + for(uint8_t j = 1; j <= 8; j++) + { + // wait for sensor response + timeout = 55; + while(SENSOR_is_low) + { + _delay_us(1); + + // if timeout == 0 => sensor do not response + if (!timeout--) + { + return 5; + } + } + + // wait 30 us to check if bit is logical "1" or "0" + _delay_us(30); + sensor_byte <<= 1; // add new lower bit + + // If sda ist high after 30 us then bit is logical "1" else it was a logical "0" + // For a logical "1" sda have to be low after 75 us. + if (SENSOR_is_hi) + { + sensor_byte |= 1; // add logical "1" + timeout = 45; // 30us - 75us = 45us + + while(SENSOR_is_hi) + { + _delay_us(1); + + if (!timeout--) + { + return 6; + } + } + } + } + + sensor_data[i] = sensor_byte; + } + + // checksum + if ( ((sensor_data[0] + sensor_data[1] + sensor_data[2] + sensor_data[3]) & 0xff ) != sensor_data[4]) + { + // debug output + //printf("%b %b %b %b %b %b" CR, sensor_data[0], sensor_data[1], sensor_data[2], sensor_data[3], sensor_data[4], ((sensor_data[0]+sensor_data[1]+sensor_data[2]+sensor_data[3]) & 0xff )); + return 7; + } + + g_u16Humidity = (sensor_data[0] << 8) + sensor_data[1]; + g_u16Temperature = (sensor_data[2] << 8) + sensor_data[3]; + + return 0; +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8311372 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Pool Clock