commit 7f2d49b333c8d7c8afb0c54fc8e22041e176ecc5 Author: Julian Date: Sat Jul 1 12:37:05 2023 +0200 Initial commit 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 0000000..2648523 Binary files /dev/null and b/PoolClock/Debug/PoolClock.elf differ 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 0000000..471b906 Binary files /dev/null and b/PoolClock/Debug/PoolClockWaterTemp.elf differ 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 0000000..02f4734 Binary files /dev/null and b/PoolClock/Debug/main.o differ diff --git a/PoolClock/Debug/makedep.mk b/PoolClock/Debug/makedep.mk new file mode 100644 index 0000000..6a14fde --- /dev/null +++ b/PoolClock/Debug/makedep.mk @@ -0,0 +1,6 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +main.c + diff --git a/PoolClock/PoolClockWaterTemp.componentinfo.xml b/PoolClock/PoolClockWaterTemp.componentinfo.xml new file mode 100644 index 0000000..7e42004 --- /dev/null +++ b/PoolClock/PoolClockWaterTemp.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 + 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 0000000..e876150 Binary files /dev/null and b/PoolClockAirTemp/Debug/PoolClockAirTemp.elf differ 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 0000000..3cefdee Binary files /dev/null and b/PoolClockAirTemp/Debug/main.o differ diff --git a/PoolClockAirTemp/Debug/makedep.mk b/PoolClockAirTemp/Debug/makedep.mk new file mode 100644 index 0000000..6a14fde --- /dev/null +++ b/PoolClockAirTemp/Debug/makedep.mk @@ -0,0 +1,6 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +main.c + diff --git a/PoolClockAirTemp/PoolClockAirTemp.componentinfo.xml b/PoolClockAirTemp/PoolClockAirTemp.componentinfo.xml new file mode 100644 index 0000000..f95a1b3 --- /dev/null +++ b/PoolClockAirTemp/PoolClockAirTemp.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 + 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 0000000..22981de Binary files /dev/null and b/PoolClockHumidity/Debug/PoolClockHumidity.elf differ 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 0000000..5b424a2 Binary files /dev/null and b/PoolClockHumidity/Debug/main.o differ 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