commit f37d0079716647a75c8fbfcac01adb0c14605ff9 Author: Adrien VAN DAMME Date: Sun Feb 5 12:05:32 2017 +0100 first commit diff --git a/Debug/Makefile b/Debug/Makefile new file mode 100644 index 0000000..1a37b1f --- /dev/null +++ b/Debug/Makefile @@ -0,0 +1,222 @@ +################################################################################ +# 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:= + +# Every subdirectory with source files must be described here +SUBDIRS := \ +../lib + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../fonction.cpp \ +../lib/LCD.cpp \ +../lib/hc74595.cpp \ +../lib/DCF77.cpp \ +../lib/DS1307.cpp \ +../lib/timer.cpp \ +../lib/UART.cpp \ +../Nixie\ clock.cpp + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +fonction.o \ +lib/LCD.o \ +lib/hc74595.o \ +lib/DCF77.o \ +lib/DS1307.o \ +lib/timer.o \ +lib/UART.o \ +Nixie\ clock.o + +OBJS_AS_ARGS += \ +fonction.o \ +lib/LCD.o \ +lib/hc74595.o \ +lib/DCF77.o \ +lib/DS1307.o \ +lib/timer.o \ +lib/UART.o \ +"Nixie clock.o" + +C_DEPS += \ +fonction.d \ +lib/LCD.d \ +lib/hc74595.d \ +lib/DCF77.d \ +lib/DS1307.d \ +lib/timer.d \ +lib/UART.d \ +Nixie\ clock.d + +C_DEPS_AS_ARGS += \ +fonction.d \ +lib/LCD.d \ +lib/hc74595.d \ +lib/DCF77.d \ +lib/DS1307.d \ +lib/timer.d \ +lib/UART.d \ +"Nixie clock.d" + +OUTPUT_FILE_PATH +=Nixie\ clock.elf + +OUTPUT_FILE_PATH_AS_ARGS +="Nixie clock.elf" + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +# AVR32/GNU C Compiler +./fonction.o: .././fonction.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/LCD.o: ../lib/LCD.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/hc74595.o: ../lib/hc74595.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/DCF77.o: ../lib/DCF77.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/DS1307.o: ../lib/DS1307.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/timer.o: ../lib/timer.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/UART.o: ../lib/UART.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./Nixie\ clock.o: .././Nixie\ clock.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + +./%.o: .././%.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +lib/%.o: ../lib/%.cpp + @echo Building file: $< + @echo Invoking: AVR8/GNU C Compiler : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p -c -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) + @echo Building target: $@ + @echo Invoking: AVR8/GNU Linker : 3.4.4 + $(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="Nixie clock.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Nixie clock.elf" "Nixie clock.hex" + "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\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 "Nixie clock.elf" "Nixie clock.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "Nixie clock.elf" > "Nixie clock.lss" + "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "Nixie clock.elf" "Nixie clock.srec" + "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1056\avr8-gnu-toolchain\bin\avr-size.exe" "Nixie clock.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "Nixie clock.elf" "Nixie clock.a" "Nixie clock.hex" "Nixie clock.lss" "Nixie clock.eep" "Nixie clock.map" "Nixie clock.srec" + \ No newline at end of file diff --git a/Debug/Nixie clock.d b/Debug/Nixie clock.d new file mode 100644 index 0000000..3a3fccb --- /dev/null +++ b/Debug/Nixie clock.d @@ -0,0 +1,49 @@ +Nixie clock.d Nixie clock.o: .././Nixie\ clock.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + ../././fonction.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +../././fonction.h: diff --git a/Debug/Nixie clock.eep b/Debug/Nixie clock.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/Debug/Nixie clock.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Debug/Nixie clock.elf b/Debug/Nixie clock.elf new file mode 100644 index 0000000..34561fc Binary files /dev/null and b/Debug/Nixie clock.elf differ diff --git a/Debug/Nixie clock.hex b/Debug/Nixie clock.hex new file mode 100644 index 0000000..65a3932 --- /dev/null +++ b/Debug/Nixie clock.hex @@ -0,0 +1,364 @@ +:100000000C9436000C94BE090C945E000C945E00B7 +:100010000C945E000C945E000C945E000C945E00E8 +:100020000C945E000C945E000C945E000C94FD0A2F +:100030000C945E000C945E000C945E000C945E00C8 +:100040000C945E000C945E000C945E000C945E00B8 +:100050000C945E000C945E000C945E000C945E00A8 +:100060000C945E000C945E00C806ED0911241FBEBE +:10007000CFEFD8E0DEBFCDBF11E0A0E0B1E0E4EA11 +:10008000F6E102C005900D92A030B107D9F721E04A +:10009000A0E0B1E001C01D92AB32B207E1F710E081 +:1000A000CCE6D0E004C02297FE010E944C0BC8367B +:1000B000D107C9F70E943F0B0C94500B0C94000021 +:1000C0008A3091054CF020E030E02F5F3F4F0A97D7 +:1000D0008A309105D4F702C020E030E022953295B5 +:1000E000307F3227207F3227822B932B08950E9466 +:1000F000220B529887B18F7C87B984B1887F84B9ED +:1001000087B1876087B988B1887F88B984B18863EF +:1001100084B985B1877C85B98DE091E00E94B00AF1 +:10012000803829F460E08DE091E00E94C80A0895CB +:100130008DE091E00E94B80A90E0BC016295729552 +:10014000707F7627607F762795958795959587951B +:100150009595879595958795682B40E083E091E08C +:100160000E9409078DE091E00E94B40A90E0BC0172 +:1001700062957295707F7627607F76279595879533 +:10018000959587959595879595958795682B40E0EA +:1001900083E091E00E9409078DE091E00E94B00A9F +:1001A00090E0BC0162957295707F7627607F76271C +:1001B0009595879595958795959587959595879527 +:1001C000682B40E083E091E00E94090783E091E022 +:1001D0000E949C0708958DE091E00E94BC0A90E087 +:1001E000BC0162957295707F7627607F7627959522 +:1001F0008795959587959595879595958795682B7E +:1002000040E083E091E00E9409078DE091E00E94C8 +:10021000C00A90E0BC0162957295707F7627607F7E +:100220007627959587959595879595958795959535 +:100230008795682B40E083E091E00E9409078DE0FC +:1002400091E00E94C40A90E0BC0162957295707FB3 +:100250007627607F762795958795959587959595CF +:10026000879595958795682B40E083E091E00E9403 +:10027000090783E091E00E949C0708958DE091E0DA +:100280000E94B00A0E94980008950196662309F41E +:10029000C8C08230910509F446C08330910509F445 +:1002A00081C0019709F084C140E06FEF83E091E0E5 +:1002B0000E9409078DE091E00E94C00A90E0BC0115 +:1002C00062957295707F7627607F762795958795E2 +:1002D000959587959595879595958795682B40E099 +:1002E00083E091E00E9409078DE091E00E94C40A3A +:1002F00090E0BC0162957295707F7627607F7627CB +:1003000095958795959587959595879595958795D5 +:10031000682B40E083E091E00E94090783E091E0D0 +:100320000E949C0708958DE091E00E94BC0A90E035 +:10033000BC0162957295707F7627607F76279595D0 +:100340008795959587959595879595958795682B2C +:1003500040E083E091E00E94090740E06FEF83E016 +:1003600091E00E9409078DE091E00E94C40A90E0AC +:10037000BC0162957295707F7627607F7627959590 +:100380008795959587959595879595958795682BEC +:1003900040E083E091E00E94090783E091E00E9441 +:1003A0009C0708958DE091E00E94BC0A90E0BC019A +:1003B00062957295707F7627607F762795958795F1 +:1003C000959587959595879595958795682B40E0A8 +:1003D00083E091E00E9409078DE091E00E94C00A4D +:1003E00090E0BC0162957295707F7627607F7627DA +:1003F00095958795959587959595879595958795E5 +:10040000682B40E083E091E00E94090740E06FEF35 +:1004100083E091E00E94090783E091E00E949C073D +:1004200008958230910509F446C08330910509F49E +:1004300081C0019709F0BCC040E06FEF83E091E01C +:100440000E9409078DE091E00E94B40A90E0BC018F +:1004500062957295707F7627607F76279595879550 +:10046000959587959595879595958795682B40E007 +:1004700083E091E00E9409078DE091E00E94B00ABC +:1004800090E0BC0162957295707F7627607F762739 +:100490009595879595958795959587959595879544 +:1004A000682B40E083E091E00E94090783E091E03F +:1004B0000E949C0708958DE091E00E94B80A90E0A8 +:1004C000BC0162957295707F7627607F762795953F +:1004D0008795959587959595879595958795682B9B +:1004E00040E083E091E00E94090740E06FEF83E085 +:1004F00091E00E9409078DE091E00E94B00A90E02F +:10050000BC0162957295707F7627607F76279595FE +:100510008795959587959595879595958795682B5A +:1005200040E083E091E00E94090783E091E00E94AF +:100530009C0708958DE091E00E94B80A90E0BC010C +:1005400062957295707F7627607F7627959587955F +:10055000959587959595879595958795682B40E016 +:1005600083E091E00E9409078DE091E00E94B40AC7 +:1005700090E0BC0162957295707F7627607F762748 +:100580009595879595958795959587959595879553 +:10059000682B40E083E091E00E94090740E06FEFA4 +:1005A00083E091E00E94090783E091E00E949C07AC +:1005B00008950E94360B809302011A9B03C088EEB7 +:1005C00093E003C0813CF9F4FACF1A9949C040C0C6 +:1005D00083B1109201011092000183B18873885F8A +:1005E000893320F485FF03C02D9A02C080E02D9846 +:1005F00084FF02C02C9A01C02C9883FF02C02B9A62 +:1006000008952B980895199B03C088EE93E004C0C9 +:10061000803C09F03FC0F9CF19992CC034C083B198 +:10062000109201011092000183B183B18873885048 +:1006300085FF02C02D9A01C02D9884FF02C02C9A1C +:1006400001C02C9883FF02C02B9A08952B9808951F +:100650008091000190910101892B09F4B9CFB9CFA4 +:10066000EFE9FFE03197F1F700C000000197009734 +:1006700079F3ABCFEFE9FFE03197F1F700C000006D +:100680000197009749F68091000190910101892B13 +:1006900031F2C6CF0895BF92CF92DF92EF92FF92D0 +:1006A0000F931F93CF93DF93189B95C2189BAEC1F6 +:1006B0008FE99FE00197F1F700C000001899F8CF8B +:1006C000A5C10F5F1F4F083C110514F000E010E0BA +:1006D000189B0BC0189B08C0EFE9FFE03197F1F7BA +:1006E00000C000001899F8CF2196C330D10509F455 +:1006F0006CC03CF4C130D10579F0C230D10509F1AC +:1007000077C1C530D10509F4EAC00CF4A5C0C630E4 +:10071000D10509F426C16CC10536110534F060E03D +:1007200082E090E00E94450102C00E9498001A9960 +:1007300002C0199B44C260E08DE091E00E94C80AAB +:100740003EC20536110534F060E081E090E00E9481 +:10075000450102C00E9498001A9B13C08E2D9F2D48 +:100760001A9975C16AC1807F60E1680F02C061E0BB +:10077000680F603608F060E08DE091E00E94CE0ADC +:100780001EC2199B1CC28E2D9F2D199973C169C160 +:1007900082958F70682F70E0615071096295729533 +:1007A000707F7627607F7627696004C0882329F0F0 +:1007B0006FEF680F613618F403C069E501C069E5A1 +:1007C0008DE091E00E94CE0AFAC10536110534F0A1 +:1007D00060E080E090E00E94450102C00E94980025 +:1007E0001A9B17C08E2D9F2D1A9958C14DC1807F1D +:1007F00060E1680F08C0833228F49F5F807F692F13 +:10080000682B01C060E040E08DE091E00E94D40AD6 +:10081000D6C1199BD4C18E2D9F2D199951C148C1A4 +:10082000982F9F7069F482958F7090E00197829560 +:100830009295907F9827807F9827682F696006C0DF +:100840009150807F692F682B01C063E240E08DE00A +:1008500091E00E94D40AB3C140980536110534F0E6 +:100860006D2D80E090E00E94450102C00E94EB00E7 +:100870001A9B15C08E2D9F2D1A9936C12BC1807FD2 +:1008800060E1680F04C09F5F807F692F682B62332F +:1008900008F060E08DE091E00E94E00A90C1199BB1 +:1008A0008EC18E2D9F2D199932C128C182958F70CE +:1008B00090E0019782959295907F9827807F982766 +:1008C000682F696004C09150807F692F682B611187 +:1008D00001C061E38DE091E00E94E00A70C105363D +:1008E000110534F06D2D81E090E00E94450102C0B9 +:1008F0000E94EB001A9B15C08E2D9F2D1A991BC1CB +:1009000010C1807F60E1680F04C09F5F807F692F06 +:10091000682B633108F06D2D8DE091E00E94E60AAE +:100920004EC1199B4CC18E2D9F2D199917C10DC118 +:1009300082958F7090E0019782959295907F98278D +:10094000807F9827682F696004C09150807F692F4D +:10095000682B611101C06C2D8DE091E00E94E60AC8 +:100960002EC10536110534F06D2D82E090E00E9415 +:10097000450102C00E94EB001A9B15C08E2D9F2DD1 +:100980001A99F6C0FFC0807F60E1680F04C09F5FC6 +:10099000807F692F682B6A3908F060E08DE091E074 +:1009A0000E94EC0A0CC1199B0AC18E2D9F2D19992A +:1009B000FCC0F2C08823A1F082958F7090E001976F +:1009C00082959295907F9827807F9827682F6960FD +:1009D0000AC0882339F09150807F692F682B03C0AB +:1009E0006B2D01C06B2D8DE091E00E94EC0AE7C0F9 +:1009F00088B1887F88B98FE99FE00197F1F700C03F +:100A00000000C730D1050CF0E6C05BCEC1E0D0E0FD +:100A100000E010E00F2EF8EEEF2EF02D0F2EF3E099 +:100A2000FF2EF02D0F2EF2E1CF2EF02DDD24D394EA +:100A30000F2EF9E9BF2EF02D4BCE8DE091E00E94F4 +:100A4000B40A982F9F70993009F091CE8CCEEFE9BF +:100A5000FFE03197F1F700C000000197009769F3BC +:100A60007FCE8DE091E00E94B40A982F9F7009F428 +:100A70008FCE9CCEEFE9FFE03197F1F700C0000088 +:100A80000197009771F381CE8DE091E00E94B80A42 +:100A9000982F9F70993009F0AECEA9CEEFE9FFE014 +:100AA0003197F1F700C000000197009769F39CCEE1 +:100AB0008DE091E00E94B80A882309F4C6CEB0CE3A +:100AC000EFE9FFE03197F1F700C0000001970097D0 +:100AD00079F3A3CE8DE091E00E94BC0A982F9F701D +:100AE000993009F0D0CECBCEEFE9FFE03197F1F7A6 +:100AF00000C000000197009769F3BECE8DE091E041 +:100B00000E94BC0A982F9F7009F4D0CEDCCEEFE98A +:100B1000FFE03197F1F700C000000197009771F3F3 +:100B2000C2CE8DE091E00E94C00A982F9F7099304C +:100B300009F0EBCEE6CEEFE9FFE03197F1F700C028 +:100B400000000197009769F3D9CE8DE091E00E94F3 +:100B5000C00A982F9F7009F4EBCEF7CEEFE9FFE0C3 +:100B60003197F1F700C000000197009771F3DDCED7 +:100B7000EFE9FFE03197F1F700C00000019700971F +:100B800009F0FECE8DE091E00E94C40A982F9F707C +:100B9000993009F0FCCEF7CE8DE091E00E94C40AB6 +:100BA000982F9F7009F406CF14CFEFE9FFE031973B +:100BB000F1F700C000000197009771F3F8CE88B1FB +:100BC000887F88B98FE99FE00197F1F700C00000A6 +:100BD0000F5F1F4F78CDDF91CF911F910F91FF9045 +:100BE000EF90DF90CF90BF900895CF92DF92EF9279 +:100BF000FF920F931F93CF93DF93809102018F3C5D +:100C000009F0BDC0B1C00C2D1D2D813C49F50E94DD +:100C1000360B80930201882309F49DC016C00E9400 +:100C2000360B809302010E949800C536D10514F05E +:100C3000CE2DDF2D8FE99FE00197F1F700C0000076 +:100C4000219680910201882351F390E00E94600078 +:100C5000682F8DE091E00E94C80A81EC0E942E0B63 +:100C600080910201823C49F50E94360B809302017B +:100C7000882309F467C016C00E94360B80930201D6 +:100C80000E949800C536D10514F0CE2DDF2D8FE9D6 +:100C90009FE00197F1F700C00000219680910201CA +:100CA000882351F390E00E946000682F8DE091E06E +:100CB0000E94CE0A82EC0E942E0B80910201833C9E +:100CC00049F50E94360B80930201882391F116C0EA +:100CD0000E94360B809302010E949800C536D10510 +:100CE00014F0CE2DDF2D8FE99FE00197F1F700C0C2 +:100CF0000000219680910201882351F390E00E9428 +:100D0000600040E0682F8DE091E00E94D40A83ECFF +:100D10000E942E0B80910201843C89F10F5F1F4FCE +:100D20000E94360B80930201053611050CF06BCF43 +:100D30006CCF0E94360B809302010E949800CC2D4C +:100D4000DD2DD1CF0E94360B809302010E949800C6 +:100D5000CC2DDD2D9CCF0E94360B809302010E948A +:100D60009800CC2DDD2D66CF0E94360B80930201BA +:100D700000E010E0C12CD12CEC2CFD2C46CFDF91F3 +:100D8000CF911F910F91FF90EF90DF90CF9008953A +:100D90000F931F938DE091E00E941E0A0BE210E07A +:100DA00025E030E047E050E066E070E083E091E06D +:100DB0000E94DD061F910F9108950F931F93FC0170 +:100DC000608371834283538324833583178306832F +:100DD000D8011197B187A0875C9181E090E0FC0178 +:100DE00002C0EE0FFF1F2A95E2F79F01252BFC01A1 +:100DF00002C0EE0FFF1F4A95E2F7AF01422B02C07F +:100E0000880F991F6A95E2F7842B8C931F910F919D +:100E100008950F931F93CF93DF93FC0180E090E040 +:100E200021E030E000E810E070E041113DC0A68113 +:100E3000B7815C91E901028002C0CC0FDD1F0A94EA +:100E4000E2F7C095C523CC93DB01082E02C0B5950F +:100E5000A7950A94E2F7A0FF0DC0A681B7815C9127 +:100E6000E901008002C0CC0FDD1F0A94E2F7C52B18 +:100E7000CC930DC0A681B7815C91E901008002C0CE +:100E8000CC0FDD1F0A94E2F7C095C523CC93A68151 +:100E9000B7815C91E901028002C0CC0FDD1F0A948A +:100EA000E2F7C52BCC933EC0A681B7815C91E901E6 +:100EB000028002C0CC0FDD1F0A94E2F7C095C52363 +:100EC000CC93D801082E02C0B595A7950A94E2F7F5 +:100ED000A623B723AB2B69F0A681B7815C91E9010A +:100EE000008002C0CC0FDD1F0A94E2F7C52BCC9323 +:100EF0000DC0A681B7815C91E901008002C0CC0FD2 +:100F0000DD1F0A94E2F7C095C523CC93A681B78173 +:100F10005C91E901028002C0CC0FDD1F0A94E2F768 +:100F2000C52BCC9301968830910509F07ECFDF91D7 +:100F3000CF911F910F910895FC01A681B7814C912B +:100F400021E030E0C901048002C0880F991F0A9493 +:100F5000E2F7842B8C9385E08A95F1F70000A68157 +:100F6000B7814C91C901048002C0880F991F0A946F +:100F7000E2F7809584238C930895CF92DF92EF92CD +:100F8000FF920F931F93CF93DF93EC010E94F20A1D +:100F9000CC80DD80EE80FF808B010C191D091F8B3A +:100FA0000E8B043F114020F4CD28CE28CF2871F5B8 +:100FB0002D981D8A0E94F20A0C811D812E813F818D +:100FC000AB01BC01401B510B620B730B4C835D8367 +:100FD0006E837F830E94F20A688379838A839B836E +:100FE00081E04C815D816E817F81493E5340610586 +:100FF000710508F480E0811103C08885882319F009 +:1010000081E0888705C01A8A198A02C081E08D8B29 +:10101000DF91CF911F910F91FF90EF90DF90CF90D4 +:101020000895FC01238934892115310531F46623A3 +:1010300009F4F4C040E050E03CC0A901C9010197A7 +:10104000439708F4EDC02431310519F46111FCC057 +:10105000E9C0C9014597079718F5662381F0C901D2 +:10106000459741E050E0BA0102C0660F771F8A95AC +:10107000E2F7CB019385892B838781E0E0C0C9012A +:10108000459741E050E0BA0102C0660F771F8A958C +:10109000E2F7CB01809593858923838781E0CFC0D8 +:1010A0002C31310531F4838580FFE0C06111D2C05D +:1010B000BBC0CA014D97069718F5662381F0C90198 +:1010C0004D9741E050E0BA0102C0660F771F8A9544 +:1010D000E2F7CB019485892B848781E0B0C0C901F8 +:1010E0004D9741E050E0BA0102C0660F771F8A9524 +:1010F000E2F7CB01809594858923848781E09FC0A6 +:101100002332310581F4848580FF09C061110BC051 +:101110008DC02332310539F4848580FD04C06623F7 +:1011200009F49EC085C0CA018497069718F5662306 +:1011300081F0C901849741E050E0BA0102C0660F16 +:10114000771F8A95E2F7CB019585892B858781E00A +:1011500076C0C901849741E050E0BA0102C0660F31 +:10116000771F8A95E2F7CB0180959585892385873E +:1011700081E065C0CA018A978330910508F45AC09E +:101180000397059718F5662381F0C9018D9741E013 +:1011900050E0BA0102C0660F771F8A95E2F7CB01D3 +:1011A0009785892B878781E04AC0C9018D9741E0E7 +:1011B00050E0BA0102C0660F771F8A95E2F7CB01B3 +:1011C000809597858923878781E039C042535109EB +:1011D0004830510588F5662381F0C901C29741E086 +:1011E00050E0BA0102C0660F771F8A95E2F7CB0183 +:1011F0009089892B808B81E022C0C901C29741E090 +:1012000050E0BA0102C0660F771F8A95E2F7CB0162 +:10121000809590898923808B81E011C080E00FC088 +:1012200081E00DC080E00BC080E009C080E007C015 +:1012300080E005C081E003C081E001C080E02F5F55 +:101240003F4F348B238B0895C9014597079708F4C6 +:1012500006CF0FC0C9014D97069708F42ECF59CF7E +:10126000CA018497069708F474CF84CF662391F35C +:10127000E5CFC9014D97069708F41FCF54CF8F9241 +:101280009F92AF92BF92FF920F931F93CF93DF93E2 +:10129000EC010E94F20A88809980AA80BB808B01B1 +:1012A000081919091F8B0E8B0431110528F48928A0 +:1012B0008A288B2809F056C02D9A1D8A0E94F20AAE +:1012C0006C837D838E839F830E94F20A088119813B +:1012D0002A813B81AB01BC01401B510B620B730B9C +:1012E000488359836A837B838885882379F189853C +:1012F0009A85CB977CF581E090E09A8B898BDB0116 +:10130000CA0180559109A109B1098997A105B105C3 +:1013100050F0445B51096109710949325105610579 +:10132000710518F004C0F12C02C0FF24F3946F2D56 +:10133000CE010E941108882319F01A861986188692 +:1013400089859A8501969A8789870EC089859A85AD +:10135000CB9754F018861A86198682E090E09A8B13 +:10136000898B02C081E08D8BDF91CF911F910F910E +:10137000FF90BF90AF909F908F9008951F920F9213 +:101380000FB60F9211242F933F934F935F936F9358 +:101390007F938F939F93AF93BF93EF93FF93F894B3 +:1013A0004A9B05C08FE091E00E943F0904C08FE096 +:1013B00091E00E94BD077894FF91EF91BF91AF91AA +:1013C0009F918F917F916F915F914F913F912F915D +:1013D0000F900FBE0F901F90189510920F01109252 +:1013E000100110921101109212011092130110922B +:1013F000140110921501109216011092170110920B +:1014000019011092180110921A0110921B011092EA +:101410001C0110921D0110921E0110921F011092CA +:1014200021011092200110922301109222011092AA +:10143000240110922601109225010895FC011182C9 +:1014400008958CE58093B800E9EBF0E080818C7F13 +:101450008083ECEBF0E084E0808384EA8083808109 +:101460008823ECF780ED8093BB0084E88093BC0078 +:10147000ECEBF0E080818823ECF76093BB0084E81C +:101480008093BC00ECEBF0E080818823ECF7409384 +:10149000BB0084E88093BC00ECEBF0E08081882303 +:1014A000ECF784E98093BC00ECEBF0E0808184FDF4 +:1014B000FDCFECEBF0E080818B7F808308958CE59D +:1014C0008093B800E9EBF0E080818C7F8083ECEBC7 +:1014D000F0E084E0808384EA808380818823ECF7D5 +:1014E00080ED8093BB0084E88093BC00ECEBF0E0DF +:1014F00080818823ECF76093BB0084E88093BC0074 +:10150000ECEBF0E080818823ECF784EA8093BC0068 +:10151000ECEBF0E080818823ECF781ED8093BB0059 +:1015200084E88093BC00ECEBF0E080818823ECF74A +:1015300084E88093BC00ECEBF0E080818823ECF73A +:101540008091BB0094E99093BC00ECEBF0E09081BB +:1015500094FDFDCFECEBF0E090819B7F90830895AC +:1015600060E00E945F0A089561E00E945F0A0895AA +:1015700062E00E945F0A089564E00E945F0A089595 +:1015800065E00E945F0A089566E00E945F0A089580 +:10159000462F60E070E00E94210A0895462F61E026 +:1015A00070E00E94210A0895442319F0462F4064F8 +:1015B00002C0462F4F7B62E070E00E94210A08952E +:1015C000462F64E070E00E94210A0895462F65E0EE +:1015D00070E00E94210A0895462F66E070E00E94A4 +:1015E000210A0895F8946091270170912801809153 +:1015F000290190912A01789408951F920F920FB6B5 +:101600000F9211248F939F93AF93BF9380912701E3 +:1016100090912801A0912901B0912A010196A11D64 +:10162000B11D8093270190932801A0932901B093C5 +:101630002A01BF91AF919F918F910F900FBE0F9094 +:101640001F9018951092C50087E68093C40088E12A +:101650008093C10086E08093C2000895E0ECF0E042 +:10166000908195FFFDCF8093C60008958091C000C2 +:1016700088231CF48091C600089580E008950E949C +:1016800077000E943E010E944B030E94D9020E94F3 +:10169000F505F7CFEE0FFF1F0590F491E02D0994AB +:0416A000F894FFCFEC +:00000001FF diff --git a/Debug/Nixie clock.lss b/Debug/Nixie clock.lss new file mode 100644 index 0000000..522f79b --- /dev/null +++ b/Debug/Nixie clock.lss @@ -0,0 +1,4291 @@ + +Nixie clock.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000000 00800100 000016a4 00001738 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 000016a4 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 0000002b 00800100 00800100 00001738 2**0 + ALLOC + 3 .comment 0000005c 00000000 00000000 00001738 2**0 + CONTENTS, READONLY + 4 .debug_aranges 000002a0 00000000 00000000 00001794 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_info 0000391a 00000000 00000000 00001a34 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_abbrev 00000e5f 00000000 00000000 0000534e 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_line 0000101d 00000000 00000000 000061ad 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_frame 00000648 00000000 00000000 000071cc 2**2 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 00000b41 00000000 00000000 00007814 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_loc 000023d5 00000000 00000000 00008355 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_ranges 000004c8 00000000 00000000 0000a72a 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + + uint8_t PCF8574::send(uint8_t data, uint8_t read) + { + uint8_t read_data; + //SCK Config (27.77Khz) + TWBR = 0x0A; //Bit rate division à 10 + 0: 0c 94 36 00 jmp 0x6c ; 0x6c <__ctors_end> + 4: 0c 94 be 09 jmp 0x137c ; 0x137c <__vector_1> + TWSR = (TWSR & ~((1< + c: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + + //I2C Init + TWCR = (1< + 14: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + TWCR = (1< + while(!(TWCR&(1< + ; + + //DS1307 adresse write + TWDR = adresse_DS1307|read ; //Inscrit l'adresse, Mode + 20: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + 24: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + TWCR = (1< + 2c: 0c 94 fd 0a jmp 0x15fa ; 0x15fa <__vector_11> + while(!(TWCR&(1< + 34: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + ; + + + //Data send + if(!read) //Si écriture + 38: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + TWDR = data; //Inscrit les donnée + 3c: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + TWCR = (1< + 44: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + while(!(TWCR&(1< + 4c: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + ; + if(read) //Si lecture + 50: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + read_data = TWDR; + 54: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + + //Stop condition + TWCR = (1< + while((TWCR&(1< + 60: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + 64: 0c 94 5e 00 jmp 0xbc ; 0xbc <__bad_interrupt> + +00000068 <__ctors_start>: + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + 68: c8 06 cpc r12, r24 + 6a: ed 09 sbc r30, r13 + +0000006c <__ctors_end>: + 6c: 11 24 eor r1, r1 + 6e: 1f be out 0x3f, r1 ; 63 + 70: cf ef ldi r28, 0xFF ; 255 + ; + + _delay_ms(1); + TWCR &= (~(1<: + 78: 11 e0 ldi r17, 0x01 ; 1 + 7a: a0 e0 ldi r26, 0x00 ; 0 + if(read) + 7c: b1 e0 ldi r27, 0x01 ; 1 + 7e: e4 ea ldi r30, 0xA4 ; 164 + return read_data; + 80: f6 e1 ldi r31, 0x16 ; 22 + 82: 02 c0 rjmp .+4 ; 0x88 <__do_copy_data+0x10> + } + 84: 05 90 lpm r0, Z+ + 86: 0d 92 st X+, r0 + 88: a0 30 cpi r26, 0x00 ; 0 + 8a: b1 07 cpc r27, r17 + 8c: d9 f7 brne .-10 ; 0x84 <__do_copy_data+0xc> + +0000008e <__do_clear_bss>: + 8e: 21 e0 ldi r18, 0x01 ; 1 + 90: a0 e0 ldi r26, 0x00 ; 0 + 92: b1 e0 ldi r27, 0x01 ; 1 + 94: 01 c0 rjmp .+2 ; 0x98 <.do_clear_bss_start> + +00000096 <.do_clear_bss_loop>: + 96: 1d 92 st X+, r1 + +00000098 <.do_clear_bss_start>: + 98: ab 32 cpi r26, 0x2B ; 43 + 9a: b2 07 cpc r27, r18 + 9c: e1 f7 brne .-8 ; 0x96 <.do_clear_bss_loop> + +0000009e <__do_global_ctors>: + 9e: 10 e0 ldi r17, 0x00 ; 0 + a0: cc e6 ldi r28, 0x6C ; 108 + a2: d0 e0 ldi r29, 0x00 ; 0 + a4: 04 c0 rjmp .+8 ; 0xae <__do_global_ctors+0x10> + a6: 22 97 sbiw r28, 0x02 ; 2 + a8: fe 01 movw r30, r28 + aa: 0e 94 4c 0b call 0x1698 ; 0x1698 <__tablejump__> + ae: c8 36 cpi r28, 0x68 ; 104 + b0: d1 07 cpc r29, r17 + b2: c9 f7 brne .-14 ; 0xa6 <__do_global_ctors+0x8> + b4: 0e 94 3f 0b call 0x167e ; 0x167e
+ b8: 0c 94 50 0b jmp 0x16a0 ; 0x16a0 <_exit> + +000000bc <__bad_interrupt>: + bc: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000c0 <_Z10int_to_bcdi>: + TIMSK0 = _BV(OCIE0A); //Enable interupt +} +int int_to_bcd(int val) +{ + int high = 0; + while (val >= 10) // Count tens + c0: 8a 30 cpi r24, 0x0A ; 10 + c2: 91 05 cpc r25, r1 + c4: 4c f0 brlt .+18 ; 0xd8 <_Z10int_to_bcdi+0x18> + OCR0A = 0x01; + TIMSK0 = _BV(OCIE0A); //Enable interupt +} +int int_to_bcd(int val) +{ + int high = 0; + c6: 20 e0 ldi r18, 0x00 ; 0 + c8: 30 e0 ldi r19, 0x00 ; 0 + while (val >= 10) // Count tens + { + high++; + ca: 2f 5f subi r18, 0xFF ; 255 + cc: 3f 4f sbci r19, 0xFF ; 255 + val -= 10; + ce: 0a 97 sbiw r24, 0x0a ; 10 + TIMSK0 = _BV(OCIE0A); //Enable interupt +} +int int_to_bcd(int val) +{ + int high = 0; + while (val >= 10) // Count tens + d0: 8a 30 cpi r24, 0x0A ; 10 + d2: 91 05 cpc r25, r1 + d4: d4 f7 brge .-12 ; 0xca <_Z10int_to_bcdi+0xa> + d6: 02 c0 rjmp .+4 ; 0xdc <_Z10int_to_bcdi+0x1c> + OCR0A = 0x01; + TIMSK0 = _BV(OCIE0A); //Enable interupt +} +int int_to_bcd(int val) +{ + int high = 0; + d8: 20 e0 ldi r18, 0x00 ; 0 + da: 30 e0 ldi r19, 0x00 ; 0 + { + high++; + val -= 10; + } + + return (high << 4) | val; + dc: 22 95 swap r18 + de: 32 95 swap r19 + e0: 30 7f andi r19, 0xF0 ; 240 + e2: 32 27 eor r19, r18 + e4: 20 7f andi r18, 0xF0 ; 240 + e6: 32 27 eor r19, r18 +} + e8: 82 2b or r24, r18 + ea: 93 2b or r25, r19 + ec: 08 95 ret + +000000ee <_Z10setup_pinsv>: +void setup_pins() +{ + USART_ini(); + ee: 0e 94 22 0b call 0x1644 ; 0x1644 <_Z9USART_iniv> + DDRD &= LOW(1< + 120: 80 38 cpi r24, 0x80 ; 128 + 122: 29 f4 brne .+10 ; 0x12e <_Z10setup_pinsv+0x40> + rtc.w_seconde(0x00); + 124: 60 e0 ldi r22, 0x00 ; 0 + 126: 8d e0 ldi r24, 0x0D ; 13 + 128: 91 e0 ldi r25, 0x01 ; 1 + 12a: 0e 94 c8 0a call 0x1590 ; 0x1590 <_ZN6ds13079w_secondeEh> + 12e: 08 95 ret + +00000130 <_Z14affichage_heurv>: +} +void affichage_heur() +{ + uint8_t envoi = rtc.r_heur(); + 130: 8d e0 ldi r24, 0x0D ; 13 + 132: 91 e0 ldi r25, 0x01 ; 1 + 134: 0e 94 b8 0a call 0x1570 ; 0x1570 <_ZN6ds13076r_heurEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 138: 90 e0 ldi r25, 0x00 ; 0 + 13a: bc 01 movw r22, r24 + 13c: 62 95 swap r22 + 13e: 72 95 swap r23 + 140: 70 7f andi r23, 0xF0 ; 240 + 142: 76 27 eor r23, r22 + 144: 60 7f andi r22, 0xF0 ; 240 + 146: 76 27 eor r23, r22 + 148: 95 95 asr r25 + 14a: 87 95 ror r24 + 14c: 95 95 asr r25 + 14e: 87 95 ror r24 + 150: 95 95 asr r25 + 152: 87 95 ror r24 + 154: 95 95 asr r25 + 156: 87 95 ror r24 + 158: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 15a: 40 e0 ldi r20, 0x00 ; 0 + 15c: 83 e0 ldi r24, 0x03 ; 3 + 15e: 91 e0 ldi r25, 0x01 ; 1 + 160: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_minute(); + 164: 8d e0 ldi r24, 0x0D ; 13 + 166: 91 e0 ldi r25, 0x01 ; 1 + 168: 0e 94 b4 0a call 0x1568 ; 0x1568 <_ZN6ds13078r_minuteEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 16c: 90 e0 ldi r25, 0x00 ; 0 + 16e: bc 01 movw r22, r24 + 170: 62 95 swap r22 + 172: 72 95 swap r23 + 174: 70 7f andi r23, 0xF0 ; 240 + 176: 76 27 eor r23, r22 + 178: 60 7f andi r22, 0xF0 ; 240 + 17a: 76 27 eor r23, r22 + 17c: 95 95 asr r25 + 17e: 87 95 ror r24 + 180: 95 95 asr r25 + 182: 87 95 ror r24 + 184: 95 95 asr r25 + 186: 87 95 ror r24 + 188: 95 95 asr r25 + 18a: 87 95 ror r24 + 18c: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 18e: 40 e0 ldi r20, 0x00 ; 0 + 190: 83 e0 ldi r24, 0x03 ; 3 + 192: 91 e0 ldi r25, 0x01 ; 1 + 194: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_seconde(); + 198: 8d e0 ldi r24, 0x0D ; 13 + 19a: 91 e0 ldi r25, 0x01 ; 1 + 19c: 0e 94 b0 0a call 0x1560 ; 0x1560 <_ZN6ds13079r_secondeEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 1a0: 90 e0 ldi r25, 0x00 ; 0 + 1a2: bc 01 movw r22, r24 + 1a4: 62 95 swap r22 + 1a6: 72 95 swap r23 + 1a8: 70 7f andi r23, 0xF0 ; 240 + 1aa: 76 27 eor r23, r22 + 1ac: 60 7f andi r22, 0xF0 ; 240 + 1ae: 76 27 eor r23, r22 + 1b0: 95 95 asr r25 + 1b2: 87 95 ror r24 + 1b4: 95 95 asr r25 + 1b6: 87 95 ror r24 + 1b8: 95 95 asr r25 + 1ba: 87 95 ror r24 + 1bc: 95 95 asr r25 + 1be: 87 95 ror r24 + 1c0: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 1c2: 40 e0 ldi r20, 0x00 ; 0 + 1c4: 83 e0 ldi r24, 0x03 ; 3 + 1c6: 91 e0 ldi r25, 0x01 ; 1 + 1c8: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 1cc: 83 e0 ldi r24, 0x03 ; 3 + 1ce: 91 e0 ldi r25, 0x01 ; 1 + 1d0: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + 1d4: 08 95 ret + +000001d6 <_Z14affichage_datev>: +} +void affichage_date() +{ + uint8_t envoi = rtc.r_jour(); + 1d6: 8d e0 ldi r24, 0x0D ; 13 + 1d8: 91 e0 ldi r25, 0x01 ; 1 + 1da: 0e 94 bc 0a call 0x1578 ; 0x1578 <_ZN6ds13076r_jourEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 1de: 90 e0 ldi r25, 0x00 ; 0 + 1e0: bc 01 movw r22, r24 + 1e2: 62 95 swap r22 + 1e4: 72 95 swap r23 + 1e6: 70 7f andi r23, 0xF0 ; 240 + 1e8: 76 27 eor r23, r22 + 1ea: 60 7f andi r22, 0xF0 ; 240 + 1ec: 76 27 eor r23, r22 + 1ee: 95 95 asr r25 + 1f0: 87 95 ror r24 + 1f2: 95 95 asr r25 + 1f4: 87 95 ror r24 + 1f6: 95 95 asr r25 + 1f8: 87 95 ror r24 + 1fa: 95 95 asr r25 + 1fc: 87 95 ror r24 + 1fe: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 200: 40 e0 ldi r20, 0x00 ; 0 + 202: 83 e0 ldi r24, 0x03 ; 3 + 204: 91 e0 ldi r25, 0x01 ; 1 + 206: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_moi(); + 20a: 8d e0 ldi r24, 0x0D ; 13 + 20c: 91 e0 ldi r25, 0x01 ; 1 + 20e: 0e 94 c0 0a call 0x1580 ; 0x1580 <_ZN6ds13075r_moiEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 212: 90 e0 ldi r25, 0x00 ; 0 + 214: bc 01 movw r22, r24 + 216: 62 95 swap r22 + 218: 72 95 swap r23 + 21a: 70 7f andi r23, 0xF0 ; 240 + 21c: 76 27 eor r23, r22 + 21e: 60 7f andi r22, 0xF0 ; 240 + 220: 76 27 eor r23, r22 + 222: 95 95 asr r25 + 224: 87 95 ror r24 + 226: 95 95 asr r25 + 228: 87 95 ror r24 + 22a: 95 95 asr r25 + 22c: 87 95 ror r24 + 22e: 95 95 asr r25 + 230: 87 95 ror r24 + 232: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 234: 40 e0 ldi r20, 0x00 ; 0 + 236: 83 e0 ldi r24, 0x03 ; 3 + 238: 91 e0 ldi r25, 0x01 ; 1 + 23a: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_year(); + 23e: 8d e0 ldi r24, 0x0D ; 13 + 240: 91 e0 ldi r25, 0x01 ; 1 + 242: 0e 94 c4 0a call 0x1588 ; 0x1588 <_ZN6ds13076r_yearEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 246: 90 e0 ldi r25, 0x00 ; 0 + 248: bc 01 movw r22, r24 + 24a: 62 95 swap r22 + 24c: 72 95 swap r23 + 24e: 70 7f andi r23, 0xF0 ; 240 + 250: 76 27 eor r23, r22 + 252: 60 7f andi r22, 0xF0 ; 240 + 254: 76 27 eor r23, r22 + 256: 95 95 asr r25 + 258: 87 95 ror r24 + 25a: 95 95 asr r25 + 25c: 87 95 ror r24 + 25e: 95 95 asr r25 + 260: 87 95 ror r24 + 262: 95 95 asr r25 + 264: 87 95 ror r24 + 266: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 268: 40 e0 ldi r20, 0x00 ; 0 + 26a: 83 e0 ldi r24, 0x03 ; 3 + 26c: 91 e0 ldi r25, 0x01 ; 1 + 26e: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 272: 83 e0 ldi r24, 0x03 ; 3 + 274: 91 e0 ldi r25, 0x01 ; 1 + 276: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + 27a: 08 95 ret + +0000027c <_Z17routine_affichagev>: + shiftRegister.send(0xFF, false); + shiftRegister.confirm(); +} +void routine_affichage() +{ + uint8_t secondes_var = rtc.r_seconde(); + 27c: 8d e0 ldi r24, 0x0D ; 13 + 27e: 91 e0 ldi r25, 0x01 ; 1 + 280: 0e 94 b0 0a call 0x1560 ; 0x1560 <_ZN6ds13079r_secondeEv> + if(secondes_var >= 0x20 && secondes_var <= 0x30 && 1==2) //Affiche la date pandant 10 seconde + affichage_date(); + else + affichage_heur(); + 284: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + 288: 08 95 ret + +0000028a <_Z12clignotementib>: +} +void clignotement(int n, bool date) +{ + n++; + 28a: 01 96 adiw r24, 0x01 ; 1 + uint8_t envoi; + if(date) + 28c: 66 23 and r22, r22 + 28e: 09 f4 brne .+2 ; 0x292 <_Z12clignotementib+0x8> + 290: c8 c0 rjmp .+400 ; 0x422 <_Z12clignotementib+0x198> + { + switch(n) + 292: 82 30 cpi r24, 0x02 ; 2 + 294: 91 05 cpc r25, r1 + 296: 09 f4 brne .+2 ; 0x29a <_Z12clignotementib+0x10> + 298: 46 c0 rjmp .+140 ; 0x326 <_Z12clignotementib+0x9c> + 29a: 83 30 cpi r24, 0x03 ; 3 + 29c: 91 05 cpc r25, r1 + 29e: 09 f4 brne .+2 ; 0x2a2 <_Z12clignotementib+0x18> + 2a0: 81 c0 rjmp .+258 ; 0x3a4 <_Z12clignotementib+0x11a> + 2a2: 01 97 sbiw r24, 0x01 ; 1 + 2a4: 09 f0 breq .+2 ; 0x2a8 <_Z12clignotementib+0x1e> + 2a6: 84 c1 rjmp .+776 ; 0x5b0 <_Z12clignotementib+0x326> + { + case 1: + envoi = 0xff; + shiftRegister.send(envoi, false); + 2a8: 40 e0 ldi r20, 0x00 ; 0 + 2aa: 6f ef ldi r22, 0xFF ; 255 + 2ac: 83 e0 ldi r24, 0x03 ; 3 + 2ae: 91 e0 ldi r25, 0x01 ; 1 + 2b0: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_moi(); + 2b4: 8d e0 ldi r24, 0x0D ; 13 + 2b6: 91 e0 ldi r25, 0x01 ; 1 + 2b8: 0e 94 c0 0a call 0x1580 ; 0x1580 <_ZN6ds13075r_moiEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 2bc: 90 e0 ldi r25, 0x00 ; 0 + 2be: bc 01 movw r22, r24 + 2c0: 62 95 swap r22 + 2c2: 72 95 swap r23 + 2c4: 70 7f andi r23, 0xF0 ; 240 + 2c6: 76 27 eor r23, r22 + 2c8: 60 7f andi r22, 0xF0 ; 240 + 2ca: 76 27 eor r23, r22 + 2cc: 95 95 asr r25 + 2ce: 87 95 ror r24 + 2d0: 95 95 asr r25 + 2d2: 87 95 ror r24 + 2d4: 95 95 asr r25 + 2d6: 87 95 ror r24 + 2d8: 95 95 asr r25 + 2da: 87 95 ror r24 + 2dc: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 2de: 40 e0 ldi r20, 0x00 ; 0 + 2e0: 83 e0 ldi r24, 0x03 ; 3 + 2e2: 91 e0 ldi r25, 0x01 ; 1 + 2e4: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_year(); + 2e8: 8d e0 ldi r24, 0x0D ; 13 + 2ea: 91 e0 ldi r25, 0x01 ; 1 + 2ec: 0e 94 c4 0a call 0x1588 ; 0x1588 <_ZN6ds13076r_yearEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 2f0: 90 e0 ldi r25, 0x00 ; 0 + 2f2: bc 01 movw r22, r24 + 2f4: 62 95 swap r22 + 2f6: 72 95 swap r23 + 2f8: 70 7f andi r23, 0xF0 ; 240 + 2fa: 76 27 eor r23, r22 + 2fc: 60 7f andi r22, 0xF0 ; 240 + 2fe: 76 27 eor r23, r22 + 300: 95 95 asr r25 + 302: 87 95 ror r24 + 304: 95 95 asr r25 + 306: 87 95 ror r24 + 308: 95 95 asr r25 + 30a: 87 95 ror r24 + 30c: 95 95 asr r25 + 30e: 87 95 ror r24 + 310: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 312: 40 e0 ldi r20, 0x00 ; 0 + 314: 83 e0 ldi r24, 0x03 ; 3 + 316: 91 e0 ldi r25, 0x01 ; 1 + 318: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 31c: 83 e0 ldi r24, 0x03 ; 3 + 31e: 91 e0 ldi r25, 0x01 ; 1 + 320: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + break; + 324: 08 95 ret + case 2: + envoi = rtc.r_jour(); + 326: 8d e0 ldi r24, 0x0D ; 13 + 328: 91 e0 ldi r25, 0x01 ; 1 + 32a: 0e 94 bc 0a call 0x1578 ; 0x1578 <_ZN6ds13076r_jourEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 32e: 90 e0 ldi r25, 0x00 ; 0 + 330: bc 01 movw r22, r24 + 332: 62 95 swap r22 + 334: 72 95 swap r23 + 336: 70 7f andi r23, 0xF0 ; 240 + 338: 76 27 eor r23, r22 + 33a: 60 7f andi r22, 0xF0 ; 240 + 33c: 76 27 eor r23, r22 + 33e: 95 95 asr r25 + 340: 87 95 ror r24 + 342: 95 95 asr r25 + 344: 87 95 ror r24 + 346: 95 95 asr r25 + 348: 87 95 ror r24 + 34a: 95 95 asr r25 + 34c: 87 95 ror r24 + 34e: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 350: 40 e0 ldi r20, 0x00 ; 0 + 352: 83 e0 ldi r24, 0x03 ; 3 + 354: 91 e0 ldi r25, 0x01 ; 1 + 356: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = 0xff; + shiftRegister.send(envoi, false); + 35a: 40 e0 ldi r20, 0x00 ; 0 + 35c: 6f ef ldi r22, 0xFF ; 255 + 35e: 83 e0 ldi r24, 0x03 ; 3 + 360: 91 e0 ldi r25, 0x01 ; 1 + 362: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_year(); + 366: 8d e0 ldi r24, 0x0D ; 13 + 368: 91 e0 ldi r25, 0x01 ; 1 + 36a: 0e 94 c4 0a call 0x1588 ; 0x1588 <_ZN6ds13076r_yearEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 36e: 90 e0 ldi r25, 0x00 ; 0 + 370: bc 01 movw r22, r24 + 372: 62 95 swap r22 + 374: 72 95 swap r23 + 376: 70 7f andi r23, 0xF0 ; 240 + 378: 76 27 eor r23, r22 + 37a: 60 7f andi r22, 0xF0 ; 240 + 37c: 76 27 eor r23, r22 + 37e: 95 95 asr r25 + 380: 87 95 ror r24 + 382: 95 95 asr r25 + 384: 87 95 ror r24 + 386: 95 95 asr r25 + 388: 87 95 ror r24 + 38a: 95 95 asr r25 + 38c: 87 95 ror r24 + 38e: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 390: 40 e0 ldi r20, 0x00 ; 0 + 392: 83 e0 ldi r24, 0x03 ; 3 + 394: 91 e0 ldi r25, 0x01 ; 1 + 396: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 39a: 83 e0 ldi r24, 0x03 ; 3 + 39c: 91 e0 ldi r25, 0x01 ; 1 + 39e: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + break; + 3a2: 08 95 ret + case 3: + envoi = rtc.r_jour(); + 3a4: 8d e0 ldi r24, 0x0D ; 13 + 3a6: 91 e0 ldi r25, 0x01 ; 1 + 3a8: 0e 94 bc 0a call 0x1578 ; 0x1578 <_ZN6ds13076r_jourEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 3ac: 90 e0 ldi r25, 0x00 ; 0 + 3ae: bc 01 movw r22, r24 + 3b0: 62 95 swap r22 + 3b2: 72 95 swap r23 + 3b4: 70 7f andi r23, 0xF0 ; 240 + 3b6: 76 27 eor r23, r22 + 3b8: 60 7f andi r22, 0xF0 ; 240 + 3ba: 76 27 eor r23, r22 + 3bc: 95 95 asr r25 + 3be: 87 95 ror r24 + 3c0: 95 95 asr r25 + 3c2: 87 95 ror r24 + 3c4: 95 95 asr r25 + 3c6: 87 95 ror r24 + 3c8: 95 95 asr r25 + 3ca: 87 95 ror r24 + 3cc: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 3ce: 40 e0 ldi r20, 0x00 ; 0 + 3d0: 83 e0 ldi r24, 0x03 ; 3 + 3d2: 91 e0 ldi r25, 0x01 ; 1 + 3d4: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_moi(); + 3d8: 8d e0 ldi r24, 0x0D ; 13 + 3da: 91 e0 ldi r25, 0x01 ; 1 + 3dc: 0e 94 c0 0a call 0x1580 ; 0x1580 <_ZN6ds13075r_moiEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 3e0: 90 e0 ldi r25, 0x00 ; 0 + 3e2: bc 01 movw r22, r24 + 3e4: 62 95 swap r22 + 3e6: 72 95 swap r23 + 3e8: 70 7f andi r23, 0xF0 ; 240 + 3ea: 76 27 eor r23, r22 + 3ec: 60 7f andi r22, 0xF0 ; 240 + 3ee: 76 27 eor r23, r22 + 3f0: 95 95 asr r25 + 3f2: 87 95 ror r24 + 3f4: 95 95 asr r25 + 3f6: 87 95 ror r24 + 3f8: 95 95 asr r25 + 3fa: 87 95 ror r24 + 3fc: 95 95 asr r25 + 3fe: 87 95 ror r24 + 400: 68 2b or r22, r24 + shiftRegister.send(envoi, false); + 402: 40 e0 ldi r20, 0x00 ; 0 + 404: 83 e0 ldi r24, 0x03 ; 3 + 406: 91 e0 ldi r25, 0x01 ; 1 + 408: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = 0xff; + shiftRegister.send(envoi, false); + 40c: 40 e0 ldi r20, 0x00 ; 0 + 40e: 6f ef ldi r22, 0xFF ; 255 + 410: 83 e0 ldi r24, 0x03 ; 3 + 412: 91 e0 ldi r25, 0x01 ; 1 + 414: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 418: 83 e0 ldi r24, 0x03 ; 3 + 41a: 91 e0 ldi r25, 0x01 ; 1 + 41c: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + break; + 420: 08 95 ret + } + } + else + { + switch(n) + 422: 82 30 cpi r24, 0x02 ; 2 + 424: 91 05 cpc r25, r1 + 426: 09 f4 brne .+2 ; 0x42a <_Z12clignotementib+0x1a0> + 428: 46 c0 rjmp .+140 ; 0x4b6 <_Z12clignotementib+0x22c> + 42a: 83 30 cpi r24, 0x03 ; 3 + 42c: 91 05 cpc r25, r1 + 42e: 09 f4 brne .+2 ; 0x432 <_Z12clignotementib+0x1a8> + 430: 81 c0 rjmp .+258 ; 0x534 <_Z12clignotementib+0x2aa> + 432: 01 97 sbiw r24, 0x01 ; 1 + 434: 09 f0 breq .+2 ; 0x438 <_Z12clignotementib+0x1ae> + 436: bc c0 rjmp .+376 ; 0x5b0 <_Z12clignotementib+0x326> + { + case 1: + envoi = 0xff; + shiftRegister.send(envoi, 0); + 438: 40 e0 ldi r20, 0x00 ; 0 + 43a: 6f ef ldi r22, 0xFF ; 255 + 43c: 83 e0 ldi r24, 0x03 ; 3 + 43e: 91 e0 ldi r25, 0x01 ; 1 + 440: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_minute(); + 444: 8d e0 ldi r24, 0x0D ; 13 + 446: 91 e0 ldi r25, 0x01 ; 1 + 448: 0e 94 b4 0a call 0x1568 ; 0x1568 <_ZN6ds13078r_minuteEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 44c: 90 e0 ldi r25, 0x00 ; 0 + 44e: bc 01 movw r22, r24 + 450: 62 95 swap r22 + 452: 72 95 swap r23 + 454: 70 7f andi r23, 0xF0 ; 240 + 456: 76 27 eor r23, r22 + 458: 60 7f andi r22, 0xF0 ; 240 + 45a: 76 27 eor r23, r22 + 45c: 95 95 asr r25 + 45e: 87 95 ror r24 + 460: 95 95 asr r25 + 462: 87 95 ror r24 + 464: 95 95 asr r25 + 466: 87 95 ror r24 + 468: 95 95 asr r25 + 46a: 87 95 ror r24 + 46c: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 46e: 40 e0 ldi r20, 0x00 ; 0 + 470: 83 e0 ldi r24, 0x03 ; 3 + 472: 91 e0 ldi r25, 0x01 ; 1 + 474: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_seconde(); + 478: 8d e0 ldi r24, 0x0D ; 13 + 47a: 91 e0 ldi r25, 0x01 ; 1 + 47c: 0e 94 b0 0a call 0x1560 ; 0x1560 <_ZN6ds13079r_secondeEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 480: 90 e0 ldi r25, 0x00 ; 0 + 482: bc 01 movw r22, r24 + 484: 62 95 swap r22 + 486: 72 95 swap r23 + 488: 70 7f andi r23, 0xF0 ; 240 + 48a: 76 27 eor r23, r22 + 48c: 60 7f andi r22, 0xF0 ; 240 + 48e: 76 27 eor r23, r22 + 490: 95 95 asr r25 + 492: 87 95 ror r24 + 494: 95 95 asr r25 + 496: 87 95 ror r24 + 498: 95 95 asr r25 + 49a: 87 95 ror r24 + 49c: 95 95 asr r25 + 49e: 87 95 ror r24 + 4a0: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 4a2: 40 e0 ldi r20, 0x00 ; 0 + 4a4: 83 e0 ldi r24, 0x03 ; 3 + 4a6: 91 e0 ldi r25, 0x01 ; 1 + 4a8: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 4ac: 83 e0 ldi r24, 0x03 ; 3 + 4ae: 91 e0 ldi r25, 0x01 ; 1 + 4b0: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + break; + 4b4: 08 95 ret + case 2: + envoi = rtc.r_heur(); + 4b6: 8d e0 ldi r24, 0x0D ; 13 + 4b8: 91 e0 ldi r25, 0x01 ; 1 + 4ba: 0e 94 b8 0a call 0x1570 ; 0x1570 <_ZN6ds13076r_heurEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 4be: 90 e0 ldi r25, 0x00 ; 0 + 4c0: bc 01 movw r22, r24 + 4c2: 62 95 swap r22 + 4c4: 72 95 swap r23 + 4c6: 70 7f andi r23, 0xF0 ; 240 + 4c8: 76 27 eor r23, r22 + 4ca: 60 7f andi r22, 0xF0 ; 240 + 4cc: 76 27 eor r23, r22 + 4ce: 95 95 asr r25 + 4d0: 87 95 ror r24 + 4d2: 95 95 asr r25 + 4d4: 87 95 ror r24 + 4d6: 95 95 asr r25 + 4d8: 87 95 ror r24 + 4da: 95 95 asr r25 + 4dc: 87 95 ror r24 + 4de: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 4e0: 40 e0 ldi r20, 0x00 ; 0 + 4e2: 83 e0 ldi r24, 0x03 ; 3 + 4e4: 91 e0 ldi r25, 0x01 ; 1 + 4e6: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = 0xff; + shiftRegister.send(envoi, 0); + 4ea: 40 e0 ldi r20, 0x00 ; 0 + 4ec: 6f ef ldi r22, 0xFF ; 255 + 4ee: 83 e0 ldi r24, 0x03 ; 3 + 4f0: 91 e0 ldi r25, 0x01 ; 1 + 4f2: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_seconde(); + 4f6: 8d e0 ldi r24, 0x0D ; 13 + 4f8: 91 e0 ldi r25, 0x01 ; 1 + 4fa: 0e 94 b0 0a call 0x1560 ; 0x1560 <_ZN6ds13079r_secondeEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 4fe: 90 e0 ldi r25, 0x00 ; 0 + 500: bc 01 movw r22, r24 + 502: 62 95 swap r22 + 504: 72 95 swap r23 + 506: 70 7f andi r23, 0xF0 ; 240 + 508: 76 27 eor r23, r22 + 50a: 60 7f andi r22, 0xF0 ; 240 + 50c: 76 27 eor r23, r22 + 50e: 95 95 asr r25 + 510: 87 95 ror r24 + 512: 95 95 asr r25 + 514: 87 95 ror r24 + 516: 95 95 asr r25 + 518: 87 95 ror r24 + 51a: 95 95 asr r25 + 51c: 87 95 ror r24 + 51e: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 520: 40 e0 ldi r20, 0x00 ; 0 + 522: 83 e0 ldi r24, 0x03 ; 3 + 524: 91 e0 ldi r25, 0x01 ; 1 + 526: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 52a: 83 e0 ldi r24, 0x03 ; 3 + 52c: 91 e0 ldi r25, 0x01 ; 1 + 52e: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + break; + 532: 08 95 ret + case 3: + envoi = rtc.r_heur(); + 534: 8d e0 ldi r24, 0x0D ; 13 + 536: 91 e0 ldi r25, 0x01 ; 1 + 538: 0e 94 b8 0a call 0x1570 ; 0x1570 <_ZN6ds13076r_heurEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 53c: 90 e0 ldi r25, 0x00 ; 0 + 53e: bc 01 movw r22, r24 + 540: 62 95 swap r22 + 542: 72 95 swap r23 + 544: 70 7f andi r23, 0xF0 ; 240 + 546: 76 27 eor r23, r22 + 548: 60 7f andi r22, 0xF0 ; 240 + 54a: 76 27 eor r23, r22 + 54c: 95 95 asr r25 + 54e: 87 95 ror r24 + 550: 95 95 asr r25 + 552: 87 95 ror r24 + 554: 95 95 asr r25 + 556: 87 95 ror r24 + 558: 95 95 asr r25 + 55a: 87 95 ror r24 + 55c: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 55e: 40 e0 ldi r20, 0x00 ; 0 + 560: 83 e0 ldi r24, 0x03 ; 3 + 562: 91 e0 ldi r25, 0x01 ; 1 + 564: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = rtc.r_minute(); + 568: 8d e0 ldi r24, 0x0D ; 13 + 56a: 91 e0 ldi r25, 0x01 ; 1 + 56c: 0e 94 b4 0a call 0x1568 ; 0x1568 <_ZN6ds13078r_minuteEv> + envoi = (envoi>>4)|((envoi&0x0f)<<4); + 570: 90 e0 ldi r25, 0x00 ; 0 + 572: bc 01 movw r22, r24 + 574: 62 95 swap r22 + 576: 72 95 swap r23 + 578: 70 7f andi r23, 0xF0 ; 240 + 57a: 76 27 eor r23, r22 + 57c: 60 7f andi r22, 0xF0 ; 240 + 57e: 76 27 eor r23, r22 + 580: 95 95 asr r25 + 582: 87 95 ror r24 + 584: 95 95 asr r25 + 586: 87 95 ror r24 + 588: 95 95 asr r25 + 58a: 87 95 ror r24 + 58c: 95 95 asr r25 + 58e: 87 95 ror r24 + 590: 68 2b or r22, r24 + shiftRegister.send(envoi, 0); + 592: 40 e0 ldi r20, 0x00 ; 0 + 594: 83 e0 ldi r24, 0x03 ; 3 + 596: 91 e0 ldi r25, 0x01 ; 1 + 598: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + envoi = 0xff; + shiftRegister.send(envoi, 0); + 59c: 40 e0 ldi r20, 0x00 ; 0 + 59e: 6f ef ldi r22, 0xFF ; 255 + 5a0: 83 e0 ldi r24, 0x03 ; 3 + 5a2: 91 e0 ldi r25, 0x01 ; 1 + 5a4: 0e 94 09 07 call 0xe12 ; 0xe12 <_ZN7hc745954sendEhb> + shiftRegister.confirm(); + 5a8: 83 e0 ldi r24, 0x03 ; 3 + 5aa: 91 e0 ldi r25, 0x01 ; 1 + 5ac: 0e 94 9c 07 call 0xf38 ; 0xf38 <_ZN7hc745957confirmEv> + 5b0: 08 95 ret + +000005b2 <_Z7couleurv>: + } + } +} +void couleur() +{ + usart = USART_Receive(); + 5b2: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + 5b6: 80 93 02 01 sts 0x0102, r24 + uint8_t mask = LED_BLUE|LED_GREEN|LED_RED; //COnfigure le mask + uint8_t curent_couleur; + if((PINB & (1< + break; + } + } +} +void couleur() +{ + 5be: 88 ee ldi r24, 0xE8 ; 232 + 5c0: 93 e0 ldi r25, 0x03 ; 3 + 5c2: 03 c0 rjmp .+6 ; 0x5ca <_Z7couleurv+0x18> + usart = USART_Receive(); + uint8_t mask = LED_BLUE|LED_GREEN|LED_RED; //COnfigure le mask + uint8_t curent_couleur; + if((PINB & (1< + 5c8: fa cf rjmp .-12 ; 0x5be <_Z7couleurv+0xc> + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 5ce: 40 c0 rjmp .+128 ; 0x650 <_Z7couleurv+0x9e> + _delay_ms(1); + if(bcm_rgb_actif == 0 && (PINB&mask) == 0 && 1==2) + 5d0: 83 b1 in r24, 0x03 ; 3 + { + bcm_rgb_actif = 1; + } + else + { + bcm_rgb_actif = 0; + 5d2: 10 92 01 01 sts 0x0101, r1 + 5d6: 10 92 00 01 sts 0x0100, r1 + curent_couleur = ((PINB & mask)+(LED_RED)); + 5da: 83 b1 in r24, 0x03 ; 3 + 5dc: 88 73 andi r24, 0x38 ; 56 + 5de: 88 5f subi r24, 0xF8 ; 248 + if(curent_couleur > mask) + 5e0: 89 33 cpi r24, 0x39 ; 57 + 5e2: 20 f4 brcc .+8 ; 0x5ec <_Z7couleurv+0x3a> + curent_couleur = 0x00; + else + bcm_rgb_actif = 0; + if (curent_couleur&LED_BLUE) + 5e4: 85 ff sbrs r24, 5 + 5e6: 03 c0 rjmp .+6 ; 0x5ee <_Z7couleurv+0x3c> + PORTB |= LED_BLUE; + 5e8: 2d 9a sbi 0x05, 5 ; 5 + 5ea: 02 c0 rjmp .+4 ; 0x5f0 <_Z7couleurv+0x3e> + else + { + bcm_rgb_actif = 0; + curent_couleur = ((PINB & mask)+(LED_RED)); + if(curent_couleur > mask) + curent_couleur = 0x00; + 5ec: 80 e0 ldi r24, 0x00 ; 0 + else + bcm_rgb_actif = 0; + if (curent_couleur&LED_BLUE) + PORTB |= LED_BLUE; + else + PORTB &= LOW(LED_BLUE); + 5ee: 2d 98 cbi 0x05, 5 ; 5 + if(curent_couleur&LED_GREEN) + 5f0: 84 ff sbrs r24, 4 + 5f2: 02 c0 rjmp .+4 ; 0x5f8 <_Z7couleurv+0x46> + PORTB |= LED_GREEN; + 5f4: 2c 9a sbi 0x05, 4 ; 5 + 5f6: 01 c0 rjmp .+2 ; 0x5fa <_Z7couleurv+0x48> + else + PORTB &= LOW(LED_GREEN); + 5f8: 2c 98 cbi 0x05, 4 ; 5 + if(curent_couleur & LED_RED) + 5fa: 83 ff sbrs r24, 3 + 5fc: 02 c0 rjmp .+4 ; 0x602 <_Z7couleurv+0x50> + PORTB |= LED_RED; + 5fe: 2b 9a sbi 0x05, 3 ; 5 + 600: 08 95 ret + else + PORTB &= LOW(LED_RED); + 602: 2b 98 cbi 0x05, 3 ; 5 + 604: 08 95 ret + } + } + else if((PINB & (1< + else + { + bcm_rgb_actif = 0; + curent_couleur = ((PINB & mask)+(LED_RED)); + if(curent_couleur > mask) + curent_couleur = 0x00; + 60a: 88 ee ldi r24, 0xE8 ; 232 + 60c: 93 e0 ldi r25, 0x03 ; 3 + 60e: 04 c0 rjmp .+8 ; 0x618 <_Z7couleurv+0x66> + PORTB |= LED_RED; + else + PORTB &= LOW(LED_RED); + } + } + else if((PINB & (1< + 614: 3f c0 rjmp .+126 ; 0x694 <_Z7couleurv+0xe2> + 616: f9 cf rjmp .-14 ; 0x60a <_Z7couleurv+0x58> + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 61c: 34 c0 rjmp .+104 ; 0x686 <_Z7couleurv+0xd4> + _delay_ms(1); + if(bcm_rgb_actif == 0 && (PINB&mask) == 0 && 1==2) + 61e: 83 b1 in r24, 0x03 ; 3 + { + bcm_rgb_actif = 1; + } + else + { + bcm_rgb_actif = 0; + 620: 10 92 01 01 sts 0x0101, r1 + 624: 10 92 00 01 sts 0x0100, r1 + if(PINB & mask == 0) + 628: 83 b1 in r24, 0x03 ; 3 + curent_couleur = mask; + curent_couleur = ((PINB & mask)-(LED_RED)); + 62a: 83 b1 in r24, 0x03 ; 3 + 62c: 88 73 andi r24, 0x38 ; 56 + 62e: 88 50 subi r24, 0x08 ; 8 + if (curent_couleur&LED_BLUE) + 630: 85 ff sbrs r24, 5 + 632: 02 c0 rjmp .+4 ; 0x638 <_Z7couleurv+0x86> + PORTB |= LED_BLUE; + 634: 2d 9a sbi 0x05, 5 ; 5 + 636: 01 c0 rjmp .+2 ; 0x63a <_Z7couleurv+0x88> + else + PORTB &= LOW(LED_BLUE); + 638: 2d 98 cbi 0x05, 5 ; 5 + if(curent_couleur&LED_GREEN) + 63a: 84 ff sbrs r24, 4 + 63c: 02 c0 rjmp .+4 ; 0x642 <_Z7couleurv+0x90> + PORTB |= LED_GREEN; + 63e: 2c 9a sbi 0x05, 4 ; 5 + 640: 01 c0 rjmp .+2 ; 0x644 <_Z7couleurv+0x92> + else + PORTB &= LOW(LED_GREEN); + 642: 2c 98 cbi 0x05, 4 ; 5 + if(curent_couleur & LED_RED) + 644: 83 ff sbrs r24, 3 + 646: 02 c0 rjmp .+4 ; 0x64c <_Z7couleurv+0x9a> + PORTB |= LED_RED; + 648: 2b 9a sbi 0x05, 3 ; 5 + 64a: 08 95 ret + else + PORTB &= LOW(LED_RED); + 64c: 2b 98 cbi 0x05, 3 ; 5 + 64e: 08 95 ret + uint8_t curent_couleur; + if((PINB & (1< + 65c: b9 cf rjmp .-142 ; 0x5d0 <_Z7couleurv+0x1e> + 65e: b9 cf rjmp .-142 ; 0x5d2 <_Z7couleurv+0x20> + 660: ef e9 ldi r30, 0x9F ; 159 + 662: ff e0 ldi r31, 0x0F ; 15 + 664: 31 97 sbiw r30, 0x01 ; 1 + 666: f1 f7 brne .-4 ; 0x664 <_Z7couleurv+0xb2> + 668: 00 c0 rjmp .+0 ; 0x66a <_Z7couleurv+0xb8> + 66a: 00 00 nop + 66c: 01 97 sbiw r24, 0x01 ; 1 + usart = USART_Receive(); + uint8_t mask = LED_BLUE|LED_GREEN|LED_RED; //COnfigure le mask + uint8_t curent_couleur; + if((PINB & (1< + 672: ab cf rjmp .-170 ; 0x5ca <_Z7couleurv+0x18> + 674: ef e9 ldi r30, 0x9F ; 159 + 676: ff e0 ldi r31, 0x0F ; 15 + 678: 31 97 sbiw r30, 0x01 ; 1 + 67a: f1 f7 brne .-4 ; 0x678 <_Z7couleurv+0xc6> + 67c: 00 c0 rjmp .+0 ; 0x67e <_Z7couleurv+0xcc> + 67e: 00 00 nop + 680: 01 97 sbiw r24, 0x01 ; 1 + PORTB &= LOW(LED_RED); + } + } + else if((PINB & (1< + _delay_ms(1); + if(bcm_rgb_actif == 0 && (PINB&mask) == 0 && 1==2) + 686: 80 91 00 01 lds r24, 0x0100 + 68a: 90 91 01 01 lds r25, 0x0101 + 68e: 89 2b or r24, r25 + 690: 31 f2 breq .-116 ; 0x61e <_Z7couleurv+0x6c> + 692: c6 cf rjmp .-116 ; 0x620 <_Z7couleurv+0x6e> + 694: 08 95 ret + +00000696 <_Z6boutonv>: + } + + } +} +void bouton() //Gestion des BP pour configurer l'heur +{ + 696: bf 92 push r11 + 698: cf 92 push r12 + 69a: df 92 push r13 + 69c: ef 92 push r14 + 69e: ff 92 push r15 + 6a0: 0f 93 push r16 + 6a2: 1f 93 push r17 + 6a4: cf 93 push r28 + 6a6: df 93 push r29 + if (PINB & (1< + { + while(PINB & (1< + 6b0: 8f e9 ldi r24, 0x9F ; 159 + 6b2: 9f e0 ldi r25, 0x0F ; 15 + 6b4: 01 97 sbiw r24, 0x01 ; 1 + 6b6: f1 f7 brne .-4 ; 0x6b4 <_Z6boutonv+0x1e> + 6b8: 00 c0 rjmp .+0 ; 0x6ba <_Z6boutonv+0x24> + 6ba: 00 00 nop + 6bc: 18 99 sbic 0x03, 0 ; 3 + 6be: f8 cf rjmp .-16 ; 0x6b0 <_Z6boutonv+0x1a> + 6c0: a5 c1 rjmp .+842 ; 0xa0c <__stack+0x10d> + _delay_ms(1); + int pousse = 1; + for( int a = 0 ; pousse <= 6 ; a++) //Boucle infinie tant qu'on a pas poussé 6 fois sur le bp et init de la variable pour clignotement + 6c2: 0f 5f subi r16, 0xFF ; 255 + 6c4: 1f 4f sbci r17, 0xFF ; 255 + { + if(a >= (tmps_clignotement*2)) + 6c6: 08 3c cpi r16, 0xC8 ; 200 + 6c8: 11 05 cpc r17, r1 + 6ca: 14 f0 brlt .+4 ; 0x6d0 <_Z6boutonv+0x3a> + a = 0; + 6cc: 00 e0 ldi r16, 0x00 ; 0 + 6ce: 10 e0 ldi r17, 0x00 ; 0 + if (PINB & (1< + { + while(PINB & (1< + 6d8: ef e9 ldi r30, 0x9F ; 159 + 6da: ff e0 ldi r31, 0x0F ; 15 + 6dc: 31 97 sbiw r30, 0x01 ; 1 + 6de: f1 f7 brne .-4 ; 0x6dc <_Z6boutonv+0x46> + 6e0: 00 c0 rjmp .+0 ; 0x6e2 <_Z6boutonv+0x4c> + 6e2: 00 00 nop + 6e4: 18 99 sbic 0x03, 0 ; 3 + 6e6: f8 cf rjmp .-16 ; 0x6d8 <_Z6boutonv+0x42> + _delay_ms(1); + pousse++; + 6e8: 21 96 adiw r28, 0x01 ; 1 + } + switch(pousse) + 6ea: c3 30 cpi r28, 0x03 ; 3 + 6ec: d1 05 cpc r29, r1 + 6ee: 09 f4 brne .+2 ; 0x6f2 <_Z6boutonv+0x5c> + 6f0: 6c c0 rjmp .+216 ; 0x7ca <_Z6boutonv+0x134> + 6f2: 3c f4 brge .+14 ; 0x702 <_Z6boutonv+0x6c> + 6f4: c1 30 cpi r28, 0x01 ; 1 + 6f6: d1 05 cpc r29, r1 + 6f8: 79 f0 breq .+30 ; 0x718 <_Z6boutonv+0x82> + 6fa: c2 30 cpi r28, 0x02 ; 2 + 6fc: d1 05 cpc r29, r1 + 6fe: 09 f1 breq .+66 ; 0x742 <_Z6boutonv+0xac> + 700: 77 c1 rjmp .+750 ; 0x9f0 <__stack+0xf1> + 702: c5 30 cpi r28, 0x05 ; 5 + 704: d1 05 cpc r29, r1 + 706: 09 f4 brne .+2 ; 0x70a <_Z6boutonv+0x74> + 708: ea c0 rjmp .+468 ; 0x8de <_Z6boutonv+0x248> + 70a: 0c f4 brge .+2 ; 0x70e <_Z6boutonv+0x78> + 70c: a5 c0 rjmp .+330 ; 0x858 <_Z6boutonv+0x1c2> + 70e: c6 30 cpi r28, 0x06 ; 6 + 710: d1 05 cpc r29, r1 + 712: 09 f4 brne .+2 ; 0x716 <_Z6boutonv+0x80> + 714: 26 c1 rjmp .+588 ; 0x962 <__stack+0x63> + 716: 6c c1 rjmp .+728 ; 0x9f0 <__stack+0xf1> + { + case 1: //Config des secondes + if(a > tmps_clignotement) //Clignotement + 718: 05 36 cpi r16, 0x65 ; 101 + 71a: 11 05 cpc r17, r1 + 71c: 34 f0 brlt .+12 ; 0x72a <_Z6boutonv+0x94> + clignotement(SR_SECONDE, false); + 71e: 60 e0 ldi r22, 0x00 ; 0 + 720: 82 e0 ldi r24, 0x02 ; 2 + 722: 90 e0 ldi r25, 0x00 ; 0 + 724: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 728: 02 c0 rjmp .+4 ; 0x72e <_Z6boutonv+0x98> + else + affichage_heur(); + 72a: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if((PINB & (1< + 732: 19 9b sbis 0x03, 1 ; 3 + 734: 44 c2 rjmp .+1160 ; 0xbbe <__stack+0x2bf> + rtc.w_seconde(0x00); + 736: 60 e0 ldi r22, 0x00 ; 0 + 738: 8d e0 ldi r24, 0x0D ; 13 + 73a: 91 e0 ldi r25, 0x01 ; 1 + 73c: 0e 94 c8 0a call 0x1590 ; 0x1590 <_ZN6ds13079w_secondeEh> + 740: 3e c2 rjmp .+1148 ; 0xbbe <__stack+0x2bf> + break; + case 2: //Config des minutes + if(a > tmps_clignotement) //Clignotement + 742: 05 36 cpi r16, 0x65 ; 101 + 744: 11 05 cpc r17, r1 + 746: 34 f0 brlt .+12 ; 0x754 <_Z6boutonv+0xbe> + clignotement(SR_MINUTE, false); + 748: 60 e0 ldi r22, 0x00 ; 0 + 74a: 81 e0 ldi r24, 0x01 ; 1 + 74c: 90 e0 ldi r25, 0x00 ; 0 + 74e: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 752: 02 c0 rjmp .+4 ; 0x758 <_Z6boutonv+0xc2> + else + affichage_heur(); + 754: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(PINB & (1< + 75c: 8e 2d mov r24, r14 + 75e: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 764: 6a c1 rjmp .+724 ; 0xa3a <__stack+0x13b> + _delay_ms(1); + uint8_t curent_minute = rtc.r_minute();//Lecture du temps DS1307 + if((curent_minute&0x0F) == 0x09) // Si 1e digit = 9 + curent_minute = (((curent_minute&0xF0)>>4)+1)<<4; //Incrémente de 10 + 766: 80 7f andi r24, 0xF0 ; 240 + 768: 60 e1 ldi r22, 0x10 ; 16 + 76a: 68 0f add r22, r24 + 76c: 02 c0 rjmp .+4 ; 0x772 <_Z6boutonv+0xdc> + else + curent_minute++; //Incrémente de 1 + 76e: 61 e0 ldi r22, 0x01 ; 1 + 770: 68 0f add r22, r24 + if(curent_minute >= 0x60) //Si supérieur à 60 retour à 00 /!\ Pas d'incrémentation de l'heur !! + 772: 60 36 cpi r22, 0x60 ; 96 + 774: 08 f0 brcs .+2 ; 0x778 <_Z6boutonv+0xe2> + curent_minute = 0x00; + 776: 60 e0 ldi r22, 0x00 ; 0 + rtc.w_minute(curent_minute); //Met à jour le DS1307 + 778: 8d e0 ldi r24, 0x0D ; 13 + 77a: 91 e0 ldi r25, 0x01 ; 1 + 77c: 0e 94 ce 0a call 0x159c ; 0x159c <_ZN6ds13078w_minuteEh> + 780: 1e c2 rjmp .+1084 ; 0xbbe <__stack+0x2bf> + } + else if(PINB & (1< + 786: 8e 2d mov r24, r14 + 788: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 78e: 69 c1 rjmp .+722 ; 0xa62 <__stack+0x163> + _delay_ms(1); + uint8_t curent_minute = rtc.r_minute();//Lecture du temps DS1307 + if((curent_minute&0x0F) == 0x00) // Si 1e digit = 0 + curent_minute = ((((curent_minute&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + 790: 82 95 swap r24 + 792: 8f 70 andi r24, 0x0F ; 15 + 794: 68 2f mov r22, r24 + 796: 70 e0 ldi r23, 0x00 ; 0 + 798: 61 50 subi r22, 0x01 ; 1 + 79a: 71 09 sbc r23, r1 + 79c: 62 95 swap r22 + 79e: 72 95 swap r23 + 7a0: 70 7f andi r23, 0xF0 ; 240 + 7a2: 76 27 eor r23, r22 + 7a4: 60 7f andi r22, 0xF0 ; 240 + 7a6: 76 27 eor r23, r22 + 7a8: 69 60 ori r22, 0x09 ; 9 + 7aa: 04 c0 rjmp .+8 ; 0x7b4 <_Z6boutonv+0x11e> + else if(curent_minute == 0x00) // Bug en simulation ..........???????????~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 7ac: 88 23 and r24, r24 + 7ae: 29 f0 breq .+10 ; 0x7ba <_Z6boutonv+0x124> + curent_minute = 0x59; + else + curent_minute--; //Décrémente de 1 + 7b0: 6f ef ldi r22, 0xFF ; 255 + 7b2: 68 0f add r22, r24 + if(curent_minute > 0x60) + 7b4: 61 36 cpi r22, 0x61 ; 97 + 7b6: 18 f4 brcc .+6 ; 0x7be <_Z6boutonv+0x128> + 7b8: 03 c0 rjmp .+6 ; 0x7c0 <_Z6boutonv+0x12a> + _delay_ms(1); + uint8_t curent_minute = rtc.r_minute();//Lecture du temps DS1307 + if((curent_minute&0x0F) == 0x00) // Si 1e digit = 0 + curent_minute = ((((curent_minute&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + else if(curent_minute == 0x00) // Bug en simulation ..........???????????~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + curent_minute = 0x59; + 7ba: 69 e5 ldi r22, 0x59 ; 89 + 7bc: 01 c0 rjmp .+2 ; 0x7c0 <_Z6boutonv+0x12a> + else + curent_minute--; //Décrémente de 1 + if(curent_minute > 0x60) + curent_minute = 0x59; + 7be: 69 e5 ldi r22, 0x59 ; 89 + rtc.w_minute(curent_minute); //Met à jour le DS1307 + 7c0: 8d e0 ldi r24, 0x0D ; 13 + 7c2: 91 e0 ldi r25, 0x01 ; 1 + 7c4: 0e 94 ce 0a call 0x159c ; 0x159c <_ZN6ds13078w_minuteEh> + 7c8: fa c1 rjmp .+1012 ; 0xbbe <__stack+0x2bf> + } + + break; + case 3: //Config de l'heur + if(a > tmps_clignotement) //Clignotement toute les + 7ca: 05 36 cpi r16, 0x65 ; 101 + 7cc: 11 05 cpc r17, r1 + 7ce: 34 f0 brlt .+12 ; 0x7dc <_Z6boutonv+0x146> + clignotement(SR_HEUR, false); + 7d0: 60 e0 ldi r22, 0x00 ; 0 + 7d2: 80 e0 ldi r24, 0x00 ; 0 + 7d4: 90 e0 ldi r25, 0x00 ; 0 + 7d6: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 7da: 02 c0 rjmp .+4 ; 0x7e0 <_Z6boutonv+0x14a> + else + affichage_heur(); + 7dc: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(PINB & (1< + 7e4: 8e 2d mov r24, r14 + 7e6: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 7ec: 4d c1 rjmp .+666 ; 0xa88 <__stack+0x189> + _delay_ms(1); + uint8_t curent_heur = rtc.r_heur(); //Lecture du temps DS1307 + if((curent_heur&0x0F) == 0x09) // Si 1e digit = 9 + curent_heur = (((curent_heur&0xF0)>>4)+1)<<4; //Incrémente de 10 + 7ee: 80 7f andi r24, 0xF0 ; 240 + 7f0: 60 e1 ldi r22, 0x10 ; 16 + 7f2: 68 0f add r22, r24 + 7f4: 08 c0 rjmp .+16 ; 0x806 <_Z6boutonv+0x170> + else if(curent_heur >= 0x23) //Si arrivé à 24H retour à 00H, /!\ Attention n'incrémente pas la date !! + 7f6: 83 32 cpi r24, 0x23 ; 35 + 7f8: 28 f4 brcc .+10 ; 0x804 <_Z6boutonv+0x16e> + curent_heur = 0x00; + else + curent_heur = ((curent_heur&0x0F)+1)|(curent_heur&0xF0); //Incrémente de 1 + 7fa: 9f 5f subi r25, 0xFF ; 255 + 7fc: 80 7f andi r24, 0xF0 ; 240 + 7fe: 69 2f mov r22, r25 + 800: 68 2b or r22, r24 + 802: 01 c0 rjmp .+2 ; 0x806 <_Z6boutonv+0x170> + _delay_ms(1); + uint8_t curent_heur = rtc.r_heur(); //Lecture du temps DS1307 + if((curent_heur&0x0F) == 0x09) // Si 1e digit = 9 + curent_heur = (((curent_heur&0xF0)>>4)+1)<<4; //Incrémente de 10 + else if(curent_heur >= 0x23) //Si arrivé à 24H retour à 00H, /!\ Attention n'incrémente pas la date !! + curent_heur = 0x00; + 804: 60 e0 ldi r22, 0x00 ; 0 + else + curent_heur = ((curent_heur&0x0F)+1)|(curent_heur&0xF0); //Incrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + 806: 40 e0 ldi r20, 0x00 ; 0 + 808: 8d e0 ldi r24, 0x0D ; 13 + 80a: 91 e0 ldi r25, 0x01 ; 1 + 80c: 0e 94 d4 0a call 0x15a8 ; 0x15a8 <_ZN6ds13076w_heurEhh> + 810: d6 c1 rjmp .+940 ; 0xbbe <__stack+0x2bf> + } + else if(PINB & (1< + 816: 8e 2d mov r24, r14 + 818: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 81e: 48 c1 rjmp .+656 ; 0xab0 <__stack+0x1b1> + _delay_ms(1); + uint8_t curent_heur = rtc.r_heur(); //Lecture du temps DS1307 + if(curent_heur == 0x00) //Si arrive à 00H, /!\ Attention ne décrémente pas la date !! + curent_heur = 0x23; //Retour à 24H + else if((curent_heur&0x0F) == 0) // Si 1e digit = 0 + 820: 98 2f mov r25, r24 + 822: 9f 70 andi r25, 0x0F ; 15 + 824: 69 f4 brne .+26 ; 0x840 <_Z6boutonv+0x1aa> + curent_heur = ((((curent_heur&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + 826: 82 95 swap r24 + 828: 8f 70 andi r24, 0x0F ; 15 + 82a: 90 e0 ldi r25, 0x00 ; 0 + 82c: 01 97 sbiw r24, 0x01 ; 1 + 82e: 82 95 swap r24 + 830: 92 95 swap r25 + 832: 90 7f andi r25, 0xF0 ; 240 + 834: 98 27 eor r25, r24 + 836: 80 7f andi r24, 0xF0 ; 240 + 838: 98 27 eor r25, r24 + 83a: 68 2f mov r22, r24 + 83c: 69 60 ori r22, 0x09 ; 9 + 83e: 06 c0 rjmp .+12 ; 0x84c <_Z6boutonv+0x1b6> + else + curent_heur = ((curent_heur&0x0f)-1)|(curent_heur&0xf0); //Décrémente de 1 + 840: 91 50 subi r25, 0x01 ; 1 + 842: 80 7f andi r24, 0xF0 ; 240 + 844: 69 2f mov r22, r25 + 846: 68 2b or r22, r24 + 848: 01 c0 rjmp .+2 ; 0x84c <_Z6boutonv+0x1b6> + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else + curent_heur = ((curent_heur&0x0f)-1)|(curent_heur&0xf0); //Décrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + 84c: 40 e0 ldi r20, 0x00 ; 0 + 84e: 8d e0 ldi r24, 0x0D ; 13 + 850: 91 e0 ldi r25, 0x01 ; 1 + 852: 0e 94 d4 0a call 0x15a8 ; 0x15a8 <_ZN6ds13076w_heurEhh> + 856: b3 c1 rjmp .+870 ; 0xbbe <__stack+0x2bf> + } + break; + case 4: //Config du jour + PORTC &= LOW(1< tmps_clignotement) //Clignotement + 85a: 05 36 cpi r16, 0x65 ; 101 + 85c: 11 05 cpc r17, r1 + 85e: 34 f0 brlt .+12 ; 0x86c <_Z6boutonv+0x1d6> + clignotement(SR_JOURS, true); + 860: 6d 2d mov r22, r13 + 862: 80 e0 ldi r24, 0x00 ; 0 + 864: 90 e0 ldi r25, 0x00 ; 0 + 866: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 86a: 02 c0 rjmp .+4 ; 0x870 <_Z6boutonv+0x1da> + else + affichage_date(); + 86c: 0e 94 eb 00 call 0x1d6 ; 0x1d6 <_Z14affichage_datev> + if(PINB & (1< + 874: 8e 2d mov r24, r14 + 876: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 87c: 2b c1 rjmp .+598 ; 0xad4 <__stack+0x1d5> + _delay_ms(1); + uint8_t curent_day = rtc.r_jour(); //Lecture du temps DS1307 + if((curent_day&0x0F) == 0x09) // Si 1e digit = 9 + curent_day = (((curent_day&0xF0)>>4)+1)<<4; //Incrémente de 10 + 87e: 80 7f andi r24, 0xF0 ; 240 + 880: 60 e1 ldi r22, 0x10 ; 16 + 882: 68 0f add r22, r24 + 884: 04 c0 rjmp .+8 ; 0x88e <_Z6boutonv+0x1f8> + else + curent_day = ((curent_day&0x0F)+1)|(curent_day&0xF0); //Incrémente de 1 + 886: 9f 5f subi r25, 0xFF ; 255 + 888: 80 7f andi r24, 0xF0 ; 240 + 88a: 69 2f mov r22, r25 + 88c: 68 2b or r22, r24 + if(curent_day > 0x31) + 88e: 62 33 cpi r22, 0x32 ; 50 + 890: 08 f0 brcs .+2 ; 0x894 <_Z6boutonv+0x1fe> + curent_day = 0x00; + 892: 60 e0 ldi r22, 0x00 ; 0 + rtc.w_date(curent_day); //Met à jour le DS1307 + 894: 8d e0 ldi r24, 0x0D ; 13 + 896: 91 e0 ldi r25, 0x01 ; 1 + 898: 0e 94 e0 0a call 0x15c0 ; 0x15c0 <_ZN6ds13076w_dateEh> + 89c: 90 c1 rjmp .+800 ; 0xbbe <__stack+0x2bf> + } + else if(PINB & (1< + 8a2: 8e 2d mov r24, r14 + 8a4: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1< + 8aa: 28 c1 rjmp .+592 ; 0xafc <__stack+0x1fd> + _delay_ms(1); + uint8_t curent_heur = rtc.r_jour(); //Lecture du temps DS1307 + if((curent_heur&0x0F) == 0) // Si 1e digit = 0 + curent_heur = ((((curent_heur&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + 8ac: 82 95 swap r24 + 8ae: 8f 70 andi r24, 0x0F ; 15 + 8b0: 90 e0 ldi r25, 0x00 ; 0 + 8b2: 01 97 sbiw r24, 0x01 ; 1 + 8b4: 82 95 swap r24 + 8b6: 92 95 swap r25 + 8b8: 90 7f andi r25, 0xF0 ; 240 + 8ba: 98 27 eor r25, r24 + 8bc: 80 7f andi r24, 0xF0 ; 240 + 8be: 98 27 eor r25, r24 + 8c0: 68 2f mov r22, r24 + 8c2: 69 60 ori r22, 0x09 ; 9 + 8c4: 04 c0 rjmp .+8 ; 0x8ce <_Z6boutonv+0x238> + else + curent_heur = ((curent_heur&0x0F)-1)|(curent_heur&0xF0); //Décrémente de 1 + 8c6: 91 50 subi r25, 0x01 ; 1 + 8c8: 80 7f andi r24, 0xF0 ; 240 + 8ca: 69 2f mov r22, r25 + 8cc: 68 2b or r22, r24 + if(curent_heur == 0x00) + 8ce: 61 11 cpse r22, r1 + 8d0: 01 c0 rjmp .+2 ; 0x8d4 <_Z6boutonv+0x23e> + curent_heur = 0x31; + 8d2: 61 e3 ldi r22, 0x31 ; 49 + rtc.w_date(curent_heur); //Met à jour le DS1307 + 8d4: 8d e0 ldi r24, 0x0D ; 13 + 8d6: 91 e0 ldi r25, 0x01 ; 1 + 8d8: 0e 94 e0 0a call 0x15c0 ; 0x15c0 <_ZN6ds13076w_dateEh> + 8dc: 70 c1 rjmp .+736 ; 0xbbe <__stack+0x2bf> + } + break; + case 5: //config du mois + if(a > tmps_clignotement) //Clignotement + 8de: 05 36 cpi r16, 0x65 ; 101 + 8e0: 11 05 cpc r17, r1 + 8e2: 34 f0 brlt .+12 ; 0x8f0 <_Z6boutonv+0x25a> + clignotement(SR_MOIS, true); + 8e4: 6d 2d mov r22, r13 + 8e6: 81 e0 ldi r24, 0x01 ; 1 + 8e8: 90 e0 ldi r25, 0x00 ; 0 + 8ea: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 8ee: 02 c0 rjmp .+4 ; 0x8f4 <_Z6boutonv+0x25e> + else + affichage_date(); + 8f0: 0e 94 eb 00 call 0x1d6 ; 0x1d6 <_Z14affichage_datev> + if(PINB & (1< + 8f8: 8e 2d mov r24, r14 + 8fa: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 900: 10 c1 rjmp .+544 ; 0xb22 <__stack+0x223> + _delay_ms(1); + uint8_t curent_months = rtc.r_moi();//Lecture du temps DS1307 + if((curent_months&0x0F) == 0x09) // Si 1e digit = 9 + curent_months = (((curent_months&0xF0)>>4)+1)<<4; //Incrémente de 10 + 902: 80 7f andi r24, 0xF0 ; 240 + 904: 60 e1 ldi r22, 0x10 ; 16 + 906: 68 0f add r22, r24 + 908: 04 c0 rjmp .+8 ; 0x912 <__stack+0x13> + else + curent_months = ((curent_months&0x0F)+1)|(curent_months&0xF0); //Incrémente de 1 + 90a: 9f 5f subi r25, 0xFF ; 255 + 90c: 80 7f andi r24, 0xF0 ; 240 + 90e: 69 2f mov r22, r25 + 910: 68 2b or r22, r24 + if(curent_months > 0x12) + 912: 63 31 cpi r22, 0x13 ; 19 + 914: 08 f0 brcs .+2 ; 0x918 <__stack+0x19> + curent_months = 0x01; + 916: 6d 2d mov r22, r13 + rtc.w_moi(curent_months); //Met à jour le DS1307 + 918: 8d e0 ldi r24, 0x0D ; 13 + 91a: 91 e0 ldi r25, 0x01 ; 1 + 91c: 0e 94 e6 0a call 0x15cc ; 0x15cc <_ZN6ds13075w_moiEh> + 920: 4e c1 rjmp .+668 ; 0xbbe <__stack+0x2bf> + } + else if(PINB & (1< + 926: 8e 2d mov r24, r14 + 928: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1< + 92e: 0d c1 rjmp .+538 ; 0xb4a <__stack+0x24b> + _delay_ms(1); + uint8_t curent_months = rtc.r_moi();//Lecture du temps DS1307 + if((curent_months&0x0F) == 0) // Si 1e digit = 0 + curent_months = ((((curent_months&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + 930: 82 95 swap r24 + 932: 8f 70 andi r24, 0x0F ; 15 + 934: 90 e0 ldi r25, 0x00 ; 0 + 936: 01 97 sbiw r24, 0x01 ; 1 + 938: 82 95 swap r24 + 93a: 92 95 swap r25 + 93c: 90 7f andi r25, 0xF0 ; 240 + 93e: 98 27 eor r25, r24 + 940: 80 7f andi r24, 0xF0 ; 240 + 942: 98 27 eor r25, r24 + 944: 68 2f mov r22, r24 + 946: 69 60 ori r22, 0x09 ; 9 + 948: 04 c0 rjmp .+8 ; 0x952 <__stack+0x53> + else + curent_months = ((curent_months&0x0F)-1)|(curent_months&0xF0); //Décrémente de 1 + 94a: 91 50 subi r25, 0x01 ; 1 + 94c: 80 7f andi r24, 0xF0 ; 240 + 94e: 69 2f mov r22, r25 + 950: 68 2b or r22, r24 + if(curent_months < 0x01) + 952: 61 11 cpse r22, r1 + 954: 01 c0 rjmp .+2 ; 0x958 <__stack+0x59> + curent_months = 0x12; + 956: 6c 2d mov r22, r12 + rtc.w_moi(curent_months); //Met à jour le DS1307 + 958: 8d e0 ldi r24, 0x0D ; 13 + 95a: 91 e0 ldi r25, 0x01 ; 1 + 95c: 0e 94 e6 0a call 0x15cc ; 0x15cc <_ZN6ds13075w_moiEh> + 960: 2e c1 rjmp .+604 ; 0xbbe <__stack+0x2bf> + } + break; + case 6: //Config de l'année + if(a > tmps_clignotement) //Clignotement + 962: 05 36 cpi r16, 0x65 ; 101 + 964: 11 05 cpc r17, r1 + 966: 34 f0 brlt .+12 ; 0x974 <__stack+0x75> + clignotement(SR_ANNEE, true); + 968: 6d 2d mov r22, r13 + 96a: 82 e0 ldi r24, 0x02 ; 2 + 96c: 90 e0 ldi r25, 0x00 ; 0 + 96e: 0e 94 45 01 call 0x28a ; 0x28a <_Z12clignotementib> + 972: 02 c0 rjmp .+4 ; 0x978 <__stack+0x79> + else + affichage_date(); + 974: 0e 94 eb 00 call 0x1d6 ; 0x1d6 <_Z14affichage_datev> + if(PINB & (1< + 97c: 8e 2d mov r24, r14 + 97e: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1< + 984: ff c0 rjmp .+510 ; 0xb84 <__stack+0x285> + _delay_ms(1); + uint8_t curent_year = rtc.r_year();//Lecture du temps DS1307 + if((curent_year&0x0F) == 0x09) // Si 1e digit = 9 + curent_year = (((curent_year&0xF0)>>4)+1)<<4; //Incrémente de 10 + 986: 80 7f andi r24, 0xF0 ; 240 + 988: 60 e1 ldi r22, 0x10 ; 16 + 98a: 68 0f add r22, r24 + 98c: 04 c0 rjmp .+8 ; 0x996 <__stack+0x97> + else + curent_year = ((curent_year&0x0F)+1)|(curent_year&0xF0); //Incrémente de 1 + 98e: 9f 5f subi r25, 0xFF ; 255 + 990: 80 7f andi r24, 0xF0 ; 240 + 992: 69 2f mov r22, r25 + 994: 68 2b or r22, r24 + if(curent_year > 0x99) + 996: 6a 39 cpi r22, 0x9A ; 154 + 998: 08 f0 brcs .+2 ; 0x99c <__stack+0x9d> + curent_year = 0x00; + 99a: 60 e0 ldi r22, 0x00 ; 0 + rtc.w_year(curent_year); //Met à jour le DS1307 + 99c: 8d e0 ldi r24, 0x0D ; 13 + 99e: 91 e0 ldi r25, 0x01 ; 1 + 9a0: 0e 94 ec 0a call 0x15d8 ; 0x15d8 <_ZN6ds13076w_yearEh> + 9a4: 0c c1 rjmp .+536 ; 0xbbe <__stack+0x2bf> + } + else if(PINB & (1< + 9aa: 8e 2d mov r24, r14 + 9ac: 9f 2d mov r25, r15 + { + for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1< + 9b2: f2 c0 rjmp .+484 ; 0xb98 <__stack+0x299> + _delay_ms(1); + uint8_t curent_year = rtc.r_year();//Lecture du temps DS1307 + if((curent_year&0x0F) == 0 && curent_year != 0x00) // Si 1e digit = 0 + 9b4: 88 23 and r24, r24 + 9b6: a1 f0 breq .+40 ; 0x9e0 <__stack+0xe1> + curent_year = ((((curent_year&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + 9b8: 82 95 swap r24 + 9ba: 8f 70 andi r24, 0x0F ; 15 + 9bc: 90 e0 ldi r25, 0x00 ; 0 + 9be: 01 97 sbiw r24, 0x01 ; 1 + 9c0: 82 95 swap r24 + 9c2: 92 95 swap r25 + 9c4: 90 7f andi r25, 0xF0 ; 240 + 9c6: 98 27 eor r25, r24 + 9c8: 80 7f andi r24, 0xF0 ; 240 + 9ca: 98 27 eor r25, r24 + 9cc: 68 2f mov r22, r24 + 9ce: 69 60 ori r22, 0x09 ; 9 + 9d0: 0a c0 rjmp .+20 ; 0x9e6 <__stack+0xe7> + else if (curent_year != 0x00) + 9d2: 88 23 and r24, r24 + 9d4: 39 f0 breq .+14 ; 0x9e4 <__stack+0xe5> + curent_year = ((curent_year&0x0F)-1)|(curent_year&0xF0); //Décrémente de 1 + 9d6: 91 50 subi r25, 0x01 ; 1 + 9d8: 80 7f andi r24, 0xF0 ; 240 + 9da: 69 2f mov r22, r25 + 9dc: 68 2b or r22, r24 + 9de: 03 c0 rjmp .+6 ; 0x9e6 <__stack+0xe7> + else + curent_year = 0x99; + 9e0: 6b 2d mov r22, r11 + 9e2: 01 c0 rjmp .+2 ; 0x9e6 <__stack+0xe7> + 9e4: 6b 2d mov r22, r11 + rtc.w_year(curent_year); //Met à jour le DS1307 + 9e6: 8d e0 ldi r24, 0x0D ; 13 + 9e8: 91 e0 ldi r25, 0x01 ; 1 + 9ea: 0e 94 ec 0a call 0x15d8 ; 0x15d8 <_ZN6ds13076w_yearEh> + 9ee: e7 c0 rjmp .+462 ; 0xbbe <__stack+0x2bf> + } + break; + + } + PORTC &= LOW(1< + 9fe: 00 c0 rjmp .+0 ; 0xa00 <__stack+0x101> + a00: 00 00 nop + if (PINB & (1< + a08: e6 c0 rjmp .+460 ; 0xbd6 <__stack+0x2d7> + a0a: 5b ce rjmp .-842 ; 0x6c2 <_Z6boutonv+0x2c> + { + if(a >= (tmps_clignotement*2)) + a = 0; + a0c: c1 e0 ldi r28, 0x01 ; 1 + a0e: d0 e0 ldi r29, 0x00 ; 0 + a10: 00 e0 ldi r16, 0x00 ; 0 + a12: 10 e0 ldi r17, 0x00 ; 0 + curent_heur = 0x00; + else + curent_heur = ((curent_heur&0x0F)+1)|(curent_heur&0xF0); //Incrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else + curent_months = ((curent_months&0x0F)-1)|(curent_months&0xF0); //Décrémente de 1 + if(curent_months < 0x01) + curent_months = 0x12; + a24: 0f 2e mov r0, r31 + a26: f2 e1 ldi r31, 0x12 ; 18 + a28: cf 2e mov r12, r31 + a2a: f0 2d mov r31, r0 + if((curent_months&0x0F) == 0x09) // Si 1e digit = 9 + curent_months = (((curent_months&0xF0)>>4)+1)<<4; //Incrémente de 10 + else + curent_months = ((curent_months&0x0F)+1)|(curent_months&0xF0); //Incrémente de 1 + if(curent_months > 0x12) + curent_months = 0x01; + a2c: dd 24 eor r13, r13 + a2e: d3 94 inc r13 + if((curent_year&0x0F) == 0 && curent_year != 0x00) // Si 1e digit = 0 + curent_year = ((((curent_year&0xF0)>>4)-1)<<4)|0x09; //Décrémente de 10 + else if (curent_year != 0x00) + curent_year = ((curent_year&0x0F)-1)|(curent_year&0xF0); //Décrémente de 1 + else + curent_year = 0x99; + a30: 0f 2e mov r0, r31 + a32: f9 e9 ldi r31, 0x99 ; 153 + a34: bf 2e mov r11, r31 + a36: f0 2d mov r31, r0 + a38: 4b ce rjmp .-874 ; 0x6d0 <_Z6boutonv+0x3a> + affichage_heur(); + if(PINB & (1< + if((curent_minute&0x0F) == 0x09) // Si 1e digit = 9 + a42: 98 2f mov r25, r24 + a44: 9f 70 andi r25, 0x0F ; 15 + a46: 99 30 cpi r25, 0x09 ; 9 + a48: 09 f0 breq .+2 ; 0xa4c <__stack+0x14d> + a4a: 91 ce rjmp .-734 ; 0x76e <_Z6boutonv+0xd8> + a4c: 8c ce rjmp .-744 ; 0x766 <_Z6boutonv+0xd0> + a4e: ef e9 ldi r30, 0x9F ; 159 + a50: ff e0 ldi r31, 0x0F ; 15 + a52: 31 97 sbiw r30, 0x01 ; 1 + a54: f1 f7 brne .-4 ; 0xa52 <__stack+0x153> + a56: 00 c0 rjmp .+0 ; 0xa58 <__stack+0x159> + a58: 00 00 nop + a5a: 01 97 sbiw r24, 0x01 ; 1 + clignotement(SR_MINUTE, false); + else + affichage_heur(); + if(PINB & (1< + a60: 7f ce rjmp .-770 ; 0x760 <_Z6boutonv+0xca> + } + else if(PINB & (1< + if((curent_minute&0x0F) == 0x00) // Si 1e digit = 0 + a6a: 98 2f mov r25, r24 + a6c: 9f 70 andi r25, 0x0F ; 15 + a6e: 09 f4 brne .+2 ; 0xa72 <__stack+0x173> + a70: 8f ce rjmp .-738 ; 0x790 <_Z6boutonv+0xfa> + a72: 9c ce rjmp .-712 ; 0x7ac <_Z6boutonv+0x116> + a74: ef e9 ldi r30, 0x9F ; 159 + a76: ff e0 ldi r31, 0x0F ; 15 + a78: 31 97 sbiw r30, 0x01 ; 1 + a7a: f1 f7 brne .-4 ; 0xa78 <__stack+0x179> + a7c: 00 c0 rjmp .+0 ; 0xa7e <__stack+0x17f> + a7e: 00 00 nop + a80: 01 97 sbiw r24, 0x01 ; 1 + curent_minute = 0x00; + rtc.w_minute(curent_minute); //Met à jour le DS1307 + } + else if(PINB & (1< + a86: 81 ce rjmp .-766 ; 0x78a <_Z6boutonv+0xf4> + affichage_heur(); + if(PINB & (1< + if((curent_heur&0x0F) == 0x09) // Si 1e digit = 9 + a90: 98 2f mov r25, r24 + a92: 9f 70 andi r25, 0x0F ; 15 + a94: 99 30 cpi r25, 0x09 ; 9 + a96: 09 f0 breq .+2 ; 0xa9a <__stack+0x19b> + a98: ae ce rjmp .-676 ; 0x7f6 <_Z6boutonv+0x160> + a9a: a9 ce rjmp .-686 ; 0x7ee <_Z6boutonv+0x158> + a9c: ef e9 ldi r30, 0x9F ; 159 + a9e: ff e0 ldi r31, 0x0F ; 15 + aa0: 31 97 sbiw r30, 0x01 ; 1 + aa2: f1 f7 brne .-4 ; 0xaa0 <__stack+0x1a1> + aa4: 00 c0 rjmp .+0 ; 0xaa6 <__stack+0x1a7> + aa6: 00 00 nop + aa8: 01 97 sbiw r24, 0x01 ; 1 + clignotement(SR_HEUR, false); + else + affichage_heur(); + if(PINB & (1< + aae: 9c ce rjmp .-712 ; 0x7e8 <_Z6boutonv+0x152> + } + else if(PINB & (1< + if(curent_heur == 0x00) //Si arrive à 00H, /!\ Attention ne décrémente pas la date !! + ab8: 88 23 and r24, r24 + aba: 09 f4 brne .+2 ; 0xabe <__stack+0x1bf> + abc: c6 ce rjmp .-628 ; 0x84a <_Z6boutonv+0x1b4> + abe: b0 ce rjmp .-672 ; 0x820 <_Z6boutonv+0x18a> + ac0: ef e9 ldi r30, 0x9F ; 159 + ac2: ff e0 ldi r31, 0x0F ; 15 + ac4: 31 97 sbiw r30, 0x01 ; 1 + ac6: f1 f7 brne .-4 ; 0xac4 <__stack+0x1c5> + ac8: 00 c0 rjmp .+0 ; 0xaca <__stack+0x1cb> + aca: 00 00 nop + acc: 01 97 sbiw r24, 0x01 ; 1 + curent_heur = ((curent_heur&0x0F)+1)|(curent_heur&0xF0); //Incrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + } + else if(PINB & (1< + ad2: a3 ce rjmp .-698 ; 0x81a <_Z6boutonv+0x184> + affichage_date(); + if(PINB & (1< + if((curent_day&0x0F) == 0x09) // Si 1e digit = 9 + adc: 98 2f mov r25, r24 + ade: 9f 70 andi r25, 0x0F ; 15 + ae0: 99 30 cpi r25, 0x09 ; 9 + ae2: 09 f0 breq .+2 ; 0xae6 <__stack+0x1e7> + ae4: d0 ce rjmp .-608 ; 0x886 <_Z6boutonv+0x1f0> + ae6: cb ce rjmp .-618 ; 0x87e <_Z6boutonv+0x1e8> + ae8: ef e9 ldi r30, 0x9F ; 159 + aea: ff e0 ldi r31, 0x0F ; 15 + aec: 31 97 sbiw r30, 0x01 ; 1 + aee: f1 f7 brne .-4 ; 0xaec <__stack+0x1ed> + af0: 00 c0 rjmp .+0 ; 0xaf2 <__stack+0x1f3> + af2: 00 00 nop + af4: 01 97 sbiw r24, 0x01 ; 1 + clignotement(SR_JOURS, true); + else + affichage_date(); + if(PINB & (1< + afa: be ce rjmp .-644 ; 0x878 <_Z6boutonv+0x1e2> + } + else if(PINB & (1< + if((curent_heur&0x0F) == 0) // Si 1e digit = 0 + b04: 98 2f mov r25, r24 + b06: 9f 70 andi r25, 0x0F ; 15 + b08: 09 f4 brne .+2 ; 0xb0c <__stack+0x20d> + b0a: d0 ce rjmp .-608 ; 0x8ac <_Z6boutonv+0x216> + b0c: dc ce rjmp .-584 ; 0x8c6 <_Z6boutonv+0x230> + b0e: ef e9 ldi r30, 0x9F ; 159 + b10: ff e0 ldi r31, 0x0F ; 15 + b12: 31 97 sbiw r30, 0x01 ; 1 + b14: f1 f7 brne .-4 ; 0xb12 <__stack+0x213> + b16: 00 c0 rjmp .+0 ; 0xb18 <__stack+0x219> + b18: 00 00 nop + b1a: 01 97 sbiw r24, 0x01 ; 1 + curent_day = 0x00; + rtc.w_date(curent_day); //Met à jour le DS1307 + } + else if(PINB & (1< + b20: c2 ce rjmp .-636 ; 0x8a6 <_Z6boutonv+0x210> + affichage_date(); + if(PINB & (1< + if((curent_months&0x0F) == 0x09) // Si 1e digit = 9 + b2a: 98 2f mov r25, r24 + b2c: 9f 70 andi r25, 0x0F ; 15 + b2e: 99 30 cpi r25, 0x09 ; 9 + b30: 09 f0 breq .+2 ; 0xb34 <__stack+0x235> + b32: eb ce rjmp .-554 ; 0x90a <__stack+0xb> + b34: e6 ce rjmp .-564 ; 0x902 <__stack+0x3> + b36: ef e9 ldi r30, 0x9F ; 159 + b38: ff e0 ldi r31, 0x0F ; 15 + b3a: 31 97 sbiw r30, 0x01 ; 1 + b3c: f1 f7 brne .-4 ; 0xb3a <__stack+0x23b> + b3e: 00 c0 rjmp .+0 ; 0xb40 <__stack+0x241> + b40: 00 00 nop + b42: 01 97 sbiw r24, 0x01 ; 1 + clignotement(SR_MOIS, true); + else + affichage_date(); + if(PINB & (1< + b48: d9 ce rjmp .-590 ; 0x8fc <_Z6boutonv+0x266> + } + else if(PINB & (1< + if((curent_months&0x0F) == 0) // Si 1e digit = 0 + b52: 98 2f mov r25, r24 + b54: 9f 70 andi r25, 0x0F ; 15 + b56: 09 f4 brne .+2 ; 0xb5a <__stack+0x25b> + b58: eb ce rjmp .-554 ; 0x930 <__stack+0x31> + b5a: f7 ce rjmp .-530 ; 0x94a <__stack+0x4b> + b5c: ef e9 ldi r30, 0x9F ; 159 + b5e: ff e0 ldi r31, 0x0F ; 15 + b60: 31 97 sbiw r30, 0x01 ; 1 + b62: f1 f7 brne .-4 ; 0xb60 <__stack+0x261> + b64: 00 c0 rjmp .+0 ; 0xb66 <__stack+0x267> + b66: 00 00 nop + b68: 01 97 sbiw r24, 0x01 ; 1 + curent_months = 0x01; + rtc.w_moi(curent_months); //Met à jour le DS1307 + } + else if(PINB & (1< + b6e: dd ce rjmp .-582 ; 0x92a <__stack+0x2b> + b70: ef e9 ldi r30, 0x9F ; 159 + b72: ff e0 ldi r31, 0x0F ; 15 + b74: 31 97 sbiw r30, 0x01 ; 1 + b76: f1 f7 brne .-4 ; 0xb74 <__stack+0x275> + b78: 00 c0 rjmp .+0 ; 0xb7a <__stack+0x27b> + b7a: 00 00 nop + b7c: 01 97 sbiw r24, 0x01 ; 1 + clignotement(SR_ANNEE, true); + else + affichage_date(); + if(PINB & (1< + b82: fe ce rjmp .-516 ; 0x980 <__stack+0x81> + _delay_ms(1); + uint8_t curent_year = rtc.r_year();//Lecture du temps DS1307 + b84: 8d e0 ldi r24, 0x0D ; 13 + b86: 91 e0 ldi r25, 0x01 ; 1 + b88: 0e 94 c4 0a call 0x1588 ; 0x1588 <_ZN6ds13076r_yearEv> + if((curent_year&0x0F) == 0x09) // Si 1e digit = 9 + b8c: 98 2f mov r25, r24 + b8e: 9f 70 andi r25, 0x0F ; 15 + b90: 99 30 cpi r25, 0x09 ; 9 + b92: 09 f0 breq .+2 ; 0xb96 <__stack+0x297> + b94: fc ce rjmp .-520 ; 0x98e <__stack+0x8f> + b96: f7 ce rjmp .-530 ; 0x986 <__stack+0x87> + } + else if(PINB & (1< + if((curent_year&0x0F) == 0 && curent_year != 0x00) // Si 1e digit = 0 + ba0: 98 2f mov r25, r24 + ba2: 9f 70 andi r25, 0x0F ; 15 + ba4: 09 f4 brne .+2 ; 0xba8 <__stack+0x2a9> + ba6: 06 cf rjmp .-500 ; 0x9b4 <__stack+0xb5> + ba8: 14 cf rjmp .-472 ; 0x9d2 <__stack+0xd3> + baa: ef e9 ldi r30, 0x9F ; 159 + bac: ff e0 ldi r31, 0x0F ; 15 + bae: 31 97 sbiw r30, 0x01 ; 1 + bb0: f1 f7 brne .-4 ; 0xbae <__stack+0x2af> + bb2: 00 c0 rjmp .+0 ; 0xbb4 <__stack+0x2b5> + bb4: 00 00 nop + bb6: 01 97 sbiw r24, 0x01 ; 1 + curent_year = 0x00; + rtc.w_year(curent_year); //Met à jour le DS1307 + } + else if(PINB & (1< + bbc: f8 ce rjmp .-528 ; 0x9ae <__stack+0xaf> + rtc.w_year(curent_year); //Met à jour le DS1307 + } + break; + + } + PORTC &= LOW(1< + bcc: 00 c0 rjmp .+0 ; 0xbce <__stack+0x2cf> + bce: 00 00 nop + if (PINB & (1< + } + PORTC &= LOW(1<: +void uart_ds1307() +{ + bea: cf 92 push r12 + bec: df 92 push r13 + bee: ef 92 push r14 + bf0: ff 92 push r15 + bf2: 0f 93 push r16 + bf4: 1f 93 push r17 + bf6: cf 93 push r28 + bf8: df 93 push r29 + if(usart == 0xCF) + bfa: 80 91 02 01 lds r24, 0x0102 + bfe: 8f 3c cpi r24, 0xCF ; 207 + c00: 09 f0 breq .+2 ; 0xc04 <_Z11uart_ds1307v+0x1a> + c02: bd c0 rjmp .+378 ; 0xd7e <_Z11uart_ds1307v+0x194> + c04: b1 c0 rjmp .+354 ; 0xd68 <_Z11uart_ds1307v+0x17e> + bool cfg = true; + for(int a = 0; cfg ; a++) + { + usart = USART_Receive(); + if(a>100) + a=0; + c06: 0c 2d mov r16, r12 + c08: 1d 2d mov r17, r13 + if(usart == 0xC1) + c0a: 81 3c cpi r24, 0xC1 ; 193 + c0c: 49 f5 brne .+82 ; 0xc60 <_Z11uart_ds1307v+0x76> + { + usart = USART_Receive(); + c0e: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + c12: 80 93 02 01 sts 0x0102, r24 + for(int b = 0; !usart ; b++) + c16: 88 23 and r24, r24 + c18: 09 f4 brne .+2 ; 0xc1c <_Z11uart_ds1307v+0x32> + c1a: 9d c0 rjmp .+314 ; 0xd56 <_Z11uart_ds1307v+0x16c> + c1c: 16 c0 rjmp .+44 ; 0xc4a <_Z11uart_ds1307v+0x60> + { + usart = USART_Receive(); + c1e: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + c22: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + c26: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(b>100) + c2a: c5 36 cpi r28, 0x65 ; 101 + c2c: d1 05 cpc r29, r1 + c2e: 14 f0 brlt .+4 ; 0xc34 <_Z11uart_ds1307v+0x4a> + b=0; + c30: ce 2d mov r28, r14 + c32: df 2d mov r29, r15 + c34: 8f e9 ldi r24, 0x9F ; 159 + c36: 9f e0 ldi r25, 0x0F ; 15 + c38: 01 97 sbiw r24, 0x01 ; 1 + c3a: f1 f7 brne .-4 ; 0xc38 <_Z11uart_ds1307v+0x4e> + c3c: 00 c0 rjmp .+0 ; 0xc3e <_Z11uart_ds1307v+0x54> + c3e: 00 00 nop + if(a>100) + a=0; + if(usart == 0xC1) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + c40: 21 96 adiw r28, 0x01 ; 1 + c42: 80 91 02 01 lds r24, 0x0102 + c46: 88 23 and r24, r24 + c48: 51 f3 breq .-44 ; 0xc1e <_Z11uart_ds1307v+0x34> + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_seconde(int_to_bcd(usart)); + c4a: 90 e0 ldi r25, 0x00 ; 0 + c4c: 0e 94 60 00 call 0xc0 ; 0xc0 <_Z10int_to_bcdi> + c50: 68 2f mov r22, r24 + c52: 8d e0 ldi r24, 0x0D ; 13 + c54: 91 e0 ldi r25, 0x01 ; 1 + c56: 0e 94 c8 0a call 0x1590 ; 0x1590 <_ZN6ds13079w_secondeEh> + USART_Transmit(0xC1); + c5a: 81 ec ldi r24, 0xC1 ; 193 + c5c: 0e 94 2e 0b call 0x165c ; 0x165c <_Z14USART_Transmith> + } + if(usart == 0xC2) + c60: 80 91 02 01 lds r24, 0x0102 + c64: 82 3c cpi r24, 0xC2 ; 194 + c66: 49 f5 brne .+82 ; 0xcba <_Z11uart_ds1307v+0xd0> + { + usart = USART_Receive(); + c68: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + c6c: 80 93 02 01 sts 0x0102, r24 + for(int b = 0; !usart ; b++) + c70: 88 23 and r24, r24 + c72: 09 f4 brne .+2 ; 0xc76 <_Z11uart_ds1307v+0x8c> + c74: 67 c0 rjmp .+206 ; 0xd44 <_Z11uart_ds1307v+0x15a> + c76: 16 c0 rjmp .+44 ; 0xca4 <_Z11uart_ds1307v+0xba> + { + usart = USART_Receive(); + c78: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + c7c: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + c80: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(b>100) + c84: c5 36 cpi r28, 0x65 ; 101 + c86: d1 05 cpc r29, r1 + c88: 14 f0 brlt .+4 ; 0xc8e <_Z11uart_ds1307v+0xa4> + b=0; + c8a: ce 2d mov r28, r14 + c8c: df 2d mov r29, r15 + c8e: 8f e9 ldi r24, 0x9F ; 159 + c90: 9f e0 ldi r25, 0x0F ; 15 + c92: 01 97 sbiw r24, 0x01 ; 1 + c94: f1 f7 brne .-4 ; 0xc92 <_Z11uart_ds1307v+0xa8> + c96: 00 c0 rjmp .+0 ; 0xc98 <_Z11uart_ds1307v+0xae> + c98: 00 00 nop + USART_Transmit(0xC1); + } + if(usart == 0xC2) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + c9a: 21 96 adiw r28, 0x01 ; 1 + c9c: 80 91 02 01 lds r24, 0x0102 + ca0: 88 23 and r24, r24 + ca2: 51 f3 breq .-44 ; 0xc78 <_Z11uart_ds1307v+0x8e> + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_minute(int_to_bcd(usart)); + ca4: 90 e0 ldi r25, 0x00 ; 0 + ca6: 0e 94 60 00 call 0xc0 ; 0xc0 <_Z10int_to_bcdi> + caa: 68 2f mov r22, r24 + cac: 8d e0 ldi r24, 0x0D ; 13 + cae: 91 e0 ldi r25, 0x01 ; 1 + cb0: 0e 94 ce 0a call 0x159c ; 0x159c <_ZN6ds13078w_minuteEh> + USART_Transmit(0xC2); + cb4: 82 ec ldi r24, 0xC2 ; 194 + cb6: 0e 94 2e 0b call 0x165c ; 0x165c <_Z14USART_Transmith> + } + if(usart == 0xC3) + cba: 80 91 02 01 lds r24, 0x0102 + cbe: 83 3c cpi r24, 0xC3 ; 195 + cc0: 49 f5 brne .+82 ; 0xd14 <_Z11uart_ds1307v+0x12a> + { + usart = USART_Receive(); + cc2: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + cc6: 80 93 02 01 sts 0x0102, r24 + for(int b = 0; !usart ; b++) + cca: 88 23 and r24, r24 + ccc: 91 f1 breq .+100 ; 0xd32 <_Z11uart_ds1307v+0x148> + cce: 16 c0 rjmp .+44 ; 0xcfc <_Z11uart_ds1307v+0x112> + { + usart = USART_Receive(); + cd0: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + cd4: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + cd8: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(b>100) + cdc: c5 36 cpi r28, 0x65 ; 101 + cde: d1 05 cpc r29, r1 + ce0: 14 f0 brlt .+4 ; 0xce6 <_Z11uart_ds1307v+0xfc> + b=0; + ce2: ce 2d mov r28, r14 + ce4: df 2d mov r29, r15 + ce6: 8f e9 ldi r24, 0x9F ; 159 + ce8: 9f e0 ldi r25, 0x0F ; 15 + cea: 01 97 sbiw r24, 0x01 ; 1 + cec: f1 f7 brne .-4 ; 0xcea <_Z11uart_ds1307v+0x100> + cee: 00 c0 rjmp .+0 ; 0xcf0 <_Z11uart_ds1307v+0x106> + cf0: 00 00 nop + USART_Transmit(0xC2); + } + if(usart == 0xC3) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + cf2: 21 96 adiw r28, 0x01 ; 1 + cf4: 80 91 02 01 lds r24, 0x0102 + cf8: 88 23 and r24, r24 + cfa: 51 f3 breq .-44 ; 0xcd0 <_Z11uart_ds1307v+0xe6> + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_heur(int_to_bcd(usart), 0); + cfc: 90 e0 ldi r25, 0x00 ; 0 + cfe: 0e 94 60 00 call 0xc0 ; 0xc0 <_Z10int_to_bcdi> + d02: 40 e0 ldi r20, 0x00 ; 0 + d04: 68 2f mov r22, r24 + d06: 8d e0 ldi r24, 0x0D ; 13 + d08: 91 e0 ldi r25, 0x01 ; 1 + d0a: 0e 94 d4 0a call 0x15a8 ; 0x15a8 <_ZN6ds13076w_heurEhh> + USART_Transmit(0xC3); + d0e: 83 ec ldi r24, 0xC3 ; 195 + d10: 0e 94 2e 0b call 0x165c ; 0x165c <_Z14USART_Transmith> + } + if(usart == 0xC4) + d14: 80 91 02 01 lds r24, 0x0102 + d18: 84 3c cpi r24, 0xC4 ; 196 + d1a: 89 f1 breq .+98 ; 0xd7e <_Z11uart_ds1307v+0x194> +void uart_ds1307() +{ + if(usart == 0xCF) + { + bool cfg = true; + for(int a = 0; cfg ; a++) + d1c: 0f 5f subi r16, 0xFF ; 255 + d1e: 1f 4f sbci r17, 0xFF ; 255 + { + usart = USART_Receive(); + d20: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + d24: 80 93 02 01 sts 0x0102, r24 + if(a>100) + d28: 05 36 cpi r16, 0x65 ; 101 + d2a: 11 05 cpc r17, r1 + d2c: 0c f0 brlt .+2 ; 0xd30 <_Z11uart_ds1307v+0x146> + d2e: 6b cf rjmp .-298 ; 0xc06 <_Z11uart_ds1307v+0x1c> + d30: 6c cf rjmp .-296 ; 0xc0a <_Z11uart_ds1307v+0x20> + if(usart == 0xC3) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + d32: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + d36: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + d3a: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + USART_Transmit(0xC2); + } + if(usart == 0xC3) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + d3e: cc 2d mov r28, r12 + d40: dd 2d mov r29, r13 + d42: d1 cf rjmp .-94 ; 0xce6 <_Z11uart_ds1307v+0xfc> + if(usart == 0xC2) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + d44: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + d48: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + d4c: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + USART_Transmit(0xC1); + } + if(usart == 0xC2) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + d50: cc 2d mov r28, r12 + d52: dd 2d mov r29, r13 + d54: 9c cf rjmp .-200 ; 0xc8e <_Z11uart_ds1307v+0xa4> + if(usart == 0xC1) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + d56: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + d5a: 80 93 02 01 sts 0x0102, r24 + affichage_heur(); + d5e: 0e 94 98 00 call 0x130 ; 0x130 <_Z14affichage_heurv> + if(a>100) + a=0; + if(usart == 0xC1) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + d62: cc 2d mov r28, r12 + d64: dd 2d mov r29, r13 + d66: 66 cf rjmp .-308 ; 0xc34 <_Z11uart_ds1307v+0x4a> + if(usart == 0xCF) + { + bool cfg = true; + for(int a = 0; cfg ; a++) + { + usart = USART_Receive(); + d68: 0e 94 36 0b call 0x166c ; 0x166c <_Z13USART_Receivev> + d6c: 80 93 02 01 sts 0x0102, r24 + d70: 00 e0 ldi r16, 0x00 ; 0 + d72: 10 e0 ldi r17, 0x00 ; 0 + if(a>100) + a=0; + if(usart == 0xC1) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + d74: c1 2c mov r12, r1 + d76: d1 2c mov r13, r1 + { + usart = USART_Receive(); + affichage_heur(); + if(b>100) + b=0; + d78: ec 2c mov r14, r12 + d7a: fd 2c mov r15, r13 + d7c: 46 cf rjmp .-372 ; 0xc0a <_Z11uart_ds1307v+0x20> + { + cfg =false; + } + } + } +} + d7e: df 91 pop r29 + d80: cf 91 pop r28 + d82: 1f 91 pop r17 + d84: 0f 91 pop r16 + d86: ff 90 pop r15 + d88: ef 90 pop r14 + d8a: df 90 pop r13 + d8c: cf 90 pop r12 + d8e: 08 95 ret + +00000d90 <_GLOBAL__sub_I_rtc>: + d90: 0f 93 push r16 + d92: 1f 93 push r17 + + + +/* Création des objets */ + +ds1307 rtc; + d94: 8d e0 ldi r24, 0x0D ; 13 + d96: 91 e0 ldi r25, 0x01 ; 1 + d98: 0e 94 1e 0a call 0x143c ; 0x143c <_ZN6ds1307C1Ev> +hc74595 shiftRegister(SHIFT_REGISTER_DATA, SHIFT_REGISTER_CLK, SHIFT_REGISTER_CONFIRM, &PORTD); + d9c: 0b e2 ldi r16, 0x2B ; 43 + d9e: 10 e0 ldi r17, 0x00 ; 0 + da0: 25 e0 ldi r18, 0x05 ; 5 + da2: 30 e0 ldi r19, 0x00 ; 0 + da4: 47 e0 ldi r20, 0x07 ; 7 + da6: 50 e0 ldi r21, 0x00 ; 0 + da8: 66 e0 ldi r22, 0x06 ; 6 + daa: 70 e0 ldi r23, 0x00 ; 0 + dac: 83 e0 ldi r24, 0x03 ; 3 + dae: 91 e0 ldi r25, 0x01 ; 1 + db0: 0e 94 dd 06 call 0xdba ; 0xdba <_ZN7hc74595C1EiiiPVh> + { + cfg =false; + } + } + } +} + db4: 1f 91 pop r17 + db6: 0f 91 pop r16 + db8: 08 95 ret + +00000dba <_ZN7hc74595C1EiiiPVh>: +#define F_CPU 16000000UL +#include +#include +#include "hc74595.h" + +hc74595::hc74595(int data, int clk, int stcp,volatile uint8_t *port_uc/*, volatile uint8_t *ddr_uc*/) + dba: 0f 93 push r16 + dbc: 1f 93 push r17 + dbe: fc 01 movw r30, r24 +{ + pin_DATA = data; + dc0: 60 83 st Z, r22 + dc2: 71 83 std Z+1, r23 ; 0x01 + pin_CLK = clk; + dc4: 42 83 std Z+2, r20 ; 0x02 + dc6: 53 83 std Z+3, r21 ; 0x03 + pin_STCP = stcp; + dc8: 24 83 std Z+4, r18 ; 0x04 + dca: 35 83 std Z+5, r19 ; 0x05 + port = port_uc; + dcc: 17 83 std Z+7, r17 ; 0x07 + dce: 06 83 std Z+6, r16 ; 0x06 + ddr = --port_uc; + dd0: d8 01 movw r26, r16 + dd2: 11 97 sbiw r26, 0x01 ; 1 + dd4: b1 87 std Z+9, r27 ; 0x09 + dd6: a0 87 std Z+8, r26 ; 0x08 + *ddr |= (0x01 << data | 0x01 << clk | 0x01 << stcp); + dd8: 5c 91 ld r21, X + dda: 81 e0 ldi r24, 0x01 ; 1 + ddc: 90 e0 ldi r25, 0x00 ; 0 + dde: fc 01 movw r30, r24 + de0: 02 c0 rjmp .+4 ; 0xde6 <_ZN7hc74595C1EiiiPVh+0x2c> + de2: ee 0f add r30, r30 + de4: ff 1f adc r31, r31 + de6: 2a 95 dec r18 + de8: e2 f7 brpl .-8 ; 0xde2 <_ZN7hc74595C1EiiiPVh+0x28> + dea: 9f 01 movw r18, r30 + dec: 25 2b or r18, r21 + dee: fc 01 movw r30, r24 + df0: 02 c0 rjmp .+4 ; 0xdf6 <_ZN7hc74595C1EiiiPVh+0x3c> + df2: ee 0f add r30, r30 + df4: ff 1f adc r31, r31 + df6: 4a 95 dec r20 + df8: e2 f7 brpl .-8 ; 0xdf2 <_ZN7hc74595C1EiiiPVh+0x38> + dfa: af 01 movw r20, r30 + dfc: 42 2b or r20, r18 + dfe: 02 c0 rjmp .+4 ; 0xe04 <_ZN7hc74595C1EiiiPVh+0x4a> + e00: 88 0f add r24, r24 + e02: 99 1f adc r25, r25 + e04: 6a 95 dec r22 + e06: e2 f7 brpl .-8 ; 0xe00 <_ZN7hc74595C1EiiiPVh+0x46> + e08: 84 2b or r24, r20 + e0a: 8c 93 st X, r24 +} + e0c: 1f 91 pop r17 + e0e: 0f 91 pop r16 + e10: 08 95 ret + +00000e12 <_ZN7hc745954sendEhb>: +void hc74595::send(uint8_t data, bool inverted) //Envoi des donnée au Shift Register +{ + e12: 0f 93 push r16 + e14: 1f 93 push r17 + e16: cf 93 push r28 + e18: df 93 push r29 + e1a: fc 01 movw r30, r24 + + for(int a = 0; a < 8 ; a++) + e1c: 80 e0 ldi r24, 0x00 ; 0 + e1e: 90 e0 ldi r25, 0x00 ; 0 + *port &= ~(0x01 << pin_DATA); + *port|= 0x01 << pin_CLK; //Met l'orloge à 1 + } + else + { + *port &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + e20: 21 e0 ldi r18, 0x01 ; 1 + e22: 30 e0 ldi r19, 0x00 ; 0 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + e24: 00 e8 ldi r16, 0x80 ; 128 + e26: 10 e0 ldi r17, 0x00 ; 0 + e28: 70 e0 ldi r23, 0x00 ; 0 +void hc74595::send(uint8_t data, bool inverted) //Envoi des donnée au Shift Register +{ + + for(int a = 0; a < 8 ; a++) + { + if(!inverted) + e2a: 41 11 cpse r20, r1 + e2c: 3d c0 rjmp .+122 ; 0xea8 <_ZN7hc745954sendEhb+0x96> + { + *port &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + e2e: a6 81 ldd r26, Z+6 ; 0x06 + e30: b7 81 ldd r27, Z+7 ; 0x07 + e32: 5c 91 ld r21, X + e34: e9 01 movw r28, r18 + e36: 02 80 ldd r0, Z+2 ; 0x02 + e38: 02 c0 rjmp .+4 ; 0xe3e <_ZN7hc745954sendEhb+0x2c> + e3a: cc 0f add r28, r28 + e3c: dd 1f adc r29, r29 + e3e: 0a 94 dec r0 + e40: e2 f7 brpl .-8 ; 0xe3a <_ZN7hc745954sendEhb+0x28> + e42: c0 95 com r28 + e44: c5 23 and r28, r21 + e46: cc 93 st X, r28 + if(data & (0x01 << a)) //Regarde la valeur de chaque bit + e48: db 01 movw r26, r22 + e4a: 08 2e mov r0, r24 + e4c: 02 c0 rjmp .+4 ; 0xe52 <_ZN7hc745954sendEhb+0x40> + e4e: b5 95 asr r27 + e50: a7 95 ror r26 + e52: 0a 94 dec r0 + e54: e2 f7 brpl .-8 ; 0xe4e <_ZN7hc745954sendEhb+0x3c> + e56: a0 ff sbrs r26, 0 + e58: 0d c0 rjmp .+26 ; 0xe74 <_ZN7hc745954sendEhb+0x62> + *port |= 0x01 << pin_DATA; + e5a: a6 81 ldd r26, Z+6 ; 0x06 + e5c: b7 81 ldd r27, Z+7 ; 0x07 + e5e: 5c 91 ld r21, X + e60: e9 01 movw r28, r18 + e62: 00 80 ld r0, Z + e64: 02 c0 rjmp .+4 ; 0xe6a <_ZN7hc745954sendEhb+0x58> + e66: cc 0f add r28, r28 + e68: dd 1f adc r29, r29 + e6a: 0a 94 dec r0 + e6c: e2 f7 brpl .-8 ; 0xe66 <_ZN7hc745954sendEhb+0x54> + e6e: c5 2b or r28, r21 + e70: cc 93 st X, r28 + e72: 0d c0 rjmp .+26 ; 0xe8e <_ZN7hc745954sendEhb+0x7c> + else + *port &= ~(0x01 << pin_DATA); + e74: a6 81 ldd r26, Z+6 ; 0x06 + e76: b7 81 ldd r27, Z+7 ; 0x07 + e78: 5c 91 ld r21, X + e7a: e9 01 movw r28, r18 + e7c: 00 80 ld r0, Z + e7e: 02 c0 rjmp .+4 ; 0xe84 <_ZN7hc745954sendEhb+0x72> + e80: cc 0f add r28, r28 + e82: dd 1f adc r29, r29 + e84: 0a 94 dec r0 + e86: e2 f7 brpl .-8 ; 0xe80 <_ZN7hc745954sendEhb+0x6e> + e88: c0 95 com r28 + e8a: c5 23 and r28, r21 + e8c: cc 93 st X, r28 + *port|= 0x01 << pin_CLK; //Met l'orloge à 1 + e8e: a6 81 ldd r26, Z+6 ; 0x06 + e90: b7 81 ldd r27, Z+7 ; 0x07 + e92: 5c 91 ld r21, X + e94: e9 01 movw r28, r18 + e96: 02 80 ldd r0, Z+2 ; 0x02 + e98: 02 c0 rjmp .+4 ; 0xe9e <_ZN7hc745954sendEhb+0x8c> + e9a: cc 0f add r28, r28 + e9c: dd 1f adc r29, r29 + e9e: 0a 94 dec r0 + ea0: e2 f7 brpl .-8 ; 0xe9a <_ZN7hc745954sendEhb+0x88> + ea2: c5 2b or r28, r21 + ea4: cc 93 st X, r28 + ea6: 3e c0 rjmp .+124 ; 0xf24 <_ZN7hc745954sendEhb+0x112> + } + else + { + *port &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + ea8: a6 81 ldd r26, Z+6 ; 0x06 + eaa: b7 81 ldd r27, Z+7 ; 0x07 + eac: 5c 91 ld r21, X + eae: e9 01 movw r28, r18 + eb0: 02 80 ldd r0, Z+2 ; 0x02 + eb2: 02 c0 rjmp .+4 ; 0xeb8 <_ZN7hc745954sendEhb+0xa6> + eb4: cc 0f add r28, r28 + eb6: dd 1f adc r29, r29 + eb8: 0a 94 dec r0 + eba: e2 f7 brpl .-8 ; 0xeb4 <_ZN7hc745954sendEhb+0xa2> + ebc: c0 95 com r28 + ebe: c5 23 and r28, r21 + ec0: cc 93 st X, r28 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + ec2: d8 01 movw r26, r16 + ec4: 08 2e mov r0, r24 + ec6: 02 c0 rjmp .+4 ; 0xecc <_ZN7hc745954sendEhb+0xba> + ec8: b5 95 asr r27 + eca: a7 95 ror r26 + ecc: 0a 94 dec r0 + ece: e2 f7 brpl .-8 ; 0xec8 <_ZN7hc745954sendEhb+0xb6> + ed0: a6 23 and r26, r22 + ed2: b7 23 and r27, r23 + ed4: ab 2b or r26, r27 + ed6: 69 f0 breq .+26 ; 0xef2 <_ZN7hc745954sendEhb+0xe0> + *port |= 0x01 << pin_DATA; + ed8: a6 81 ldd r26, Z+6 ; 0x06 + eda: b7 81 ldd r27, Z+7 ; 0x07 + edc: 5c 91 ld r21, X + ede: e9 01 movw r28, r18 + ee0: 00 80 ld r0, Z + ee2: 02 c0 rjmp .+4 ; 0xee8 <_ZN7hc745954sendEhb+0xd6> + ee4: cc 0f add r28, r28 + ee6: dd 1f adc r29, r29 + ee8: 0a 94 dec r0 + eea: e2 f7 brpl .-8 ; 0xee4 <_ZN7hc745954sendEhb+0xd2> + eec: c5 2b or r28, r21 + eee: cc 93 st X, r28 + ef0: 0d c0 rjmp .+26 ; 0xf0c <_ZN7hc745954sendEhb+0xfa> + else + *port &= ~(0x01 << pin_DATA); + ef2: a6 81 ldd r26, Z+6 ; 0x06 + ef4: b7 81 ldd r27, Z+7 ; 0x07 + ef6: 5c 91 ld r21, X + ef8: e9 01 movw r28, r18 + efa: 00 80 ld r0, Z + efc: 02 c0 rjmp .+4 ; 0xf02 <_ZN7hc745954sendEhb+0xf0> + efe: cc 0f add r28, r28 + f00: dd 1f adc r29, r29 + f02: 0a 94 dec r0 + f04: e2 f7 brpl .-8 ; 0xefe <_ZN7hc745954sendEhb+0xec> + f06: c0 95 com r28 + f08: c5 23 and r28, r21 + f0a: cc 93 st X, r28 + *port |= 0x01 << pin_CLK; //Met l'orloge à 1 + f0c: a6 81 ldd r26, Z+6 ; 0x06 + f0e: b7 81 ldd r27, Z+7 ; 0x07 + f10: 5c 91 ld r21, X + f12: e9 01 movw r28, r18 + f14: 02 80 ldd r0, Z+2 ; 0x02 + f16: 02 c0 rjmp .+4 ; 0xf1c <_ZN7hc745954sendEhb+0x10a> + f18: cc 0f add r28, r28 + f1a: dd 1f adc r29, r29 + f1c: 0a 94 dec r0 + f1e: e2 f7 brpl .-8 ; 0xf18 <_ZN7hc745954sendEhb+0x106> + f20: c5 2b or r28, r21 + f22: cc 93 st X, r28 + *ddr |= (0x01 << data | 0x01 << clk | 0x01 << stcp); +} +void hc74595::send(uint8_t data, bool inverted) //Envoi des donnée au Shift Register +{ + + for(int a = 0; a < 8 ; a++) + f24: 01 96 adiw r24, 0x01 ; 1 + f26: 88 30 cpi r24, 0x08 ; 8 + f28: 91 05 cpc r25, r1 + f2a: 09 f0 breq .+2 ; 0xf2e <_ZN7hc745954sendEhb+0x11c> + f2c: 7e cf rjmp .-260 ; 0xe2a <_ZN7hc745954sendEhb+0x18> + else + *port &= ~(0x01 << pin_DATA); + *port |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + } +} + f2e: df 91 pop r29 + f30: cf 91 pop r28 + f32: 1f 91 pop r17 + f34: 0f 91 pop r16 + f36: 08 95 ret + +00000f38 <_ZN7hc745957confirmEv>: +void hc74595::confirm() //Envoi le signal du storage register +{ + f38: fc 01 movw r30, r24 + *port |= 0x01 << pin_STCP; + f3a: a6 81 ldd r26, Z+6 ; 0x06 + f3c: b7 81 ldd r27, Z+7 ; 0x07 + f3e: 4c 91 ld r20, X + f40: 21 e0 ldi r18, 0x01 ; 1 + f42: 30 e0 ldi r19, 0x00 ; 0 + f44: c9 01 movw r24, r18 + f46: 04 80 ldd r0, Z+4 ; 0x04 + f48: 02 c0 rjmp .+4 ; 0xf4e <_ZN7hc745957confirmEv+0x16> + f4a: 88 0f add r24, r24 + f4c: 99 1f adc r25, r25 + f4e: 0a 94 dec r0 + f50: e2 f7 brpl .-8 ; 0xf4a <_ZN7hc745957confirmEv+0x12> + f52: 84 2b or r24, r20 + f54: 8c 93 st X, r24 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + f56: 85 e0 ldi r24, 0x05 ; 5 + f58: 8a 95 dec r24 + f5a: f1 f7 brne .-4 ; 0xf58 <_ZN7hc745957confirmEv+0x20> + f5c: 00 00 nop + _delay_us(1); + *port &= ~(0x01 << pin_STCP); + f5e: a6 81 ldd r26, Z+6 ; 0x06 + f60: b7 81 ldd r27, Z+7 ; 0x07 + f62: 4c 91 ld r20, X + f64: c9 01 movw r24, r18 + f66: 04 80 ldd r0, Z+4 ; 0x04 + f68: 02 c0 rjmp .+4 ; 0xf6e <_ZN7hc745957confirmEv+0x36> + f6a: 88 0f add r24, r24 + f6c: 99 1f adc r25, r25 + f6e: 0a 94 dec r0 + f70: e2 f7 brpl .-8 ; 0xf6a <_ZN7hc745957confirmEv+0x32> + f72: 80 95 com r24 + f74: 84 23 and r24, r20 + f76: 8c 93 st X, r24 + f78: 08 95 ret + +00000f7a <_ZN5dcf772loEv>: + } + else + parasite_flag = true; +} +void dcf77::lo() +{ + f7a: cf 92 push r12 + f7c: df 92 push r13 + f7e: ef 92 push r14 + f80: ff 92 push r15 + f82: 0f 93 push r16 + f84: 1f 93 push r17 + f86: cf 93 push r28 + f88: df 93 push r29 + f8a: ec 01 movw r28, r24 + + time_check = millis() - time_high_dcf77; + f8c: 0e 94 f2 0a call 0x15e4 ; 0x15e4 <_Z6millisv> + f90: cc 80 ldd r12, Y+4 ; 0x04 + f92: dd 80 ldd r13, Y+5 ; 0x05 + f94: ee 80 ldd r14, Y+6 ; 0x06 + f96: ff 80 ldd r15, Y+7 ; 0x07 + f98: 8b 01 movw r16, r22 + f9a: 0c 19 sub r16, r12 + f9c: 1d 09 sbc r17, r13 + f9e: 1f 8b std Y+23, r17 ; 0x17 + fa0: 0e 8b std Y+22, r16 ; 0x16 + if( time_check >= temps_haut_min || time_high_dcf77 == 0) + fa2: 04 3f cpi r16, 0xF4 ; 244 + fa4: 11 40 sbci r17, 0x01 ; 1 + fa6: 20 f4 brcc .+8 ; 0xfb0 <_ZN5dcf772loEv+0x36> + fa8: cd 28 or r12, r13 + faa: ce 28 or r12, r14 + fac: cf 28 or r12, r15 + fae: 71 f5 brne .+92 ; 0x100c <_ZN5dcf772loEv+0x92> + { + PORTB &= ~(1< + fb8: 0c 81 ldd r16, Y+4 ; 0x04 + fba: 1d 81 ldd r17, Y+5 ; 0x05 + fbc: 2e 81 ldd r18, Y+6 ; 0x06 + fbe: 3f 81 ldd r19, Y+7 ; 0x07 + fc0: ab 01 movw r20, r22 + fc2: bc 01 movw r22, r24 + fc4: 40 1b sub r20, r16 + fc6: 51 0b sbc r21, r17 + fc8: 62 0b sbc r22, r18 + fca: 73 0b sbc r23, r19 + fcc: 4c 83 std Y+4, r20 ; 0x04 + fce: 5d 83 std Y+5, r21 ; 0x05 + fd0: 6e 83 std Y+6, r22 ; 0x06 + fd2: 7f 83 std Y+7, r23 ; 0x07 + time_low_dcf77 = millis(); //Démarage du comptage du temps bas + fd4: 0e 94 f2 0a call 0x15e4 ; 0x15e4 <_Z6millisv> + fd8: 68 83 st Y, r22 + fda: 79 83 std Y+1, r23 ; 0x01 + fdc: 8a 83 std Y+2, r24 ; 0x02 + fde: 9b 83 std Y+3, r25 ; 0x03 + if(time_high_dcf77 > time_no_modulation | dcf77_flag_start) //Si le Temps bas est > à 800, début de la transmition + fe0: 81 e0 ldi r24, 0x01 ; 1 + fe2: 4c 81 ldd r20, Y+4 ; 0x04 + fe4: 5d 81 ldd r21, Y+5 ; 0x05 + fe6: 6e 81 ldd r22, Y+6 ; 0x06 + fe8: 7f 81 ldd r23, Y+7 ; 0x07 + fea: 49 3e cpi r20, 0xE9 ; 233 + fec: 53 40 sbci r21, 0x03 ; 3 + fee: 61 05 cpc r22, r1 + ff0: 71 05 cpc r23, r1 + ff2: 08 f4 brcc .+2 ; 0xff6 <_ZN5dcf772loEv+0x7c> + ff4: 80 e0 ldi r24, 0x00 ; 0 + ff6: 81 11 cpse r24, r1 + ff8: 03 c0 rjmp .+6 ; 0x1000 <_ZN5dcf772loEv+0x86> + ffa: 88 85 ldd r24, Y+8 ; 0x08 + ffc: 88 23 and r24, r24 + ffe: 19 f0 breq .+6 ; 0x1006 <_ZN5dcf772loEv+0x8c> + { + dcf77_flag_start = 1; + 1000: 81 e0 ldi r24, 0x01 ; 1 + 1002: 88 87 std Y+8, r24 ; 0x08 + 1004: 05 c0 rjmp .+10 ; 0x1010 <_ZN5dcf772loEv+0x96> + } + else + { + dcf77_status = en_attente_de_signal; + 1006: 1a 8a std Y+18, r1 ; 0x12 + 1008: 19 8a std Y+17, r1 ; 0x11 + 100a: 02 c0 rjmp .+4 ; 0x1010 <_ZN5dcf772loEv+0x96> + } + } + else + parasite_flag = true; + 100c: 81 e0 ldi r24, 0x01 ; 1 + 100e: 8d 8b std Y+21, r24 ; 0x15 +} + 1010: df 91 pop r29 + 1012: cf 91 pop r28 + 1014: 1f 91 pop r17 + 1016: 0f 91 pop r16 + 1018: ff 90 pop r15 + 101a: ef 90 pop r14 + 101c: df 90 pop r13 + 101e: cf 90 pop r12 + 1020: 08 95 ret + +00001022 <_ZN5dcf776decodeEh>: +bool dcf77::decode(uint8_t bit) +{ + 1022: fc 01 movw r30, r24 + bool flag_no_error = true; + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + 1024: 23 89 ldd r18, Z+19 ; 0x13 + 1026: 34 89 ldd r19, Z+20 ; 0x14 + 1028: 21 15 cp r18, r1 + 102a: 31 05 cpc r19, r1 + 102c: 31 f4 brne .+12 ; 0x103a <_ZN5dcf776decodeEh+0x18> + 102e: 66 23 and r22, r22 + 1030: 09 f4 brne .+2 ; 0x1034 <_ZN5dcf776decodeEh+0x12> + 1032: f4 c0 rjmp .+488 ; 0x121c <_ZN5dcf776decodeEh+0x1fa> + flag_no_error = false; + else if(bit_dcode_n >= 1 && bit_dcode_n <= 19); //Bits 01 à 19 ne nous interesse pas + 1034: 40 e0 ldi r20, 0x00 ; 0 + 1036: 50 e0 ldi r21, 0x00 ; 0 + 1038: 3c c0 rjmp .+120 ; 0x10b2 <_ZN5dcf776decodeEh+0x90> + 103a: a9 01 movw r20, r18 + 103c: c9 01 movw r24, r18 + 103e: 01 97 sbiw r24, 0x01 ; 1 + 1040: 43 97 sbiw r24, 0x13 ; 19 + 1042: 08 f4 brcc .+2 ; 0x1046 <_ZN5dcf776decodeEh+0x24> + 1044: ed c0 rjmp .+474 ; 0x1220 <_ZN5dcf776decodeEh+0x1fe> + else if (bit_dcode_n == 20 && !bit) //Bit 20 Toujours à 1 + 1046: 24 31 cpi r18, 0x14 ; 20 + 1048: 31 05 cpc r19, r1 + 104a: 19 f4 brne .+6 ; 0x1052 <_ZN5dcf776decodeEh+0x30> + 104c: 61 11 cpse r22, r1 + 104e: fc c0 rjmp .+504 ; 0x1248 <_ZN5dcf776decodeEh+0x226> + 1050: e9 c0 rjmp .+466 ; 0x1224 <_ZN5dcf776decodeEh+0x202> + flag_no_error = false; + else if (bit_dcode_n >= 21 && bit_dcode_n <= 27) //Bit 21 à 27 = Minute + 1052: c9 01 movw r24, r18 + 1054: 45 97 sbiw r24, 0x15 ; 21 + 1056: 07 97 sbiw r24, 0x07 ; 7 + 1058: 18 f5 brcc .+70 ; 0x10a0 <_ZN5dcf776decodeEh+0x7e> + { + if(bit) + 105a: 66 23 and r22, r22 + 105c: 81 f0 breq .+32 ; 0x107e <_ZN5dcf776decodeEh+0x5c> + dcf77_Minute |= 1 << (bit_dcode_n-21); + 105e: c9 01 movw r24, r18 + 1060: 45 97 sbiw r24, 0x15 ; 21 + 1062: 41 e0 ldi r20, 0x01 ; 1 + 1064: 50 e0 ldi r21, 0x00 ; 0 + 1066: ba 01 movw r22, r20 + 1068: 02 c0 rjmp .+4 ; 0x106e <_ZN5dcf776decodeEh+0x4c> + 106a: 66 0f add r22, r22 + 106c: 77 1f adc r23, r23 + 106e: 8a 95 dec r24 + 1070: e2 f7 brpl .-8 ; 0x106a <_ZN5dcf776decodeEh+0x48> + 1072: cb 01 movw r24, r22 + 1074: 93 85 ldd r25, Z+11 ; 0x0b + 1076: 89 2b or r24, r25 + 1078: 83 87 std Z+11, r24 ; 0x0b + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 107a: 81 e0 ldi r24, 0x01 ; 1 + 107c: e0 c0 rjmp .+448 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else if (bit_dcode_n >= 21 && bit_dcode_n <= 27) //Bit 21 à 27 = Minute + { + if(bit) + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + 107e: c9 01 movw r24, r18 + 1080: 45 97 sbiw r24, 0x15 ; 21 + 1082: 41 e0 ldi r20, 0x01 ; 1 + 1084: 50 e0 ldi r21, 0x00 ; 0 + 1086: ba 01 movw r22, r20 + 1088: 02 c0 rjmp .+4 ; 0x108e <_ZN5dcf776decodeEh+0x6c> + 108a: 66 0f add r22, r22 + 108c: 77 1f adc r23, r23 + 108e: 8a 95 dec r24 + 1090: e2 f7 brpl .-8 ; 0x108a <_ZN5dcf776decodeEh+0x68> + 1092: cb 01 movw r24, r22 + 1094: 80 95 com r24 + 1096: 93 85 ldd r25, Z+11 ; 0x0b + 1098: 89 23 and r24, r25 + 109a: 83 87 std Z+11, r24 ; 0x0b + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 109c: 81 e0 ldi r24, 0x01 ; 1 + 109e: cf c0 rjmp .+414 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit) + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + 10a0: 2c 31 cpi r18, 0x1C ; 28 + 10a2: 31 05 cpc r19, r1 + 10a4: 31 f4 brne .+12 ; 0x10b2 <_ZN5dcf776decodeEh+0x90> + 10a6: 83 85 ldd r24, Z+11 ; 0x0b + 10a8: 80 ff sbrs r24, 0 + 10aa: e0 c0 rjmp .+448 ; 0x126c <_ZN5dcf776decodeEh+0x24a> + 10ac: 61 11 cpse r22, r1 + 10ae: d2 c0 rjmp .+420 ; 0x1254 <_ZN5dcf776decodeEh+0x232> + 10b0: bb c0 rjmp .+374 ; 0x1228 <_ZN5dcf776decodeEh+0x206> + flag_no_error = false; + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + 10b2: ca 01 movw r24, r20 + 10b4: 4d 97 sbiw r24, 0x1d ; 29 + 10b6: 06 97 sbiw r24, 0x06 ; 6 + 10b8: 18 f5 brcc .+70 ; 0x1100 <_ZN5dcf776decodeEh+0xde> + { + if(bit) + 10ba: 66 23 and r22, r22 + 10bc: 81 f0 breq .+32 ; 0x10de <_ZN5dcf776decodeEh+0xbc> + dcf77_Heur |= 1 << (bit_dcode_n-29); + 10be: c9 01 movw r24, r18 + 10c0: 4d 97 sbiw r24, 0x1d ; 29 + 10c2: 41 e0 ldi r20, 0x01 ; 1 + 10c4: 50 e0 ldi r21, 0x00 ; 0 + 10c6: ba 01 movw r22, r20 + 10c8: 02 c0 rjmp .+4 ; 0x10ce <_ZN5dcf776decodeEh+0xac> + 10ca: 66 0f add r22, r22 + 10cc: 77 1f adc r23, r23 + 10ce: 8a 95 dec r24 + 10d0: e2 f7 brpl .-8 ; 0x10ca <_ZN5dcf776decodeEh+0xa8> + 10d2: cb 01 movw r24, r22 + 10d4: 94 85 ldd r25, Z+12 ; 0x0c + 10d6: 89 2b or r24, r25 + 10d8: 84 87 std Z+12, r24 ; 0x0c + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 10da: 81 e0 ldi r24, 0x01 ; 1 + 10dc: b0 c0 rjmp .+352 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + { + if(bit) + dcf77_Heur |= 1 << (bit_dcode_n-29); + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + 10de: c9 01 movw r24, r18 + 10e0: 4d 97 sbiw r24, 0x1d ; 29 + 10e2: 41 e0 ldi r20, 0x01 ; 1 + 10e4: 50 e0 ldi r21, 0x00 ; 0 + 10e6: ba 01 movw r22, r20 + 10e8: 02 c0 rjmp .+4 ; 0x10ee <_ZN5dcf776decodeEh+0xcc> + 10ea: 66 0f add r22, r22 + 10ec: 77 1f adc r23, r23 + 10ee: 8a 95 dec r24 + 10f0: e2 f7 brpl .-8 ; 0x10ea <_ZN5dcf776decodeEh+0xc8> + 10f2: cb 01 movw r24, r22 + 10f4: 80 95 com r24 + 10f6: 94 85 ldd r25, Z+12 ; 0x0c + 10f8: 89 23 and r24, r25 + 10fa: 84 87 std Z+12, r24 ; 0x0c + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 10fc: 81 e0 ldi r24, 0x01 ; 1 + 10fe: 9f c0 rjmp .+318 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit) + dcf77_Heur |= 1 << (bit_dcode_n-29); + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + } + else if(bit_dcode_n == 35 && (dcf77_Heur&0x01) && !bit || bit_dcode_n == 35 && !(dcf77_Heur&0x01) && bit) //Bit de parité des Heure + 1100: 23 32 cpi r18, 0x23 ; 35 + 1102: 31 05 cpc r19, r1 + 1104: 81 f4 brne .+32 ; 0x1126 <_ZN5dcf776decodeEh+0x104> + 1106: 84 85 ldd r24, Z+12 ; 0x0c + 1108: 80 ff sbrs r24, 0 + 110a: 09 c0 rjmp .+18 ; 0x111e <_ZN5dcf776decodeEh+0xfc> + 110c: 61 11 cpse r22, r1 + 110e: 0b c0 rjmp .+22 ; 0x1126 <_ZN5dcf776decodeEh+0x104> + 1110: 8d c0 rjmp .+282 ; 0x122c <_ZN5dcf776decodeEh+0x20a> + 1112: 23 32 cpi r18, 0x23 ; 35 + 1114: 31 05 cpc r19, r1 + 1116: 39 f4 brne .+14 ; 0x1126 <_ZN5dcf776decodeEh+0x104> + 1118: 84 85 ldd r24, Z+12 ; 0x0c + 111a: 80 fd sbrc r24, 0 + 111c: 04 c0 rjmp .+8 ; 0x1126 <_ZN5dcf776decodeEh+0x104> + 111e: 66 23 and r22, r22 + 1120: 09 f4 brne .+2 ; 0x1124 <_ZN5dcf776decodeEh+0x102> + 1122: 9e c0 rjmp .+316 ; 0x1260 <_ZN5dcf776decodeEh+0x23e> + 1124: 85 c0 rjmp .+266 ; 0x1230 <_ZN5dcf776decodeEh+0x20e> + flag_no_error = false; + else if(bit_dcode_n >= 36 && bit_dcode_n <= 41) //Bit 36 à 41 = Jours du moi + 1126: ca 01 movw r24, r20 + 1128: 84 97 sbiw r24, 0x24 ; 36 + 112a: 06 97 sbiw r24, 0x06 ; 6 + 112c: 18 f5 brcc .+70 ; 0x1174 <_ZN5dcf776decodeEh+0x152> + { + if(bit) + 112e: 66 23 and r22, r22 + 1130: 81 f0 breq .+32 ; 0x1152 <_ZN5dcf776decodeEh+0x130> + dcf77_Daymonth |= 1 << (bit_dcode_n-36); + 1132: c9 01 movw r24, r18 + 1134: 84 97 sbiw r24, 0x24 ; 36 + 1136: 41 e0 ldi r20, 0x01 ; 1 + 1138: 50 e0 ldi r21, 0x00 ; 0 + 113a: ba 01 movw r22, r20 + 113c: 02 c0 rjmp .+4 ; 0x1142 <_ZN5dcf776decodeEh+0x120> + 113e: 66 0f add r22, r22 + 1140: 77 1f adc r23, r23 + 1142: 8a 95 dec r24 + 1144: e2 f7 brpl .-8 ; 0x113e <_ZN5dcf776decodeEh+0x11c> + 1146: cb 01 movw r24, r22 + 1148: 95 85 ldd r25, Z+13 ; 0x0d + 114a: 89 2b or r24, r25 + 114c: 85 87 std Z+13, r24 ; 0x0d + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 114e: 81 e0 ldi r24, 0x01 ; 1 + 1150: 76 c0 rjmp .+236 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else if(bit_dcode_n >= 36 && bit_dcode_n <= 41) //Bit 36 à 41 = Jours du moi + { + if(bit) + dcf77_Daymonth |= 1 << (bit_dcode_n-36); + else + dcf77_Daymonth &= ~(1 << (bit_dcode_n-36)); + 1152: c9 01 movw r24, r18 + 1154: 84 97 sbiw r24, 0x24 ; 36 + 1156: 41 e0 ldi r20, 0x01 ; 1 + 1158: 50 e0 ldi r21, 0x00 ; 0 + 115a: ba 01 movw r22, r20 + 115c: 02 c0 rjmp .+4 ; 0x1162 <_ZN5dcf776decodeEh+0x140> + 115e: 66 0f add r22, r22 + 1160: 77 1f adc r23, r23 + 1162: 8a 95 dec r24 + 1164: e2 f7 brpl .-8 ; 0x115e <_ZN5dcf776decodeEh+0x13c> + 1166: cb 01 movw r24, r22 + 1168: 80 95 com r24 + 116a: 95 85 ldd r25, Z+13 ; 0x0d + 116c: 89 23 and r24, r25 + 116e: 85 87 std Z+13, r24 ; 0x0d + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 1170: 81 e0 ldi r24, 0x01 ; 1 + 1172: 65 c0 rjmp .+202 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit) + dcf77_Daymonth |= 1 << (bit_dcode_n-36); + else + dcf77_Daymonth &= ~(1 << (bit_dcode_n-36)); + } + else if(bit_dcode_n >= 42 && bit_dcode_n <= 44); //Bit 42 à 44 = Jours de la semaine, ne nous interesse pas + 1174: ca 01 movw r24, r20 + 1176: 8a 97 sbiw r24, 0x2a ; 42 + 1178: 83 30 cpi r24, 0x03 ; 3 + 117a: 91 05 cpc r25, r1 + 117c: 08 f4 brcc .+2 ; 0x1180 <_ZN5dcf776decodeEh+0x15e> + 117e: 5a c0 rjmp .+180 ; 0x1234 <_ZN5dcf776decodeEh+0x212> + else if(bit_dcode_n >= 45 && bit_dcode_n <= 49) //Bit 45 à 49 = Mois + 1180: 03 97 sbiw r24, 0x03 ; 3 + 1182: 05 97 sbiw r24, 0x05 ; 5 + 1184: 18 f5 brcc .+70 ; 0x11cc <_ZN5dcf776decodeEh+0x1aa> + { + if(bit) + 1186: 66 23 and r22, r22 + 1188: 81 f0 breq .+32 ; 0x11aa <_ZN5dcf776decodeEh+0x188> + dcf77_Month |= 1 << (bit_dcode_n-45); + 118a: c9 01 movw r24, r18 + 118c: 8d 97 sbiw r24, 0x2d ; 45 + 118e: 41 e0 ldi r20, 0x01 ; 1 + 1190: 50 e0 ldi r21, 0x00 ; 0 + 1192: ba 01 movw r22, r20 + 1194: 02 c0 rjmp .+4 ; 0x119a <_ZN5dcf776decodeEh+0x178> + 1196: 66 0f add r22, r22 + 1198: 77 1f adc r23, r23 + 119a: 8a 95 dec r24 + 119c: e2 f7 brpl .-8 ; 0x1196 <_ZN5dcf776decodeEh+0x174> + 119e: cb 01 movw r24, r22 + 11a0: 97 85 ldd r25, Z+15 ; 0x0f + 11a2: 89 2b or r24, r25 + 11a4: 87 87 std Z+15, r24 ; 0x0f + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 11a6: 81 e0 ldi r24, 0x01 ; 1 + 11a8: 4a c0 rjmp .+148 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else if(bit_dcode_n >= 45 && bit_dcode_n <= 49) //Bit 45 à 49 = Mois + { + if(bit) + dcf77_Month |= 1 << (bit_dcode_n-45); + else + dcf77_Month &= ~(1 << (bit_dcode_n-45)); + 11aa: c9 01 movw r24, r18 + 11ac: 8d 97 sbiw r24, 0x2d ; 45 + 11ae: 41 e0 ldi r20, 0x01 ; 1 + 11b0: 50 e0 ldi r21, 0x00 ; 0 + 11b2: ba 01 movw r22, r20 + 11b4: 02 c0 rjmp .+4 ; 0x11ba <_ZN5dcf776decodeEh+0x198> + 11b6: 66 0f add r22, r22 + 11b8: 77 1f adc r23, r23 + 11ba: 8a 95 dec r24 + 11bc: e2 f7 brpl .-8 ; 0x11b6 <_ZN5dcf776decodeEh+0x194> + 11be: cb 01 movw r24, r22 + 11c0: 80 95 com r24 + 11c2: 97 85 ldd r25, Z+15 ; 0x0f + 11c4: 89 23 and r24, r25 + 11c6: 87 87 std Z+15, r24 ; 0x0f + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 11c8: 81 e0 ldi r24, 0x01 ; 1 + 11ca: 39 c0 rjmp .+114 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit) + dcf77_Month |= 1 << (bit_dcode_n-45); + else + dcf77_Month &= ~(1 << (bit_dcode_n-45)); + } + else if(bit_dcode_n>= 50 && bit_dcode_n <= 57) //Bit 50 à 57 = Année + 11cc: 42 53 subi r20, 0x32 ; 50 + 11ce: 51 09 sbc r21, r1 + 11d0: 48 30 cpi r20, 0x08 ; 8 + 11d2: 51 05 cpc r21, r1 + 11d4: 88 f5 brcc .+98 ; 0x1238 <_ZN5dcf776decodeEh+0x216> + { + if(bit) + 11d6: 66 23 and r22, r22 + 11d8: 81 f0 breq .+32 ; 0x11fa <_ZN5dcf776decodeEh+0x1d8> + dcf77_Year |= 1 << (bit_dcode_n-50); + 11da: c9 01 movw r24, r18 + 11dc: c2 97 sbiw r24, 0x32 ; 50 + 11de: 41 e0 ldi r20, 0x01 ; 1 + 11e0: 50 e0 ldi r21, 0x00 ; 0 + 11e2: ba 01 movw r22, r20 + 11e4: 02 c0 rjmp .+4 ; 0x11ea <_ZN5dcf776decodeEh+0x1c8> + 11e6: 66 0f add r22, r22 + 11e8: 77 1f adc r23, r23 + 11ea: 8a 95 dec r24 + 11ec: e2 f7 brpl .-8 ; 0x11e6 <_ZN5dcf776decodeEh+0x1c4> + 11ee: cb 01 movw r24, r22 + 11f0: 90 89 ldd r25, Z+16 ; 0x10 + 11f2: 89 2b or r24, r25 + 11f4: 80 8b std Z+16, r24 ; 0x10 + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 11f6: 81 e0 ldi r24, 0x01 ; 1 + 11f8: 22 c0 rjmp .+68 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else if(bit_dcode_n>= 50 && bit_dcode_n <= 57) //Bit 50 à 57 = Année + { + if(bit) + dcf77_Year |= 1 << (bit_dcode_n-50); + else + dcf77_Year &= ~(1 << (bit_dcode_n-50)); + 11fa: c9 01 movw r24, r18 + 11fc: c2 97 sbiw r24, 0x32 ; 50 + 11fe: 41 e0 ldi r20, 0x01 ; 1 + 1200: 50 e0 ldi r21, 0x00 ; 0 + 1202: ba 01 movw r22, r20 + 1204: 02 c0 rjmp .+4 ; 0x120a <_ZN5dcf776decodeEh+0x1e8> + 1206: 66 0f add r22, r22 + 1208: 77 1f adc r23, r23 + 120a: 8a 95 dec r24 + 120c: e2 f7 brpl .-8 ; 0x1206 <_ZN5dcf776decodeEh+0x1e4> + 120e: cb 01 movw r24, r22 + 1210: 80 95 com r24 + 1212: 90 89 ldd r25, Z+16 ; 0x10 + 1214: 89 23 and r24, r25 + 1216: 80 8b std Z+16, r24 ; 0x10 + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 1218: 81 e0 ldi r24, 0x01 ; 1 + 121a: 11 c0 rjmp .+34 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + flag_no_error = false; + 121c: 80 e0 ldi r24, 0x00 ; 0 + 121e: 0f c0 rjmp .+30 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 1220: 81 e0 ldi r24, 0x01 ; 1 + 1222: 0d c0 rjmp .+26 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + flag_no_error = false; + else if(bit_dcode_n >= 1 && bit_dcode_n <= 19); //Bits 01 à 19 ne nous interesse pas + else if (bit_dcode_n == 20 && !bit) //Bit 20 Toujours à 1 + flag_no_error = false; + 1224: 80 e0 ldi r24, 0x00 ; 0 + 1226: 0b c0 rjmp .+22 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + flag_no_error = false; + 1228: 80 e0 ldi r24, 0x00 ; 0 + 122a: 09 c0 rjmp .+18 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + dcf77_Heur |= 1 << (bit_dcode_n-29); + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + } + else if(bit_dcode_n == 35 && (dcf77_Heur&0x01) && !bit || bit_dcode_n == 35 && !(dcf77_Heur&0x01) && bit) //Bit de parité des Heure + flag_no_error = false; + 122c: 80 e0 ldi r24, 0x00 ; 0 + 122e: 07 c0 rjmp .+14 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + 1230: 80 e0 ldi r24, 0x00 ; 0 + 1232: 05 c0 rjmp .+10 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + 1234: 81 e0 ldi r24, 0x01 ; 1 + 1236: 03 c0 rjmp .+6 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + 1238: 81 e0 ldi r24, 0x01 ; 1 + 123a: 01 c0 rjmp .+2 ; 0x123e <_ZN5dcf776decodeEh+0x21c> + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + flag_no_error = false; + 123c: 80 e0 ldi r24, 0x00 ; 0 + dcf77_Year |= 1 << (bit_dcode_n-50); + else + dcf77_Year &= ~(1 << (bit_dcode_n-50)); + } + else if(bit_dcode_n == 58 && (dcf77_Month&0x01) && !bit || bit_dcode_n && !(dcf77_Month&0x01) && bit);//Parity + bit_dcode_n++; + 123e: 2f 5f subi r18, 0xFF ; 255 + 1240: 3f 4f sbci r19, 0xFF ; 255 + 1242: 34 8b std Z+20, r19 ; 0x14 + 1244: 23 8b std Z+19, r18 ; 0x13 + 1246: 08 95 ret + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + flag_no_error = false; + else if(bit_dcode_n >= 1 && bit_dcode_n <= 19); //Bits 01 à 19 ne nous interesse pas + else if (bit_dcode_n == 20 && !bit) //Bit 20 Toujours à 1 + flag_no_error = false; + else if (bit_dcode_n >= 21 && bit_dcode_n <= 27) //Bit 21 à 27 = Minute + 1248: c9 01 movw r24, r18 + 124a: 45 97 sbiw r24, 0x15 ; 21 + 124c: 07 97 sbiw r24, 0x07 ; 7 + 124e: 08 f4 brcc .+2 ; 0x1252 <_ZN5dcf776decodeEh+0x230> + 1250: 06 cf rjmp .-500 ; 0x105e <_ZN5dcf776decodeEh+0x3c> + 1252: 0f c0 rjmp .+30 ; 0x1272 <_ZN5dcf776decodeEh+0x250> + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + flag_no_error = false; + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + 1254: c9 01 movw r24, r18 + 1256: 4d 97 sbiw r24, 0x1d ; 29 + 1258: 06 97 sbiw r24, 0x06 ; 6 + 125a: 08 f4 brcc .+2 ; 0x125e <_ZN5dcf776decodeEh+0x23c> + 125c: 2e cf rjmp .-420 ; 0x10ba <_ZN5dcf776decodeEh+0x98> + 125e: 59 cf rjmp .-334 ; 0x1112 <_ZN5dcf776decodeEh+0xf0> + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + } + else if(bit_dcode_n == 35 && (dcf77_Heur&0x01) && !bit || bit_dcode_n == 35 && !(dcf77_Heur&0x01) && bit) //Bit de parité des Heure + flag_no_error = false; + else if(bit_dcode_n >= 36 && bit_dcode_n <= 41) //Bit 36 à 41 = Jours du moi + 1260: ca 01 movw r24, r20 + 1262: 84 97 sbiw r24, 0x24 ; 36 + 1264: 06 97 sbiw r24, 0x06 ; 6 + 1266: 08 f4 brcc .+2 ; 0x126a <_ZN5dcf776decodeEh+0x248> + 1268: 74 cf rjmp .-280 ; 0x1152 <_ZN5dcf776decodeEh+0x130> + 126a: 84 cf rjmp .-248 ; 0x1174 <_ZN5dcf776decodeEh+0x152> + if(bit) + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + 126c: 66 23 and r22, r22 + 126e: 91 f3 breq .-28 ; 0x1254 <_ZN5dcf776decodeEh+0x232> + 1270: e5 cf rjmp .-54 ; 0x123c <_ZN5dcf776decodeEh+0x21a> + flag_no_error = false; + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + 1272: c9 01 movw r24, r18 + 1274: 4d 97 sbiw r24, 0x1d ; 29 + 1276: 06 97 sbiw r24, 0x06 ; 6 + 1278: 08 f4 brcc .+2 ; 0x127c <_ZN5dcf776decodeEh+0x25a> + 127a: 1f cf rjmp .-450 ; 0x10ba <_ZN5dcf776decodeEh+0x98> + 127c: 54 cf rjmp .-344 ; 0x1126 <_ZN5dcf776decodeEh+0x104> + +0000127e <_ZN5dcf772hiEv>: + dcf77_flag_start = 0; + dcf77_bit_count = 0; + cli(); +} +void dcf77::hi() +{ + 127e: 8f 92 push r8 + 1280: 9f 92 push r9 + 1282: af 92 push r10 + 1284: bf 92 push r11 + 1286: ff 92 push r15 + 1288: 0f 93 push r16 + 128a: 1f 93 push r17 + 128c: cf 93 push r28 + 128e: df 93 push r29 + 1290: ec 01 movw r28, r24 + + time_check = millis() - time_low_dcf77; + 1292: 0e 94 f2 0a call 0x15e4 ; 0x15e4 <_Z6millisv> + 1296: 88 80 ld r8, Y + 1298: 99 80 ldd r9, Y+1 ; 0x01 + 129a: aa 80 ldd r10, Y+2 ; 0x02 + 129c: bb 80 ldd r11, Y+3 ; 0x03 + 129e: 8b 01 movw r16, r22 + 12a0: 08 19 sub r16, r8 + 12a2: 19 09 sbc r17, r9 + 12a4: 1f 8b std Y+23, r17 ; 0x17 + 12a6: 0e 8b std Y+22, r16 ; 0x16 + if( time_check >= temps_bas_min || time_low_dcf77 == 0) + 12a8: 04 31 cpi r16, 0x14 ; 20 + 12aa: 11 05 cpc r17, r1 + 12ac: 28 f4 brcc .+10 ; 0x12b8 <_ZN5dcf772hiEv+0x3a> + 12ae: 89 28 or r8, r9 + 12b0: 8a 28 or r8, r10 + 12b2: 8b 28 or r8, r11 + 12b4: 09 f0 breq .+2 ; 0x12b8 <_ZN5dcf772hiEv+0x3a> + 12b6: 56 c0 rjmp .+172 ; 0x1364 <_ZN5dcf772hiEv+0xe6> + { + PORTB |= 1< + 12c0: 6c 83 std Y+4, r22 ; 0x04 + 12c2: 7d 83 std Y+5, r23 ; 0x05 + 12c4: 8e 83 std Y+6, r24 ; 0x06 + 12c6: 9f 83 std Y+7, r25 ; 0x07 + time_low_dcf77 = millis() - time_low_dcf77; //Calcul du Temps bas + 12c8: 0e 94 f2 0a call 0x15e4 ; 0x15e4 <_Z6millisv> + 12cc: 08 81 ld r16, Y + 12ce: 19 81 ldd r17, Y+1 ; 0x01 + 12d0: 2a 81 ldd r18, Y+2 ; 0x02 + 12d2: 3b 81 ldd r19, Y+3 ; 0x03 + 12d4: ab 01 movw r20, r22 + 12d6: bc 01 movw r22, r24 + 12d8: 40 1b sub r20, r16 + 12da: 51 0b sbc r21, r17 + 12dc: 62 0b sbc r22, r18 + 12de: 73 0b sbc r23, r19 + 12e0: 48 83 st Y, r20 + 12e2: 59 83 std Y+1, r21 ; 0x01 + 12e4: 6a 83 std Y+2, r22 ; 0x02 + 12e6: 7b 83 std Y+3, r23 ; 0x03 + if(dcf77_flag_start && dcf77_bit_count <= 58) //Démarage de la démodulation si toute les condition sont OK + 12e8: 88 85 ldd r24, Y+8 ; 0x08 + 12ea: 88 23 and r24, r24 + 12ec: 79 f1 breq .+94 ; 0x134c <_ZN5dcf772hiEv+0xce> + 12ee: 89 85 ldd r24, Y+9 ; 0x09 + 12f0: 9a 85 ldd r25, Y+10 ; 0x0a + 12f2: cb 97 sbiw r24, 0x3b ; 59 + 12f4: 7c f5 brge .+94 ; 0x1354 <_ZN5dcf772hiEv+0xd6> + { + dcf77_status = decodage_en_cours; //En cours de décodage + 12f6: 81 e0 ldi r24, 0x01 ; 1 + 12f8: 90 e0 ldi r25, 0x00 ; 0 + 12fa: 9a 8b std Y+18, r25 ; 0x12 + 12fc: 89 8b std Y+17, r24 ; 0x11 + int bit; + if(time_low_dcf77 >= time_low_dcf77_min_0 && time_low_dcf77 <= time_low_dcf77_max_0) //Si le temp bas est <= 100ms le bit est à 0 + 12fe: db 01 movw r26, r22 + 1300: ca 01 movw r24, r20 + 1302: 80 55 subi r24, 0x50 ; 80 + 1304: 91 09 sbc r25, r1 + 1306: a1 09 sbc r26, r1 + 1308: b1 09 sbc r27, r1 + 130a: 89 97 sbiw r24, 0x29 ; 41 + 130c: a1 05 cpc r26, r1 + 130e: b1 05 cpc r27, r1 + 1310: 50 f0 brcs .+20 ; 0x1326 <_ZN5dcf772hiEv+0xa8> + bit = 0; + else if(time_low_dcf77 >= time_low_dcf77_min_1 && time_low_dcf77 <= time_low_dcf77_max_1) //Si le temp bas est <= 200ms le bit est à 1 + 1312: 44 5b subi r20, 0xB4 ; 180 + 1314: 51 09 sbc r21, r1 + 1316: 61 09 sbc r22, r1 + 1318: 71 09 sbc r23, r1 + 131a: 49 32 cpi r20, 0x29 ; 41 + 131c: 51 05 cpc r21, r1 + 131e: 61 05 cpc r22, r1 + 1320: 71 05 cpc r23, r1 + 1322: 18 f0 brcs .+6 ; 0x132a <_ZN5dcf772hiEv+0xac> + 1324: 04 c0 rjmp .+8 ; 0x132e <_ZN5dcf772hiEv+0xb0> + if(dcf77_flag_start && dcf77_bit_count <= 58) //Démarage de la démodulation si toute les condition sont OK + { + dcf77_status = decodage_en_cours; //En cours de décodage + int bit; + if(time_low_dcf77 >= time_low_dcf77_min_0 && time_low_dcf77 <= time_low_dcf77_max_0) //Si le temp bas est <= 100ms le bit est à 0 + bit = 0; + 1326: f1 2c mov r15, r1 + 1328: 02 c0 rjmp .+4 ; 0x132e <_ZN5dcf772hiEv+0xb0> + else if(time_low_dcf77 >= time_low_dcf77_min_1 && time_low_dcf77 <= time_low_dcf77_max_1) //Si le temp bas est <= 200ms le bit est à 1 + bit = 1; + 132a: ff 24 eor r15, r15 + 132c: f3 94 inc r15 + { + //dcf77_bit_count = 0; + //dcf77_flag_start = 0; + //return; + } + if(dcf77::decode(bit)) + 132e: 6f 2d mov r22, r15 + 1330: ce 01 movw r24, r28 + 1332: 0e 94 11 08 call 0x1022 ; 0x1022 <_ZN5dcf776decodeEh> + 1336: 88 23 and r24, r24 + 1338: 19 f0 breq .+6 ; 0x1340 <_ZN5dcf772hiEv+0xc2> + { + dcf77_bit_count = 0; + 133a: 1a 86 std Y+10, r1 ; 0x0a + 133c: 19 86 std Y+9, r1 ; 0x09 + dcf77_flag_start = 0; + 133e: 18 86 std Y+8, r1 ; 0x08 + //return; + } + dcf77_bit_count++; + 1340: 89 85 ldd r24, Y+9 ; 0x09 + 1342: 9a 85 ldd r25, Y+10 ; 0x0a + 1344: 01 96 adiw r24, 0x01 ; 1 + 1346: 9a 87 std Y+10, r25 ; 0x0a + 1348: 89 87 std Y+9, r24 ; 0x09 + 134a: 0e c0 rjmp .+28 ; 0x1368 <_ZN5dcf772hiEv+0xea> + } + else if(dcf77_bit_count > 58)//Après le décodage 60e bit + 134c: 89 85 ldd r24, Y+9 ; 0x09 + 134e: 9a 85 ldd r25, Y+10 ; 0x0a + 1350: cb 97 sbiw r24, 0x3b ; 59 + 1352: 54 f0 brlt .+20 ; 0x1368 <_ZN5dcf772hiEv+0xea> + { + //atc_.stop_capture(); //Arêt de la capture + dcf77_flag_start = 0; //Remise a zero du drapeau de démarage + 1354: 18 86 std Y+8, r1 ; 0x08 + dcf77_bit_count = 0; //Mise à zero le nombre de bit decodé + 1356: 1a 86 std Y+10, r1 ; 0x0a + 1358: 19 86 std Y+9, r1 ; 0x09 + dcf77_status = decodage_effectuer; + 135a: 82 e0 ldi r24, 0x02 ; 2 + 135c: 90 e0 ldi r25, 0x00 ; 0 + 135e: 9a 8b std Y+18, r25 ; 0x12 + 1360: 89 8b std Y+17, r24 ; 0x11 + 1362: 02 c0 rjmp .+4 ; 0x1368 <_ZN5dcf772hiEv+0xea> + // lcd1.set_cursor(5, 1); + // lcd1.print_text("Wt S.F."); + } + } + else + parasite_flag = true; + 1364: 81 e0 ldi r24, 0x01 ; 1 + 1366: 8d 8b std Y+21, r24 ; 0x15 +} + 1368: df 91 pop r29 + 136a: cf 91 pop r28 + 136c: 1f 91 pop r17 + 136e: 0f 91 pop r16 + 1370: ff 90 pop r15 + 1372: bf 90 pop r11 + 1374: af 90 pop r10 + 1376: 9f 90 pop r9 + 1378: 8f 90 pop r8 + 137a: 08 95 ret + +0000137c <__vector_1>: +uint8_t dcf77::year() +{ + return dcf77_Year; +} +ISR(INT0_vect)//Vecteur d'interuption INT0 +{ + 137c: 1f 92 push r1 + 137e: 0f 92 push r0 + 1380: 0f b6 in r0, 0x3f ; 63 + 1382: 0f 92 push r0 + 1384: 11 24 eor r1, r1 + 1386: 2f 93 push r18 + 1388: 3f 93 push r19 + 138a: 4f 93 push r20 + 138c: 5f 93 push r21 + 138e: 6f 93 push r22 + 1390: 7f 93 push r23 + 1392: 8f 93 push r24 + 1394: 9f 93 push r25 + 1396: af 93 push r26 + 1398: bf 93 push r27 + 139a: ef 93 push r30 + 139c: ff 93 push r31 + return 1; +} + +static __inline__ uint8_t __iCliRetVal(void) +{ + cli(); + 139e: f8 94 cli + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + if(((PIND&(1<>PIND2))//Si c'est au niveau haut + 13a0: 4a 9b sbis 0x09, 2 ; 9 + 13a2: 05 c0 rjmp .+10 ; 0x13ae <__vector_1+0x32> + { + atc_.hi(); + 13a4: 8f e0 ldi r24, 0x0F ; 15 + 13a6: 91 e0 ldi r25, 0x01 ; 1 + 13a8: 0e 94 3f 09 call 0x127e ; 0x127e <_ZN5dcf772hiEv> + 13ac: 04 c0 rjmp .+8 ; 0x13b6 <__vector_1+0x3a> + } + else //Passage au niveau bas + { + atc_.lo(); + 13ae: 8f e0 ldi r24, 0x0F ; 15 + 13b0: 91 e0 ldi r25, 0x01 ; 1 + 13b2: 0e 94 bd 07 call 0xf7a ; 0xf7a <_ZN5dcf772loEv> + return 1; +} + +static __inline__ void __iSeiParam(const uint8_t *__s) +{ + sei(); + 13b6: 78 94 sei + } + } + 13b8: ff 91 pop r31 + 13ba: ef 91 pop r30 + 13bc: bf 91 pop r27 + 13be: af 91 pop r26 + 13c0: 9f 91 pop r25 + 13c2: 8f 91 pop r24 + 13c4: 7f 91 pop r23 + 13c6: 6f 91 pop r22 + 13c8: 5f 91 pop r21 + 13ca: 4f 91 pop r20 + 13cc: 3f 91 pop r19 + 13ce: 2f 91 pop r18 + 13d0: 0f 90 pop r0 + 13d2: 0f be out 0x3f, r0 ; 63 + 13d4: 0f 90 pop r0 + 13d6: 1f 90 pop r1 + 13d8: 18 95 reti + +000013da <_GLOBAL__sub_I_atc_>: +#ifndef DCF77_H_ +#define DCF77_H_ + +#include + +class dcf77 + 13da: 10 92 0f 01 sts 0x010F, r1 + 13de: 10 92 10 01 sts 0x0110, r1 + 13e2: 10 92 11 01 sts 0x0111, r1 + 13e6: 10 92 12 01 sts 0x0112, r1 + 13ea: 10 92 13 01 sts 0x0113, r1 + 13ee: 10 92 14 01 sts 0x0114, r1 + 13f2: 10 92 15 01 sts 0x0115, r1 + 13f6: 10 92 16 01 sts 0x0116, r1 + 13fa: 10 92 17 01 sts 0x0117, r1 + 13fe: 10 92 19 01 sts 0x0119, r1 + 1402: 10 92 18 01 sts 0x0118, r1 + 1406: 10 92 1a 01 sts 0x011A, r1 + 140a: 10 92 1b 01 sts 0x011B, r1 + 140e: 10 92 1c 01 sts 0x011C, r1 + 1412: 10 92 1d 01 sts 0x011D, r1 + 1416: 10 92 1e 01 sts 0x011E, r1 + 141a: 10 92 1f 01 sts 0x011F, r1 + 141e: 10 92 21 01 sts 0x0121, r1 + 1422: 10 92 20 01 sts 0x0120, r1 + 1426: 10 92 23 01 sts 0x0123, r1 + 142a: 10 92 22 01 sts 0x0122, r1 + 142e: 10 92 24 01 sts 0x0124, r1 + 1432: 10 92 26 01 sts 0x0126, r1 + 1436: 10 92 25 01 sts 0x0125, r1 + 143a: 08 95 ret + +0000143c <_ZN6ds1307C1Ev>: +#define LED_GREEN 1<: +} + +void ds1307::write(int adresse_m, uint8_t data) +{ + //SCK Config à 80Khz (MAX DS1307 = 100Khz) + TWBR = 0x5C; //Bit rate division à 92 + 1442: 8c e5 ldi r24, 0x5C ; 92 + 1444: 80 93 b8 00 sts 0x00B8, r24 + TWSR &= ~((1< + { + + } + + //DS1307 adresse write + TWDR = adresse_DS1307; //Inscrit l'adresse, Mode write + 1464: 80 ed ldi r24, 0xD0 ; 208 + 1466: 80 93 bb 00 sts 0x00BB, r24 + TWCR = (1< + { + + } + + //Adresse memoir send + TWDR = adresse_m; //Inscrit l'adresse mémoire + 147a: 60 93 bb 00 sts 0x00BB, r22 + TWCR = (1< + { + + } + + //Data send + TWDR = data; //Inscrit les donnée + 148e: 40 93 bb 00 sts 0x00BB, r20 + TWCR = (1< + { + + } + + //Stop condition + TWCR = (1< + { + + } + TWCR &= (~(1<: +} +uint8_t ds1307::read(uint8_t adresse_m) +{ + TWBR = 0x5C; //Bit rate division à 92 + 14be: 8c e5 ldi r24, 0x5C ; 92 + 14c0: 80 93 b8 00 sts 0x00B8, r24 + TWSR &= ~((1< + + + } + + //DS1307 adresse write + TWDR = adresse_DS1307; //Inscrit l'adresse, Mode write + 14e0: 80 ed ldi r24, 0xD0 ; 208 + 14e2: 80 93 bb 00 sts 0x00BB, r24 + TWCR = (1< + { + + } + + //DS1307 adresse mem + TWDR = adresse_m; //Inscrit l'adresse mémoir + 14f6: 60 93 bb 00 sts 0x00BB, r22 + TWCR = (1< + { + + } + + //Restart condition + TWCR = (1< + { + + } + + //DS1307 adresse + read + TWDR = adresse_DS1307|0x01; //Inscrit l'adresse + Mode read + 151a: 81 ed ldi r24, 0xD1 ; 209 + 151c: 80 93 bb 00 sts 0x00BB, r24 + TWCR = (1< + { + + } + + //Receive + TWCR = (1< + + } + + + + uint8_t data = TWDR; + 1540: 80 91 bb 00 lds r24, 0x00BB + + //Stop condition + TWCR = (1< + { + + } + + TWCR&=(~(1<: +uint8_t ds1307::r_seconde() +{ + return ds1307::read(0x00); + 1560: 60 e0 ldi r22, 0x00 ; 0 + 1562: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 1566: 08 95 ret + +00001568 <_ZN6ds13078r_minuteEv>: +uint8_t ds1307::r_minute() +{ + return ds1307::read(0x01); + 1568: 61 e0 ldi r22, 0x01 ; 1 + 156a: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 156e: 08 95 ret + +00001570 <_ZN6ds13076r_heurEv>: +uint8_t ds1307::r_heur() +{ + return ds1307::read(0x02); + 1570: 62 e0 ldi r22, 0x02 ; 2 + 1572: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 1576: 08 95 ret + +00001578 <_ZN6ds13076r_jourEv>: +uint8_t ds1307::r_jour() +{ + return ds1307::read(0x04); + 1578: 64 e0 ldi r22, 0x04 ; 4 + 157a: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 157e: 08 95 ret + +00001580 <_ZN6ds13075r_moiEv>: +uint8_t ds1307::r_moi() +{ + return ds1307::read(0x05); + 1580: 65 e0 ldi r22, 0x05 ; 5 + 1582: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 1586: 08 95 ret + +00001588 <_ZN6ds13076r_yearEv>: +uint8_t ds1307::r_year() +{ + return ds1307::read(0x06); + 1588: 66 e0 ldi r22, 0x06 ; 6 + 158a: 0e 94 5f 0a call 0x14be ; 0x14be <_ZN6ds13074readEh> +} + 158e: 08 95 ret + +00001590 <_ZN6ds13079w_secondeEh>: +void ds1307::w_seconde(uint8_t data) +{ + 1590: 46 2f mov r20, r22 + ds1307::write(0x00, data); + 1592: 60 e0 ldi r22, 0x00 ; 0 + 1594: 70 e0 ldi r23, 0x00 ; 0 + 1596: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 159a: 08 95 ret + +0000159c <_ZN6ds13078w_minuteEh>: +} +void ds1307::w_minute(uint8_t data) +{ + 159c: 46 2f mov r20, r22 + ds1307::write(0x01, data); + 159e: 61 e0 ldi r22, 0x01 ; 1 + 15a0: 70 e0 ldi r23, 0x00 ; 0 + 15a2: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 15a6: 08 95 ret + +000015a8 <_ZN6ds13076w_heurEhh>: +} +void ds1307::w_heur(uint8_t data, uint8_t pm) +{ + if(pm) + 15a8: 44 23 and r20, r20 + 15aa: 19 f0 breq .+6 ; 0x15b2 <_ZN6ds13076w_heurEhh+0xa> + data |= (1<<6); + 15ac: 46 2f mov r20, r22 + 15ae: 40 64 ori r20, 0x40 ; 64 + 15b0: 02 c0 rjmp .+4 ; 0x15b6 <_ZN6ds13076w_heurEhh+0xe> + else + data &= ~(1<<6); + 15b2: 46 2f mov r20, r22 + 15b4: 4f 7b andi r20, 0xBF ; 191 + ds1307::write(0x02, data); + 15b6: 62 e0 ldi r22, 0x02 ; 2 + 15b8: 70 e0 ldi r23, 0x00 ; 0 + 15ba: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 15be: 08 95 ret + +000015c0 <_ZN6ds13076w_dateEh>: +} +void ds1307::w_date(uint8_t data) +{ + 15c0: 46 2f mov r20, r22 + ds1307::write(0x04, data); + 15c2: 64 e0 ldi r22, 0x04 ; 4 + 15c4: 70 e0 ldi r23, 0x00 ; 0 + 15c6: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 15ca: 08 95 ret + +000015cc <_ZN6ds13075w_moiEh>: +} +void ds1307::w_moi(uint8_t data) +{ + 15cc: 46 2f mov r20, r22 + ds1307::write(0x05, data); + 15ce: 65 e0 ldi r22, 0x05 ; 5 + 15d0: 70 e0 ldi r23, 0x00 ; 0 + 15d2: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 15d6: 08 95 ret + +000015d8 <_ZN6ds13076w_yearEh>: +} +void ds1307::w_year(uint8_t data) +{ + 15d8: 46 2f mov r20, r22 + ds1307::write(0x06, data); + 15da: 66 e0 ldi r22, 0x06 ; 6 + 15dc: 70 e0 ldi r23, 0x00 ; 0 + 15de: 0e 94 21 0a call 0x1442 ; 0x1442 <_ZN6ds13075writeEih> + 15e2: 08 95 ret + +000015e4 <_Z6millisv>: + return 1; +} + +static __inline__ uint8_t __iCliRetVal(void) +{ + cli(); + 15e4: f8 94 cli +{ + unsigned long millis_return; + + // Ensure this cannot be disrupted + ATOMIC_BLOCK(ATOMIC_FORCEON) { + millis_return = timer1_millis; + 15e6: 60 91 27 01 lds r22, 0x0127 + 15ea: 70 91 28 01 lds r23, 0x0128 + 15ee: 80 91 29 01 lds r24, 0x0129 + 15f2: 90 91 2a 01 lds r25, 0x012A + return 1; +} + +static __inline__ void __iSeiParam(const uint8_t *__s) +{ + sei(); + 15f6: 78 94 sei + } + + return millis_return; +} + 15f8: 08 95 ret + +000015fa <__vector_11>: +ISR (TIMER1_COMPA_vect) +{ + 15fa: 1f 92 push r1 + 15fc: 0f 92 push r0 + 15fe: 0f b6 in r0, 0x3f ; 63 + 1600: 0f 92 push r0 + 1602: 11 24 eor r1, r1 + 1604: 8f 93 push r24 + 1606: 9f 93 push r25 + 1608: af 93 push r26 + 160a: bf 93 push r27 + timer1_millis++; + 160c: 80 91 27 01 lds r24, 0x0127 + 1610: 90 91 28 01 lds r25, 0x0128 + 1614: a0 91 29 01 lds r26, 0x0129 + 1618: b0 91 2a 01 lds r27, 0x012A + 161c: 01 96 adiw r24, 0x01 ; 1 + 161e: a1 1d adc r26, r1 + 1620: b1 1d adc r27, r1 + 1622: 80 93 27 01 sts 0x0127, r24 + 1626: 90 93 28 01 sts 0x0128, r25 + 162a: a0 93 29 01 sts 0x0129, r26 + 162e: b0 93 2a 01 sts 0x012A, r27 +} + 1632: bf 91 pop r27 + 1634: af 91 pop r26 + 1636: 9f 91 pop r25 + 1638: 8f 91 pop r24 + 163a: 0f 90 pop r0 + 163c: 0f be out 0x3f, r0 ; 63 + 163e: 0f 90 pop r0 + 1640: 1f 90 pop r1 + 1642: 18 95 reti + +00001644 <_Z9USART_iniv>: +#define BAUD 9600 +#define MYUBRR (((F_CPU / (BAUD * 16UL))) - 1) + +void USART_ini() +{ + UBRR0H = (unsigned char)(MYUBRR>>8); + 1644: 10 92 c5 00 sts 0x00C5, r1 + UBRR0L = (unsigned char)MYUBRR; + 1648: 87 e6 ldi r24, 0x67 ; 103 + 164a: 80 93 c4 00 sts 0x00C4, r24 + UCSR0B = (1<: +} +void USART_Transmit( unsigned char data ) +{ + /* Wait for empty transmit buffer */ + while ( !( UCSR0A & (1< + ; + /* Put data into buffer, sends the data */ + UDR0 = data; + 1666: 80 93 c6 00 sts 0x00C6, r24 + 166a: 08 95 ret + +0000166c <_Z13USART_Receivev>: +} +unsigned char USART_Receive( void ) +{ + /* Wait for data to be received */ + if((UCSR0A & (1< + return UDR0; + 1674: 80 91 c6 00 lds r24, 0x00C6 + 1678: 08 95 ret + else + return false; + 167a: 80 e0 ldi r24, 0x00 ; 0 + 167c: 08 95 ret + +0000167e
: +#include +#include +#include "./fonction.h" //Inclusion des fonction +int main(void) //Fonction Principale +{ + setup_pins(); //Configuration des pins et du registre à décalage + 167e: 0e 94 77 00 call 0xee ; 0xee <_Z10setup_pinsv> + while(1)//Boucle infinie + { + routine_affichage(); //Routinne d'affihage des tube nixie + 1682: 0e 94 3e 01 call 0x27c ; 0x27c <_Z17routine_affichagev> + bouton(); //Gestion des boutons de configuration + 1686: 0e 94 4b 03 call 0x696 ; 0x696 <_Z6boutonv> + couleur(); //Gestion des LED RGB + 168a: 0e 94 d9 02 call 0x5b2 ; 0x5b2 <_Z7couleurv> + uart_ds1307(); + 168e: 0e 94 f5 05 call 0xbea ; 0xbea <_Z11uart_ds1307v> + 1692: f7 cf rjmp .-18 ; 0x1682 + +00001694 <__tablejump2__>: + 1694: ee 0f add r30, r30 + 1696: ff 1f adc r31, r31 + +00001698 <__tablejump__>: + 1698: 05 90 lpm r0, Z+ + 169a: f4 91 lpm r31, Z + 169c: e0 2d mov r30, r0 + 169e: 09 94 ijmp + +000016a0 <_exit>: + 16a0: f8 94 cli + +000016a2 <__stop_program>: + 16a2: ff cf rjmp .-2 ; 0x16a2 <__stop_program> diff --git a/Debug/Nixie clock.map b/Debug/Nixie clock.map new file mode 100644 index 0000000..fac7d0c --- /dev/null +++ b/Debug/Nixie clock.map @@ -0,0 +1,844 @@ +Archive member included because of file (symbol) + +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o (exit) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + lib/LCD.o (__do_copy_data) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + fonction.o (__do_clear_bss) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + fonction.o (__do_global_ctors) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) (__tablejump__) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + lib/LCD.o (sprintf) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) (vfprintf) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen_P) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (fputc) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (__ultoa_invert) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) (__prologue_saves__) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) (__epilogue_restores__) + +Discarded input sections + + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + .text 0x00000000 0x0 fonction.o + .bss 0x00000000 0x0 fonction.o + .text._Z13init_interuptv + 0x00000000 0x18 fonction.o + .text._Z18affichage_shutdwonv + 0x00000000 0x2e fonction.o + .bss.abc 0x00000000 0x2 fonction.o + .bss.bcm_blue 0x00000000 0x2 fonction.o + .bss.bcm_green + 0x00000000 0x2 fonction.o + .bss.bcm_red 0x00000000 0x2 fonction.o + .text 0x00000000 0x0 lib/LCD.o + .bss 0x00000000 0x0 lib/LCD.o + .text._ZN7PCF85744sendEhh + 0x00000000 0x86 lib/LCD.o + .text._ZN3LCD15check_busy_flagEv + 0x00000000 0x14 lib/LCD.o + .text._ZN3LCD4sendEhb + 0x00000000 0x5a lib/LCD.o + .text._ZN3LCD12display_initEv + 0x00000000 0x6e lib/LCD.o + .text._ZN3LCD10send_leterEh + 0x00000000 0x2c lib/LCD.o + .text._ZN3LCD5clearEv + 0x00000000 0x32 lib/LCD.o + .text._ZN3LCD10set_cursorEii + 0x00000000 0x48 lib/LCD.o + .text._ZN3LCD10print_textEPc + 0x00000000 0x50 lib/LCD.o + .rodata.str1.1 + 0x00000000 0x3 lib/LCD.o + .text._ZN3LCD12print_numberEi + 0x00000000 0x6a lib/LCD.o + .text 0x00000000 0x0 lib/hc74595.o + .bss 0x00000000 0x0 lib/hc74595.o + .text 0x00000000 0x0 lib/DCF77.o + .bss 0x00000000 0x0 lib/DCF77.o + .text._ZN5dcf7713start_captureEv + 0x00000000 0x20 lib/DCF77.o + .text._ZN5dcf7712stop_captureEv + 0x00000000 0xe lib/DCF77.o + .text._ZN5dcf776statusEv + 0x00000000 0x8 lib/DCF77.o + .text._ZN5dcf777minutesEv + 0x00000000 0x6 lib/DCF77.o + .text._ZN5dcf775heureEv + 0x00000000 0x6 lib/DCF77.o + .text._ZN5dcf775monthEv + 0x00000000 0x6 lib/DCF77.o + .text._ZN5dcf779day_monthEv + 0x00000000 0x6 lib/DCF77.o + .text._ZN5dcf774yearEv + 0x00000000 0x6 lib/DCF77.o + .bss.lcd1 0x00000000 0x1 lib/DCF77.o + .text 0x00000000 0x0 lib/DS1307.o + .bss 0x00000000 0x0 lib/DS1307.o + .text 0x00000000 0x0 lib/timer.o + .bss 0x00000000 0x0 lib/timer.o + .text._Z11timer1_initv + 0x00000000 0x24 lib/timer.o + .text._Z16interup_1hz_initv + 0x00000000 0x10 lib/timer.o + .text 0x00000000 0x0 lib/UART.o + .bss 0x00000000 0x0 lib/UART.o + .text 0x00000000 0x0 Nixie clock.o + .bss 0x00000000 0x0 Nixie clock.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + .text.avr-libc + 0x00000000 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .text.avr-libc + 0x00000000 0x3a4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .text.avr-libc + 0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen.o) + .text.avr-libc + 0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + .text.avr-libc + 0x00000000 0x64 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .text.avr-libc + 0x00000000 0xbc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.prologue + 0x00000000 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.prologue + 0x00000000 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 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/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o +LOAD fonction.o +LOAD lib/LCD.o +LOAD lib/hc74595.o +LOAD lib/DCF77.o +LOAD lib/DS1307.o +LOAD lib/timer.o +LOAD lib/UART.o +LOAD Nixie clock.o +START GROUP +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libm.a +END GROUP +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libm.a +START GROUP +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libm.a +LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a +END GROUP + +.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 0x16a4 + *(.vectors) + .vectors 0x00000000 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + .ctors 0x00000068 0x2 fonction.o + .ctors 0x0000006a 0x2 lib/DCF77.o + 0x0000006c __ctors_end = . + 0x0000006c __dtors_start = . + *(.dtors) + 0x0000006c __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x0000006c 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + 0x0000006c __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x0000006c 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000078 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + 0x00000078 __do_copy_data + .init4 0x0000008e 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + 0x0000008e __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x0000009e 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + 0x0000009e __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000b4 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000bc 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + 0x000000bc __vector_22 + 0x000000bc __vector_24 + 0x000000bc __vector_12 + 0x000000bc __bad_interrupt + 0x000000bc __vector_6 + 0x000000bc __vector_3 + 0x000000bc __vector_23 + 0x000000bc __vector_25 + 0x000000bc __vector_13 + 0x000000bc __vector_17 + 0x000000bc __vector_19 + 0x000000bc __vector_7 + 0x000000bc __vector_5 + 0x000000bc __vector_4 + 0x000000bc __vector_9 + 0x000000bc __vector_2 + 0x000000bc __vector_21 + 0x000000bc __vector_15 + 0x000000bc __vector_8 + 0x000000bc __vector_14 + 0x000000bc __vector_10 + 0x000000bc __vector_16 + 0x000000bc __vector_18 + 0x000000bc __vector_20 + 0x000000c0 . = ALIGN (0x2) + *(.text.*) + .text._Z10int_to_bcdi + 0x000000c0 0x2e fonction.o + 0x000000c0 _Z10int_to_bcdi + .text._Z10setup_pinsv + 0x000000ee 0x42 fonction.o + 0x000000ee _Z10setup_pinsv + .text._Z14affichage_heurv + 0x00000130 0xa6 fonction.o + 0x00000130 _Z14affichage_heurv + .text._Z14affichage_datev + 0x000001d6 0xa6 fonction.o + 0x000001d6 _Z14affichage_datev + .text._Z17routine_affichagev + 0x0000027c 0xe fonction.o + 0x0000027c _Z17routine_affichagev + .text._Z12clignotementib + 0x0000028a 0x328 fonction.o + 0x0000028a _Z12clignotementib + .text._Z7couleurv + 0x000005b2 0xe4 fonction.o + 0x000005b2 _Z7couleurv + .text._Z6boutonv + 0x00000696 0x554 fonction.o + 0x00000696 _Z6boutonv + .text._Z11uart_ds1307v + 0x00000bea 0x1a6 fonction.o + 0x00000bea _Z11uart_ds1307v + .text._GLOBAL__sub_I_rtc + 0x00000d90 0x2a fonction.o + .text._ZN7hc74595C2EiiiPVh + 0x00000dba 0x58 lib/hc74595.o + 0x00000dba _ZN7hc74595C2EiiiPVh + 0x00000dba _ZN7hc74595C1EiiiPVh + .text._ZN7hc745954sendEhb + 0x00000e12 0x126 lib/hc74595.o + 0x00000e12 _ZN7hc745954sendEhb + .text._ZN7hc745957confirmEv + 0x00000f38 0x42 lib/hc74595.o + 0x00000f38 _ZN7hc745957confirmEv + .text._ZN5dcf772loEv + 0x00000f7a 0xa8 lib/DCF77.o + 0x00000f7a _ZN5dcf772loEv + .text._ZN5dcf776decodeEh + 0x00001022 0x25c lib/DCF77.o + 0x00001022 _ZN5dcf776decodeEh + .text._ZN5dcf772hiEv + 0x0000127e 0xfe lib/DCF77.o + 0x0000127e _ZN5dcf772hiEv + .text.__vector_1 + 0x0000137c 0x5e lib/DCF77.o + 0x0000137c __vector_1 + .text._GLOBAL__sub_I_atc_ + 0x000013da 0x62 lib/DCF77.o + .text._ZN6ds1307C2Ev + 0x0000143c 0x6 lib/DS1307.o + 0x0000143c _ZN6ds1307C2Ev + 0x0000143c _ZN6ds1307C1Ev + .text._ZN6ds13075writeEih + 0x00001442 0x7c lib/DS1307.o + 0x00001442 _ZN6ds13075writeEih + .text._ZN6ds13074readEh + 0x000014be 0xa2 lib/DS1307.o + 0x000014be _ZN6ds13074readEh + .text._ZN6ds13079r_secondeEv + 0x00001560 0x8 lib/DS1307.o + 0x00001560 _ZN6ds13079r_secondeEv + .text._ZN6ds13078r_minuteEv + 0x00001568 0x8 lib/DS1307.o + 0x00001568 _ZN6ds13078r_minuteEv + .text._ZN6ds13076r_heurEv + 0x00001570 0x8 lib/DS1307.o + 0x00001570 _ZN6ds13076r_heurEv + .text._ZN6ds13076r_jourEv + 0x00001578 0x8 lib/DS1307.o + 0x00001578 _ZN6ds13076r_jourEv + .text._ZN6ds13075r_moiEv + 0x00001580 0x8 lib/DS1307.o + 0x00001580 _ZN6ds13075r_moiEv + .text._ZN6ds13076r_yearEv + 0x00001588 0x8 lib/DS1307.o + 0x00001588 _ZN6ds13076r_yearEv + .text._ZN6ds13079w_secondeEh + 0x00001590 0xc lib/DS1307.o + 0x00001590 _ZN6ds13079w_secondeEh + .text._ZN6ds13078w_minuteEh + 0x0000159c 0xc lib/DS1307.o + 0x0000159c _ZN6ds13078w_minuteEh + .text._ZN6ds13076w_heurEhh + 0x000015a8 0x18 lib/DS1307.o + 0x000015a8 _ZN6ds13076w_heurEhh + .text._ZN6ds13076w_dateEh + 0x000015c0 0xc lib/DS1307.o + 0x000015c0 _ZN6ds13076w_dateEh + .text._ZN6ds13075w_moiEh + 0x000015cc 0xc lib/DS1307.o + 0x000015cc _ZN6ds13075w_moiEh + .text._ZN6ds13076w_yearEh + 0x000015d8 0xc lib/DS1307.o + 0x000015d8 _ZN6ds13076w_yearEh + .text._Z6millisv + 0x000015e4 0x16 lib/timer.o + 0x000015e4 _Z6millisv + .text.__vector_11 + 0x000015fa 0x4a lib/timer.o + 0x000015fa __vector_11 + .text._Z9USART_iniv + 0x00001644 0x18 lib/UART.o + 0x00001644 _Z9USART_iniv + .text._Z14USART_Transmith + 0x0000165c 0x10 lib/UART.o + 0x0000165c _Z14USART_Transmith + .text._Z13USART_Receivev + 0x0000166c 0x12 lib/UART.o + 0x0000166c _Z13USART_Receivev + .text.main 0x0000167e 0x16 Nixie clock.o + 0x0000167e main + .text.libgcc 0x00001694 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + 0x00001694 __tablejump2__ + 0x00001698 __tablejump__ + 0x000016a0 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000016a0 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + 0x000016a0 _exit + 0x000016a0 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000016a0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + *(.fini0) + 0x000016a4 _etext = . + +.data 0x00800100 0x0 load address 0x000016a4 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 fonction.o + .data 0x00800100 0x0 lib/LCD.o + .data 0x00800100 0x0 lib/hc74595.o + .data 0x00800100 0x0 lib/DCF77.o + .data 0x00800100 0x0 lib/DS1307.o + .data 0x00800100 0x0 lib/timer.o + .data 0x00800100 0x0 lib/UART.o + .data 0x00800100 0x0 Nixie clock.o + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_exit.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_copy_data.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_clear_bss.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_ctors.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_tablejump.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(strnlen.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_prologue.o) + .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/avr5\libgcc.a(_epilogue.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x2b + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.bcm_rgb_actif + 0x00800100 0x2 fonction.o + 0x00800100 bcm_rgb_actif + .bss.usart 0x00800102 0x1 fonction.o + 0x00800102 usart + .bss.shiftRegister + 0x00800103 0xa fonction.o + 0x00800103 shiftRegister + .bss.rtc 0x0080010d 0x2 fonction.o + 0x0080010d rtc + .bss.atc_ 0x0080010f 0x18 lib/DCF77.o + 0x0080010f atc_ + .bss.timer1_millis + 0x00800127 0x4 lib/timer.o + 0x00800127 timer1_millis + *(COMMON) + 0x0080012b PROVIDE (__bss_end, .) + 0x000016a4 __data_load_start = LOADADDR (.data) + 0x000016a4 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x0080012b 0x0 + 0x0080012b PROVIDE (__noinit_start, .) + *(.noinit*) + 0x0080012b PROVIDE (__noinit_end, .) + 0x0080012b _end = . + 0x0080012b 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 0x5c + *(.comment) + .comment 0x00000000 0x30 fonction.o + 0x31 (size before relaxing) + .comment 0x00000000 0x31 lib/LCD.o + .comment 0x00000000 0x31 lib/hc74595.o + .comment 0x00000000 0x31 lib/DCF77.o + .comment 0x00000000 0x31 lib/DS1307.o + .comment 0x00000000 0x31 lib/timer.o + .comment 0x00000000 0x31 lib/UART.o + .comment 0x00000000 0x31 Nixie clock.o + .comment 0x00000000 0x31 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(sprintf.o) + .comment 0x00000030 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + 0x2d (size before relaxing) + .comment 0x00000000 0x31 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.1056/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5\libc.a(fputc.o) + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x2a0 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x78 fonction.o + .debug_aranges + 0x00000078 0x60 lib/LCD.o + .debug_aranges + 0x000000d8 0x30 lib/hc74595.o + .debug_aranges + 0x00000108 0x80 lib/DCF77.o + .debug_aranges + 0x00000188 0x90 lib/DS1307.o + .debug_aranges + 0x00000218 0x38 lib/timer.o + .debug_aranges + 0x00000250 0x30 lib/UART.o + .debug_aranges + 0x00000280 0x20 Nixie clock.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x391a + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x1957 fonction.o + .debug_info 0x00001957 0x9d8 lib/LCD.o + .debug_info 0x0000232f 0x2fa lib/hc74595.o + .debug_info 0x00002629 0x85e lib/DCF77.o + .debug_info 0x00002e87 0x754 lib/DS1307.o + .debug_info 0x000035db 0x18e lib/timer.o + .debug_info 0x00003769 0xc3 lib/UART.o + .debug_info 0x0000382c 0xee Nixie clock.o + +.debug_abbrev 0x00000000 0xe5f + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x344 fonction.o + .debug_abbrev 0x00000344 0x286 lib/LCD.o + .debug_abbrev 0x000005ca 0x1f4 lib/hc74595.o + .debug_abbrev 0x000007be 0x2de lib/DCF77.o + .debug_abbrev 0x00000a9c 0x1a1 lib/DS1307.o + .debug_abbrev 0x00000c3d 0x135 lib/timer.o + .debug_abbrev 0x00000d72 0x8a lib/UART.o + .debug_abbrev 0x00000dfc 0x63 Nixie clock.o + +.debug_line 0x00000000 0x101d + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x4ee fonction.o + .debug_line 0x000004ee 0x247 lib/LCD.o + .debug_line 0x00000735 0x181 lib/hc74595.o + .debug_line 0x000008b6 0x2fa lib/DCF77.o + .debug_line 0x00000bb0 0x226 lib/DS1307.o + .debug_line 0x00000dd6 0x171 lib/timer.o + .debug_line 0x00000f47 0x6b lib/UART.o + .debug_line 0x00000fb2 0x6b Nixie clock.o + +.debug_frame 0x00000000 0x648 + *(.debug_frame) + .debug_frame 0x00000000 0x138 fonction.o + .debug_frame 0x00000138 0x13c lib/LCD.o + .debug_frame 0x00000274 0x64 lib/hc74595.o + .debug_frame 0x000002d8 0x190 lib/DCF77.o + .debug_frame 0x00000468 0x104 lib/DS1307.o + .debug_frame 0x0000056c 0x74 lib/timer.o + .debug_frame 0x000005e0 0x44 lib/UART.o + .debug_frame 0x00000624 0x24 Nixie clock.o + +.debug_str 0x00000000 0xb41 + *(.debug_str) + .debug_str 0x00000000 0x63d fonction.o + 0x685 (size before relaxing) + .debug_str 0x0000063d 0x18e lib/LCD.o + 0x365 (size before relaxing) + .debug_str 0x000007cb 0x3e lib/hc74595.o + 0x269 (size before relaxing) + .debug_str 0x00000809 0x283 lib/DCF77.o + 0x58e (size before relaxing) + .debug_str 0x00000a8c 0x2b lib/DS1307.o + 0x353 (size before relaxing) + .debug_str 0x00000ab7 0x60 lib/timer.o + 0x22c (size before relaxing) + .debug_str 0x00000b17 0x10 lib/UART.o + 0x1dc (size before relaxing) + .debug_str 0x00000b27 0x1a Nixie clock.o + 0x20c (size before relaxing) + +.debug_loc 0x00000000 0x23d5 + *(.debug_loc) + .debug_loc 0x00000000 0x12f6 fonction.o + .debug_loc 0x000012f6 0x60f lib/LCD.o + .debug_loc 0x00001905 0x1a3 lib/hc74595.o + .debug_loc 0x00001aa8 0x54c lib/DCF77.o + .debug_loc 0x00001ff4 0x35e lib/DS1307.o + .debug_loc 0x00002352 0x83 lib/timer.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 0x4c8 + *(.debug_ranges) + .debug_ranges 0x00000000 0x310 fonction.o + .debug_ranges 0x00000310 0x50 lib/LCD.o + .debug_ranges 0x00000360 0x20 lib/hc74595.o + .debug_ranges 0x00000380 0x70 lib/DCF77.o + .debug_ranges 0x000003f0 0x80 lib/DS1307.o + .debug_ranges 0x00000470 0x28 lib/timer.o + .debug_ranges 0x00000498 0x20 lib/UART.o + .debug_ranges 0x000004b8 0x10 Nixie clock.o + +.debug_macro + *(.debug_macro) +OUTPUT(Nixie clock.elf elf32-avr) +LOAD linker stubs diff --git a/Debug/Nixie clock.o b/Debug/Nixie clock.o new file mode 100644 index 0000000..ce14295 Binary files /dev/null and b/Debug/Nixie clock.o differ diff --git a/Debug/Nixie clock.srec b/Debug/Nixie clock.srec new file mode 100644 index 0000000..4e91a11 --- /dev/null +++ b/Debug/Nixie clock.srec @@ -0,0 +1,365 @@ +S01300004E6978696520636C6F636B2E73726563E8 +S11300000C9436000C94BE090C945E000C945E00B3 +S11300100C945E000C945E000C945E000C945E00E4 +S11300200C945E000C945E000C945E000C94FD0A2B +S11300300C945E000C945E000C945E000C945E00C4 +S11300400C945E000C945E000C945E000C945E00B4 +S11300500C945E000C945E000C945E000C945E00A4 +S11300600C945E000C945E00C806ED0911241FBEBA +S1130070CFEFD8E0DEBFCDBF11E0A0E0B1E0E4EA0D +S1130080F6E102C005900D92A030B107D9F721E046 +S1130090A0E0B1E001C01D92AB32B207E1F710E07D +S11300A0CCE6D0E004C02297FE010E944C0BC83677 +S11300B0D107C9F70E943F0B0C94500B0C9400001D +S11300C08A3091054CF020E030E02F5F3F4F0A97D3 +S11300D08A309105D4F702C020E030E022953295B1 +S11300E0307F3227207F3227822B932B08950E9462 +S11300F0220B529887B18F7C87B984B1887F84B9E9 +S113010087B1876087B988B1887F88B984B18863EB +S113011084B985B1877C85B98DE091E00E94B00AED +S1130120803829F460E08DE091E00E94C80A0895C7 +S11301308DE091E00E94B80A90E0BC01629572954E +S1130140707F7627607F7627959587959595879517 +S11301509595879595958795682B40E083E091E088 +S11301600E9409078DE091E00E94B40A90E0BC016E +S113017062957295707F7627607F7627959587952F +S1130180959587959595879595958795682B40E0E6 +S113019083E091E00E9409078DE091E00E94B00A9B +S11301A090E0BC0162957295707F7627607F762718 +S11301B09595879595958795959587959595879523 +S11301C0682B40E083E091E00E94090783E091E01E +S11301D00E949C0708958DE091E00E94BC0A90E083 +S11301E0BC0162957295707F7627607F762795951E +S11301F08795959587959595879595958795682B7A +S113020040E083E091E00E9409078DE091E00E94C4 +S1130210C00A90E0BC0162957295707F7627607F7A +S11302207627959587959595879595958795959531 +S11302308795682B40E083E091E00E9409078DE0F8 +S113024091E00E94C40A90E0BC0162957295707FAF +S11302507627607F762795958795959587959595CB +S1130260879595958795682B40E083E091E00E94FF +S1130270090783E091E00E949C0708958DE091E0D6 +S11302800E94B00A0E94980008950196662309F41A +S1130290C8C08230910509F446C08330910509F441 +S11302A081C0019709F084C140E06FEF83E091E0E1 +S11302B00E9409078DE091E00E94C00A90E0BC0111 +S11302C062957295707F7627607F762795958795DE +S11302D0959587959595879595958795682B40E095 +S11302E083E091E00E9409078DE091E00E94C40A36 +S11302F090E0BC0162957295707F7627607F7627C7 +S113030095958795959587959595879595958795D1 +S1130310682B40E083E091E00E94090783E091E0CC +S11303200E949C0708958DE091E00E94BC0A90E031 +S1130330BC0162957295707F7627607F76279595CC +S11303408795959587959595879595958795682B28 +S113035040E083E091E00E94090740E06FEF83E012 +S113036091E00E9409078DE091E00E94C40A90E0A8 +S1130370BC0162957295707F7627607F762795958C +S11303808795959587959595879595958795682BE8 +S113039040E083E091E00E94090783E091E00E943D +S11303A09C0708958DE091E00E94BC0A90E0BC0196 +S11303B062957295707F7627607F762795958795ED +S11303C0959587959595879595958795682B40E0A4 +S11303D083E091E00E9409078DE091E00E94C00A49 +S11303E090E0BC0162957295707F7627607F7627D6 +S11303F095958795959587959595879595958795E1 +S1130400682B40E083E091E00E94090740E06FEF31 +S113041083E091E00E94090783E091E00E949C0739 +S113042008958230910509F446C08330910509F49A +S113043081C0019709F0BCC040E06FEF83E091E018 +S11304400E9409078DE091E00E94B40A90E0BC018B +S113045062957295707F7627607F7627959587954C +S1130460959587959595879595958795682B40E003 +S113047083E091E00E9409078DE091E00E94B00AB8 +S113048090E0BC0162957295707F7627607F762735 +S11304909595879595958795959587959595879540 +S11304A0682B40E083E091E00E94090783E091E03B +S11304B00E949C0708958DE091E00E94B80A90E0A4 +S11304C0BC0162957295707F7627607F762795953B +S11304D08795959587959595879595958795682B97 +S11304E040E083E091E00E94090740E06FEF83E081 +S11304F091E00E9409078DE091E00E94B00A90E02B +S1130500BC0162957295707F7627607F76279595FA +S11305108795959587959595879595958795682B56 +S113052040E083E091E00E94090783E091E00E94AB +S11305309C0708958DE091E00E94B80A90E0BC0108 +S113054062957295707F7627607F7627959587955B +S1130550959587959595879595958795682B40E012 +S113056083E091E00E9409078DE091E00E94B40AC3 +S113057090E0BC0162957295707F7627607F762744 +S1130580959587959595879595958795959587954F +S1130590682B40E083E091E00E94090740E06FEFA0 +S11305A083E091E00E94090783E091E00E949C07A8 +S11305B008950E94360B809302011A9B03C088EEB3 +S11305C093E003C0813CF9F4FACF1A9949C040C0C2 +S11305D083B1109201011092000183B18873885F86 +S11305E0893320F485FF03C02D9A02C080E02D9842 +S11305F084FF02C02C9A01C02C9883FF02C02B9A5E +S113060008952B980895199B03C088EE93E004C0C5 +S1130610803C09F03FC0F9CF19992CC034C083B194 +S1130620109201011092000183B183B18873885044 +S113063085FF02C02D9A01C02D9884FF02C02C9A18 +S113064001C02C9883FF02C02B9A08952B9808951B +S11306508091000190910101892B09F4B9CFB9CFA0 +S1130660EFE9FFE03197F1F700C000000197009730 +S113067079F3ABCFEFE9FFE03197F1F700C0000069 +S11306800197009749F68091000190910101892B0F +S113069031F2C6CF0895BF92CF92DF92EF92FF92CC +S11306A00F931F93CF93DF93189B95C2189BAEC1F2 +S11306B08FE99FE00197F1F700C000001899F8CF87 +S11306C0A5C10F5F1F4F083C110514F000E010E0B6 +S11306D0189B0BC0189B08C0EFE9FFE03197F1F7B6 +S11306E000C000001899F8CF2196C330D10509F451 +S11306F06CC03CF4C130D10579F0C230D10509F1A8 +S113070077C1C530D10509F4EAC00CF4A5C0C630E0 +S1130710D10509F426C16CC10536110534F060E039 +S113072082E090E00E94450102C00E9498001A995C +S113073002C0199B44C260E08DE091E00E94C80AA7 +S11307403EC20536110534F060E081E090E00E947D +S1130750450102C00E9498001A9B13C08E2D9F2D44 +S11307601A9975C16AC1807F60E1680F02C061E0B7 +S1130770680F603608F060E08DE091E00E94CE0AD8 +S11307801EC2199B1CC28E2D9F2D199973C169C15C +S113079082958F70682F70E061507109629572952F +S11307A0707F7627607F7627696004C0882329F0EC +S11307B06FEF680F613618F403C069E501C069E59D +S11307C08DE091E00E94CE0AFAC10536110534F09D +S11307D060E080E090E00E94450102C00E94980021 +S11307E01A9B17C08E2D9F2D1A9958C14DC1807F19 +S11307F060E1680F08C0833228F49F5F807F692F0F +S1130800682B01C060E040E08DE091E00E94D40AD2 +S1130810D6C1199BD4C18E2D9F2D199951C148C1A0 +S1130820982F9F7069F482958F7090E0019782955C +S11308309295907F9827807F9827682F696006C0DB +S11308409150807F692F682B01C063E240E08DE006 +S113085091E00E94D40AB3C140980536110534F0E2 +S11308606D2D80E090E00E94450102C00E94EB00E3 +S11308701A9B15C08E2D9F2D1A9936C12BC1807FCE +S113088060E1680F04C09F5F807F692F682B62332B +S113089008F060E08DE091E00E94E00A90C1199BAD +S11308A08EC18E2D9F2D199932C128C182958F70CA +S11308B090E0019782959295907F9827807F982762 +S11308C0682F696004C09150807F692F682B611183 +S11308D001C061E38DE091E00E94E00A70C1053639 +S11308E0110534F06D2D81E090E00E94450102C0B5 +S11308F00E94EB001A9B15C08E2D9F2D1A991BC1C7 +S113090010C1807F60E1680F04C09F5F807F692F02 +S1130910682B633108F06D2D8DE091E00E94E60AAA +S11309204EC1199B4CC18E2D9F2D199917C10DC114 +S113093082958F7090E0019782959295907F982789 +S1130940807F9827682F696004C09150807F692F49 +S1130950682B611101C06C2D8DE091E00E94E60AC4 +S11309602EC10536110534F06D2D82E090E00E9411 +S1130970450102C00E94EB001A9B15C08E2D9F2DCD +S11309801A99F6C0FFC0807F60E1680F04C09F5FC2 +S1130990807F692F682B6A3908F060E08DE091E070 +S11309A00E94EC0A0CC1199B0AC18E2D9F2D199926 +S11309B0FCC0F2C08823A1F082958F7090E001976B +S11309C082959295907F9827807F9827682F6960F9 +S11309D00AC0882339F09150807F692F682B03C0A7 +S11309E06B2D01C06B2D8DE091E00E94EC0AE7C0F5 +S11309F088B1887F88B98FE99FE00197F1F700C03B +S1130A000000C730D1050CF0E6C05BCEC1E0D0E0F9 +S1130A1000E010E00F2EF8EEEF2EF02D0F2EF3E095 +S1130A20FF2EF02D0F2EF2E1CF2EF02DDD24D394E6 +S1130A300F2EF9E9BF2EF02D4BCE8DE091E00E94F0 +S1130A40B40A982F9F70993009F091CE8CCEEFE9BB +S1130A50FFE03197F1F700C000000197009769F3B8 +S1130A607FCE8DE091E00E94B40A982F9F7009F424 +S1130A708FCE9CCEEFE9FFE03197F1F700C0000084 +S1130A800197009771F381CE8DE091E00E94B80A3E +S1130A90982F9F70993009F0AECEA9CEEFE9FFE010 +S1130AA03197F1F700C000000197009769F39CCEDD +S1130AB08DE091E00E94B80A882309F4C6CEB0CE36 +S1130AC0EFE9FFE03197F1F700C0000001970097CC +S1130AD079F3A3CE8DE091E00E94BC0A982F9F7019 +S1130AE0993009F0D0CECBCEEFE9FFE03197F1F7A2 +S1130AF000C000000197009769F3BECE8DE091E03D +S1130B000E94BC0A982F9F7009F4D0CEDCCEEFE986 +S1130B10FFE03197F1F700C000000197009771F3EF +S1130B20C2CE8DE091E00E94C00A982F9F70993048 +S1130B3009F0EBCEE6CEEFE9FFE03197F1F700C024 +S1130B4000000197009769F3D9CE8DE091E00E94EF +S1130B50C00A982F9F7009F4EBCEF7CEEFE9FFE0BF +S1130B603197F1F700C000000197009771F3DDCED3 +S1130B70EFE9FFE03197F1F700C00000019700971B +S1130B8009F0FECE8DE091E00E94C40A982F9F7078 +S1130B90993009F0FCCEF7CE8DE091E00E94C40AB2 +S1130BA0982F9F7009F406CF14CFEFE9FFE0319737 +S1130BB0F1F700C000000197009771F3F8CE88B1F7 +S1130BC0887F88B98FE99FE00197F1F700C00000A2 +S1130BD00F5F1F4F78CDDF91CF911F910F91FF9041 +S1130BE0EF90DF90CF90BF900895CF92DF92EF9275 +S1130BF0FF920F931F93CF93DF93809102018F3C59 +S1130C0009F0BDC0B1C00C2D1D2D813C49F50E94D9 +S1130C10360B80930201882309F49DC016C00E94FC +S1130C20360B809302010E949800C536D10514F05A +S1130C30CE2DDF2D8FE99FE00197F1F700C0000072 +S1130C40219680910201882351F390E00E94600074 +S1130C50682F8DE091E00E94C80A81EC0E942E0B5F +S1130C6080910201823C49F50E94360B8093020177 +S1130C70882309F467C016C00E94360B80930201D2 +S1130C800E949800C536D10514F0CE2DDF2D8FE9D2 +S1130C909FE00197F1F700C00000219680910201C6 +S1130CA0882351F390E00E946000682F8DE091E06A +S1130CB00E94CE0A82EC0E942E0B80910201833C9A +S1130CC049F50E94360B80930201882391F116C0E6 +S1130CD00E94360B809302010E949800C536D1050C +S1130CE014F0CE2DDF2D8FE99FE00197F1F700C0BE +S1130CF00000219680910201882351F390E00E9424 +S1130D00600040E0682F8DE091E00E94D40A83ECFB +S1130D100E942E0B80910201843C89F10F5F1F4FCA +S1130D200E94360B80930201053611050CF06BCF3F +S1130D306CCF0E94360B809302010E949800CC2D48 +S1130D40DD2DD1CF0E94360B809302010E949800C2 +S1130D50CC2DDD2D9CCF0E94360B809302010E9486 +S1130D609800CC2DDD2D66CF0E94360B80930201B6 +S1130D7000E010E0C12CD12CEC2CFD2C46CFDF91EF +S1130D80CF911F910F91FF90EF90DF90CF90089536 +S1130D900F931F938DE091E00E941E0A0BE210E076 +S1130DA025E030E047E050E066E070E083E091E069 +S1130DB00E94DD061F910F9108950F931F93FC016C +S1130DC0608371834283538324833583178306832B +S1130DD0D8011197B187A0875C9181E090E0FC0174 +S1130DE002C0EE0FFF1F2A95E2F79F01252BFC019D +S1130DF002C0EE0FFF1F4A95E2F7AF01422B02C07B +S1130E00880F991F6A95E2F7842B8C931F910F9199 +S1130E1008950F931F93CF93DF93FC0180E090E03C +S1130E2021E030E000E810E070E041113DC0A6810F +S1130E30B7815C91E901028002C0CC0FDD1F0A94E6 +S1130E40E2F7C095C523CC93DB01082E02C0B5950B +S1130E50A7950A94E2F7A0FF0DC0A681B7815C9123 +S1130E60E901008002C0CC0FDD1F0A94E2F7C52B14 +S1130E70CC930DC0A681B7815C91E901008002C0CA +S1130E80CC0FDD1F0A94E2F7C095C523CC93A6814D +S1130E90B7815C91E901028002C0CC0FDD1F0A9486 +S1130EA0E2F7C52BCC933EC0A681B7815C91E901E2 +S1130EB0028002C0CC0FDD1F0A94E2F7C095C5235F +S1130EC0CC93D801082E02C0B595A7950A94E2F7F1 +S1130ED0A623B723AB2B69F0A681B7815C91E90106 +S1130EE0008002C0CC0FDD1F0A94E2F7C52BCC931F +S1130EF00DC0A681B7815C91E901008002C0CC0FCE +S1130F00DD1F0A94E2F7C095C523CC93A681B7816F +S1130F105C91E901028002C0CC0FDD1F0A94E2F764 +S1130F20C52BCC9301968830910509F07ECFDF91D3 +S1130F30CF911F910F910895FC01A681B7814C9127 +S1130F4021E030E0C901048002C0880F991F0A948F +S1130F50E2F7842B8C9385E08A95F1F70000A68153 +S1130F60B7814C91C901048002C0880F991F0A946B +S1130F70E2F7809584238C930895CF92DF92EF92C9 +S1130F80FF920F931F93CF93DF93EC010E94F20A19 +S1130F90CC80DD80EE80FF808B010C191D091F8B36 +S1130FA00E8B043F114020F4CD28CE28CF2871F5B4 +S1130FB02D981D8A0E94F20A0C811D812E813F8189 +S1130FC0AB01BC01401B510B620B730B4C835D8363 +S1130FD06E837F830E94F20A688379838A839B836A +S1130FE081E04C815D816E817F81493E5340610582 +S1130FF0710508F480E0811103C08885882319F005 +S113100081E0888705C01A8A198A02C081E08D8B25 +S1131010DF91CF911F910F91FF90EF90DF90CF90D0 +S11310200895FC01238934892115310531F466239F +S113103009F4F4C040E050E03CC0A901C9010197A3 +S1131040439708F4EDC02431310519F46111FCC053 +S1131050E9C0C9014597079718F5662381F0C901CE +S1131060459741E050E0BA0102C0660F771F8A95A8 +S1131070E2F7CB019385892B838781E0E0C0C90126 +S1131080459741E050E0BA0102C0660F771F8A9588 +S1131090E2F7CB01809593858923838781E0CFC0D4 +S11310A02C31310531F4838580FFE0C06111D2C059 +S11310B0BBC0CA014D97069718F5662381F0C90194 +S11310C04D9741E050E0BA0102C0660F771F8A9540 +S11310D0E2F7CB019485892B848781E0B0C0C901F4 +S11310E04D9741E050E0BA0102C0660F771F8A9520 +S11310F0E2F7CB01809594858923848781E09FC0A2 +S11311002332310581F4848580FF09C061110BC04D +S11311108DC02332310539F4848580FD04C06623F3 +S113112009F49EC085C0CA018497069718F5662302 +S113113081F0C901849741E050E0BA0102C0660F12 +S1131140771F8A95E2F7CB019585892B858781E006 +S113115076C0C901849741E050E0BA0102C0660F2D +S1131160771F8A95E2F7CB0180959585892385873A +S113117081E065C0CA018A978330910508F45AC09A +S11311800397059718F5662381F0C9018D9741E00F +S113119050E0BA0102C0660F771F8A95E2F7CB01CF +S11311A09785892B878781E04AC0C9018D9741E0E3 +S11311B050E0BA0102C0660F771F8A95E2F7CB01AF +S11311C0809597858923878781E039C042535109E7 +S11311D04830510588F5662381F0C901C29741E082 +S11311E050E0BA0102C0660F771F8A95E2F7CB017F +S11311F09089892B808B81E022C0C901C29741E08C +S113120050E0BA0102C0660F771F8A95E2F7CB015E +S1131210809590898923808B81E011C080E00FC084 +S113122081E00DC080E00BC080E009C080E007C011 +S113123080E005C081E003C081E001C080E02F5F51 +S11312403F4F348B238B0895C9014597079708F4C2 +S113125006CF0FC0C9014D97069708F42ECF59CF7A +S1131260CA018497069708F474CF84CF662391F358 +S1131270E5CFC9014D97069708F41FCF54CF8F923D +S11312809F92AF92BF92FF920F931F93CF93DF93DE +S1131290EC010E94F20A88809980AA80BB808B01AD +S11312A0081919091F8B0E8B0431110528F489289C +S11312B08A288B2809F056C02D9A1D8A0E94F20AAA +S11312C06C837D838E839F830E94F20A0881198137 +S11312D02A813B81AB01BC01401B510B620B730B98 +S11312E0488359836A837B838885882379F1898538 +S11312F09A85CB977CF581E090E09A8B898BDB0112 +S1131300CA0180559109A109B1098997A105B105BF +S113131050F0445B51096109710949325105610575 +S1131320710518F004C0F12C02C0FF24F3946F2D52 +S1131330CE010E941108882319F01A86198618868E +S113134089859A8501969A8789870EC089859A85A9 +S1131350CB9754F018861A86198682E090E09A8B0F +S1131360898B02C081E08D8BDF91CF911F910F910A +S1131370FF90BF90AF909F908F9008951F920F920F +S11313800FB60F9211242F933F934F935F936F9354 +S11313907F938F939F93AF93BF93EF93FF93F894AF +S11313A04A9B05C08FE091E00E943F0904C08FE092 +S11313B091E00E94BD077894FF91EF91BF91AF91A6 +S11313C09F918F917F916F915F914F913F912F9159 +S11313D00F900FBE0F901F90189510920F0110924E +S11313E01001109211011092120110921301109227 +S11313F01401109215011092160110921701109207 +S113140019011092180110921A0110921B011092E6 +S11314101C0110921D0110921E0110921F011092C6 +S113142021011092200110922301109222011092A6 +S1131430240110922601109225010895FC011182C5 +S113144008958CE58093B800E9EBF0E080818C7F0F +S11314508083ECEBF0E084E0808384EA8083808105 +S11314608823ECF780ED8093BB0084E88093BC0074 +S1131470ECEBF0E080818823ECF76093BB0084E818 +S11314808093BC00ECEBF0E080818823ECF7409380 +S1131490BB0084E88093BC00ECEBF0E080818823FF +S11314A0ECF784E98093BC00ECEBF0E0808184FDF0 +S11314B0FDCFECEBF0E080818B7F808308958CE599 +S11314C08093B800E9EBF0E080818C7F8083ECEBC3 +S11314D0F0E084E0808384EA808380818823ECF7D1 +S11314E080ED8093BB0084E88093BC00ECEBF0E0DB +S11314F080818823ECF76093BB0084E88093BC0070 +S1131500ECEBF0E080818823ECF784EA8093BC0064 +S1131510ECEBF0E080818823ECF781ED8093BB0055 +S113152084E88093BC00ECEBF0E080818823ECF746 +S113153084E88093BC00ECEBF0E080818823ECF736 +S11315408091BB0094E99093BC00ECEBF0E09081B7 +S113155094FDFDCFECEBF0E090819B7F90830895A8 +S113156060E00E945F0A089561E00E945F0A0895A6 +S113157062E00E945F0A089564E00E945F0A089591 +S113158065E00E945F0A089566E00E945F0A08957C +S1131590462F60E070E00E94210A0895462F61E022 +S11315A070E00E94210A0895442319F0462F4064F4 +S11315B002C0462F4F7B62E070E00E94210A08952A +S11315C0462F64E070E00E94210A0895462F65E0EA +S11315D070E00E94210A0895462F66E070E00E94A0 +S11315E0210A0895F894609127017091280180914F +S11315F0290190912A01789408951F920F920FB6B1 +S11316000F9211248F939F93AF93BF9380912701DF +S113161090912801A0912901B0912A010196A11D60 +S1131620B11D8093270190932801A0932901B093C1 +S11316302A01BF91AF919F918F910F900FBE0F9090 +S11316401F9018951092C50087E68093C40088E126 +S11316508093C10086E08093C2000895E0ECF0E03E +S1131660908195FFFDCF8093C60008958091C000BE +S113167088231CF48091C600089580E008950E9498 +S113168077000E943E010E944B030E94D9020E94EF +S1131690F505F7CFEE0FFF1F0590F491E02D0994A7 +S10716A0F894FFCFE8 +S9030000FC diff --git a/Debug/fonction.d b/Debug/fonction.d new file mode 100644 index 0000000..23f6b7b --- /dev/null +++ b/Debug/fonction.d @@ -0,0 +1,53 @@ +fonction.d fonction.o: .././fonction.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + ../././lib/hc74595.h ../././lib/DS1307.h .././lib/UART.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +../././lib/hc74595.h: + +../././lib/DS1307.h: + +.././lib/UART.h: diff --git a/Debug/fonction.o b/Debug/fonction.o new file mode 100644 index 0000000..3a5ee75 Binary files /dev/null and b/Debug/fonction.o differ diff --git a/Debug/lib/DCF77.d b/Debug/lib/DCF77.d new file mode 100644 index 0000000..45cf401 --- /dev/null +++ b/Debug/lib/DCF77.d @@ -0,0 +1,63 @@ +lib/DCF77.d lib/DCF77.o: ../lib/DCF77.cpp ../lib/DCF77.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + ../lib/timer.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\atomic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + ../lib/LCD.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h + +../lib/DCF77.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +../lib/timer.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\atomic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +../lib/LCD.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h: diff --git a/Debug/lib/DCF77.o b/Debug/lib/DCF77.o new file mode 100644 index 0000000..aa8f6df Binary files /dev/null and b/Debug/lib/DCF77.o differ diff --git a/Debug/lib/DS1307.d b/Debug/lib/DS1307.d new file mode 100644 index 0000000..6b45085 --- /dev/null +++ b/Debug/lib/DS1307.d @@ -0,0 +1,46 @@ +lib/DS1307.d lib/DS1307.o: ../lib/DS1307.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + ../lib/DS1307.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +../lib/DS1307.h: diff --git a/Debug/lib/DS1307.o b/Debug/lib/DS1307.o new file mode 100644 index 0000000..b9c29eb Binary files /dev/null and b/Debug/lib/DS1307.o differ diff --git a/Debug/lib/LCD.d b/Debug/lib/LCD.d new file mode 100644 index 0000000..f5ae23f --- /dev/null +++ b/Debug/lib/LCD.d @@ -0,0 +1,64 @@ +lib/LCD.d lib/LCD.o: ../lib/LCD.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + ../lib/LCD.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\string.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +../lib/LCD.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\string.h: diff --git a/Debug/lib/LCD.o b/Debug/lib/LCD.o new file mode 100644 index 0000000..d5a464a Binary files /dev/null and b/Debug/lib/LCD.o differ diff --git a/Debug/lib/UART.d b/Debug/lib/UART.d new file mode 100644 index 0000000..3fe62b4 --- /dev/null +++ b/Debug/lib/UART.d @@ -0,0 +1,46 @@ +lib/UART.d lib/UART.o: ../lib/UART.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + ../lib/UART.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +../lib/UART.h: diff --git a/Debug/lib/UART.o b/Debug/lib/UART.o new file mode 100644 index 0000000..573a08e Binary files /dev/null and b/Debug/lib/UART.o differ diff --git a/Debug/lib/hc74595.d b/Debug/lib/hc74595.d new file mode 100644 index 0000000..e1fecbc --- /dev/null +++ b/Debug/lib/hc74595.d @@ -0,0 +1,46 @@ +lib/hc74595.d lib/hc74595.o: ../lib/hc74595.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h \ + ../lib/hc74595.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\math.h: + +../lib/hc74595.h: diff --git a/Debug/lib/hc74595.o b/Debug/lib/hc74595.o new file mode 100644 index 0000000..b6b9cd4 Binary files /dev/null and b/Debug/lib/hc74595.o differ diff --git a/Debug/lib/timer.d b/Debug/lib/timer.d new file mode 100644 index 0000000..40f6639 --- /dev/null +++ b/Debug/lib/timer.d @@ -0,0 +1,40 @@ +lib/timer.d lib/timer.o: ../lib/timer.cpp \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\atomic.h + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\iom328p.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\atomic.h: diff --git a/Debug/lib/timer.o b/Debug/lib/timer.o new file mode 100644 index 0000000..dbb32a3 Binary files /dev/null and b/Debug/lib/timer.o differ diff --git a/Debug/make4656-1.bat b/Debug/make4656-1.bat new file mode 100644 index 0000000..b8734e7 --- /dev/null +++ b/Debug/make4656-1.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Nixie clock.elf" "Nixie clock.hex" diff --git a/Debug/make5444-1.bat b/Debug/make5444-1.bat new file mode 100644 index 0000000..37ac279 --- /dev/null +++ b/Debug/make5444-1.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-g++.exe" -o "Nixie clock.elf" fonction.o lib/LCD.o lib/hc74595.o lib/DCF77.o lib/DS1307.o lib/timer.o "Nixie clock.o" -Wl,-Map="Nixie clock.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega328p diff --git a/Debug/make5444-2.bat b/Debug/make5444-2.bat new file mode 100644 index 0000000..5e228eb --- /dev/null +++ b/Debug/make5444-2.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\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 "Nixie clock.elf" "Nixie clock.eep" || exit 0 diff --git a/Debug/make6940-1.bat b/Debug/make6940-1.bat new file mode 100644 index 0000000..b8734e7 --- /dev/null +++ b/Debug/make6940-1.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Nixie clock.elf" "Nixie clock.hex" diff --git a/Debug/make6940-2.bat b/Debug/make6940-2.bat new file mode 100644 index 0000000..5e228eb --- /dev/null +++ b/Debug/make6940-2.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\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 "Nixie clock.elf" "Nixie clock.eep" || exit 0 diff --git a/Debug/make6940-3.bat b/Debug/make6940-3.bat new file mode 100644 index 0000000..e07dbb7 --- /dev/null +++ b/Debug/make6940-3.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "Nixie clock.elf" > "Nixie clock.lss" diff --git a/Debug/make6940-4.bat b/Debug/make6940-4.bat new file mode 100644 index 0000000..12a732c --- /dev/null +++ b/Debug/make6940-4.bat @@ -0,0 +1,2 @@ +@echo off +"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.939\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "Nixie clock.elf" "Nixie clock.srec" diff --git a/Debug/makedep.mk b/Debug/makedep.mk new file mode 100644 index 0000000..4d186bf --- /dev/null +++ b/Debug/makedep.mk @@ -0,0 +1,20 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +fonction.cpp + +lib\LCD.cpp + +lib\hc74595.cpp + +lib\DCF77.cpp + +lib\DS1307.cpp + +lib\timer.cpp + +lib\UART.cpp + +Nixie clock.cpp + diff --git a/Nixie clock.cpp b/Nixie clock.cpp new file mode 100644 index 0000000..f934de8 --- /dev/null +++ b/Nixie clock.cpp @@ -0,0 +1,24 @@ +/* + * Horloge à Tube Nixie + * + * + * V:1.1Beta + * Dernière modification : 27.05.14 + * + */ +#define F_CPU 16000000UL //Fréquence horloge à 16Mhz +#include +#include +#include +#include "./fonction.h" //Inclusion des fonction +int main(void) //Fonction Principale +{ + setup_pins(); //Configuration des pins et du registre à décalage + while(1)//Boucle infinie + { + routine_affichage(); //Routinne d'affihage des tube nixie + bouton(); //Gestion des boutons de configuration + couleur(); //Gestion des LED RGB + uart_ds1307(); + } +} \ No newline at end of file diff --git a/Nixie clock.cppproj b/Nixie clock.cppproj new file mode 100644 index 0000000..fcb7579 --- /dev/null +++ b/Nixie clock.cppproj @@ -0,0 +1,196 @@ + + + + 2.0 + 6.1 + com.Atmel.AVRGCC8.CPP + {f71abc8f-40b1-4ec1-b079-ec2cf2114afb} + ATmega328P + none + Executable + CPP + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + Nixie clock + Nixie clock + Nixie clock + Native + true + false + exception_table + 0 + true + 0x20000000 + true + + 2 + + + + + + + + + + + + + + com.atmel.avrdbg.tool.simulator + + com.atmel.avrdbg.tool.simulator + Simulator + + + + + + 127.0.0.1 + 64002 + False + + + + false + + + + + + + + + + True + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + True + True + + + NDEBUG + + + Optimize for size (-Os) + True + True + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + + + + + + + True + True + True + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + True + True + + + DEBUG + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + <segmentname>=<address>, for example .boot=0xff + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + + + + \ No newline at end of file diff --git a/Nixie clock.cpp~ b/Nixie clock.cpp~ new file mode 100644 index 0000000..f934de8 --- /dev/null +++ b/Nixie clock.cpp~ @@ -0,0 +1,24 @@ +/* + * Horloge à Tube Nixie + * + * + * V:1.1Beta + * Dernière modification : 27.05.14 + * + */ +#define F_CPU 16000000UL //Fréquence horloge à 16Mhz +#include +#include +#include +#include "./fonction.h" //Inclusion des fonction +int main(void) //Fonction Principale +{ + setup_pins(); //Configuration des pins et du registre à décalage + while(1)//Boucle infinie + { + routine_affichage(); //Routinne d'affihage des tube nixie + bouton(); //Gestion des boutons de configuration + couleur(); //Gestion des LED RGB + uart_ds1307(); + } +} \ No newline at end of file diff --git a/Nixie clock.h b/Nixie clock.h new file mode 100644 index 0000000..a8d17d6 --- /dev/null +++ b/Nixie clock.h @@ -0,0 +1,17 @@ +/* + * Nixie_clock.h + * + * Created: 25/12/2013 14:25:40 + * Author: Adrien + */ + + +#ifndef NIXIE CLOCK_H_ +#define NIXIE CLOCK_H_ + +void affichage_heur(); +void affichage_date(); + + + +#endif /* NIXIE CLOCK_H_ */ \ No newline at end of file diff --git a/fonction.cpp b/fonction.cpp new file mode 100644 index 0000000..cc6ff25 --- /dev/null +++ b/fonction.cpp @@ -0,0 +1,537 @@ +/* + * fonction.cpp + * + * Created: 19/12/2013 14:18:08 + * Author: Adrien + */ + +#define F_CPU 16000000UL //Fréquence horloge à 16Mhz + +#include +#include +#include +/* Chargement des librairie */ +#include "./lib/hc74595.h" +#include "./lib/DS1307.h" +#include "lib/UART.h" + +/* Config des pin */ +#define LED_RED 1< Passage à 0 sur les Nixie Tube ...) +#define LOW(bit) ~(bit) + + + +/* Création des objets */ + +ds1307 rtc; +hc74595 shiftRegister(SHIFT_REGISTER_DATA, SHIFT_REGISTER_CLK, SHIFT_REGISTER_CONFIRM, &PORTD); +uint8_t usart; +int bcm_rgb_actif = 0; + +int bcm_red = 0; +int bcm_green = 0; +int bcm_blue = 0; +int abc=0; +void init_interupt() +{ + TCCR0A = 0x00; + TCCR0B = (TCCR0B&(~(_BV(CS01)|_BV(CS02))))|_BV(CS00); //Prescale 8 + TCNT0 = 0x00 ; + OCR0A = 0x01; + TIMSK0 = _BV(OCIE0A); //Enable interupt +} +int int_to_bcd(int val) +{ + int high = 0; + while (val >= 10) // Count tens + { + high++; + val -= 10; + } + + return (high << 4) | val; +} +void setup_pins() +{ + USART_ini(); + DDRD &= LOW(1<>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = rtc.r_minute(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = rtc.r_seconde(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + shiftRegister.confirm(); +} +void affichage_date() +{ + uint8_t envoi = rtc.r_jour(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = rtc.r_moi(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = rtc.r_year(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + shiftRegister.confirm(); +} +void affichage_shutdwon() +{ + shiftRegister.send(0xFF, false); + shiftRegister.send(0xFF, false); + shiftRegister.send(0xFF, false); + shiftRegister.confirm(); +} +void routine_affichage() +{ + uint8_t secondes_var = rtc.r_seconde(); + if(secondes_var >= 0x20 && secondes_var <= 0x30 && 1==2) //Affiche la date pandant 10 seconde + affichage_date(); + else + affichage_heur(); +} +void clignotement(int n, bool date) +{ + n++; + uint8_t envoi; + if(date) + { + switch(n) + { + case 1: + envoi = 0xff; + shiftRegister.send(envoi, false); + envoi = rtc.r_moi(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = rtc.r_year(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + shiftRegister.confirm(); + break; + case 2: + envoi = rtc.r_jour(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = 0xff; + shiftRegister.send(envoi, false); + envoi = rtc.r_year(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + shiftRegister.confirm(); + break; + case 3: + envoi = rtc.r_jour(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = rtc.r_moi(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, false); + envoi = 0xff; + shiftRegister.send(envoi, false); + shiftRegister.confirm(); + break; + } + } + else + { + switch(n) + { + case 1: + envoi = 0xff; + shiftRegister.send(envoi, 0); + envoi = rtc.r_minute(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = rtc.r_seconde(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + shiftRegister.confirm(); + break; + case 2: + envoi = rtc.r_heur(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = 0xff; + shiftRegister.send(envoi, 0); + envoi = rtc.r_seconde(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + shiftRegister.confirm(); + break; + case 3: + envoi = rtc.r_heur(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = rtc.r_minute(); + envoi = (envoi>>4)|((envoi&0x0f)<<4); + shiftRegister.send(envoi, 0); + envoi = 0xff; + shiftRegister.send(envoi, 0); + shiftRegister.confirm(); + break; + } + } +} +void couleur() +{ + usart = USART_Receive(); + uint8_t mask = LED_BLUE|LED_GREEN|LED_RED; //COnfigure le mask + uint8_t curent_couleur; + if((PINB & (1< mask) + curent_couleur = 0x00; + else + bcm_rgb_actif = 0; + if (curent_couleur&LED_BLUE) + PORTB |= LED_BLUE; + else + PORTB &= LOW(LED_BLUE); + if(curent_couleur&LED_GREEN) + PORTB |= LED_GREEN; + else + PORTB &= LOW(LED_GREEN); + if(curent_couleur & LED_RED) + PORTB |= LED_RED; + else + PORTB &= LOW(LED_RED); + } + } + else if((PINB & (1<= (tmps_clignotement*2)) + a = 0; + if (PINB & (1< tmps_clignotement) //Clignotement + clignotement(SR_SECONDE, false); + else + affichage_heur(); + if((PINB & (1< tmps_clignotement) //Clignotement + clignotement(SR_MINUTE, false); + else + affichage_heur(); + if(PINB & (1<>4)+1)<<4; //Incrémente de 10 + else + curent_minute++; //Incrémente de 1 + if(curent_minute >= 0x60) //Si supérieur à 60 retour à 00 /!\ Pas d'incrémentation de l'heur !! + curent_minute = 0x00; + rtc.w_minute(curent_minute); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else if(curent_minute == 0x00) // Bug en simulation ..........???????????~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + curent_minute = 0x59; + else + curent_minute--; //Décrémente de 1 + if(curent_minute > 0x60) + curent_minute = 0x59; + rtc.w_minute(curent_minute); //Met à jour le DS1307 + } + + break; + case 3: //Config de l'heur + if(a > tmps_clignotement) //Clignotement toute les + clignotement(SR_HEUR, false); + else + affichage_heur(); + if(PINB & (1<>4)+1)<<4; //Incrémente de 10 + else if(curent_heur >= 0x23) //Si arrivé à 24H retour à 00H, /!\ Attention n'incrémente pas la date !! + curent_heur = 0x00; + else + curent_heur = ((curent_heur&0x0F)+1)|(curent_heur&0xF0); //Incrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else + curent_heur = ((curent_heur&0x0f)-1)|(curent_heur&0xf0); //Décrémente de 1 + rtc.w_heur(curent_heur, 0); //Met à jour le DS1307 + } + break; + case 4: //Config du jour + PORTC &= LOW(1< tmps_clignotement) //Clignotement + clignotement(SR_JOURS, true); + else + affichage_date(); + if(PINB & (1<>4)+1)<<4; //Incrémente de 10 + else + curent_day = ((curent_day&0x0F)+1)|(curent_day&0xF0); //Incrémente de 1 + if(curent_day > 0x31) + curent_day = 0x00; + rtc.w_date(curent_day); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else + curent_heur = ((curent_heur&0x0F)-1)|(curent_heur&0xF0); //Décrémente de 1 + if(curent_heur == 0x00) + curent_heur = 0x31; + rtc.w_date(curent_heur); //Met à jour le DS1307 + } + break; + case 5: //config du mois + if(a > tmps_clignotement) //Clignotement + clignotement(SR_MOIS, true); + else + affichage_date(); + if(PINB & (1<>4)+1)<<4; //Incrémente de 10 + else + curent_months = ((curent_months&0x0F)+1)|(curent_months&0xF0); //Incrémente de 1 + if(curent_months > 0x12) + curent_months = 0x01; + rtc.w_moi(curent_months); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else + curent_months = ((curent_months&0x0F)-1)|(curent_months&0xF0); //Décrémente de 1 + if(curent_months < 0x01) + curent_months = 0x12; + rtc.w_moi(curent_months); //Met à jour le DS1307 + } + break; + case 6: //Config de l'année + if(a > tmps_clignotement) //Clignotement + clignotement(SR_ANNEE, true); + else + affichage_date(); + if(PINB & (1<>4)+1)<<4; //Incrémente de 10 + else + curent_year = ((curent_year&0x0F)+1)|(curent_year&0xF0); //Incrémente de 1 + if(curent_year > 0x99) + curent_year = 0x00; + rtc.w_year(curent_year); //Met à jour le DS1307 + } + else if(PINB & (1<>4)-1)<<4)|0x09; //Décrémente de 10 + else if (curent_year != 0x00) + curent_year = ((curent_year&0x0F)-1)|(curent_year&0xF0); //Décrémente de 1 + else + curent_year = 0x99; + rtc.w_year(curent_year); //Met à jour le DS1307 + } + break; + + } + PORTC &= LOW(1<100) + a=0; + if(usart == 0xC1) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_seconde(int_to_bcd(usart)); + USART_Transmit(0xC1); + } + if(usart == 0xC2) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_minute(int_to_bcd(usart)); + USART_Transmit(0xC2); + } + if(usart == 0xC3) + { + usart = USART_Receive(); + for(int b = 0; !usart ; b++) + { + usart = USART_Receive(); + affichage_heur(); + if(b>100) + b=0; + _delay_ms(1); + } + rtc.w_heur(int_to_bcd(usart), 0); + USART_Transmit(0xC3); + } + if(usart == 0xC4) + { + cfg =false; + } + } + } +} diff --git a/fonction.h b/fonction.h new file mode 100644 index 0000000..36f86a8 --- /dev/null +++ b/fonction.h @@ -0,0 +1,26 @@ +/* + * fonction.h + * + * Created: 22/12/2013 15:47:39 + * Author: Adrien + */ + + +#ifndef FONCTION_H_ +#define FONCTION_H_ + +void init_interupt(); +void first(); +void setup_pins(); +void affichage_heur(); +void affichage_date(); +void clignotement(int n, bool date); +void routine_affichage(); +void couleur(); +void bouton(); +void uart_ds1307(); +void affichage_shutdwon(); +int int_to_bcd(int val); + + +#endif /* FONCTION_H_ */ \ No newline at end of file diff --git a/lib/DCF77 - Copie.cpp b/lib/DCF77 - Copie.cpp new file mode 100644 index 0000000..635b384 --- /dev/null +++ b/lib/DCF77 - Copie.cpp @@ -0,0 +1,138 @@ +/* + * DCF77.cpp + * + * Created: 19/12/2013 14:06:30 + * Author: Adrien + */ +#include "DCF77.h" +#include "timer.h" +#include +#include + +volatile uint8_t dcf77_bits_capture[6]; //Tableau comportent les bits décoder (6 * 8bits) +volatile unsigned long int time_low = 0; +volatile unsigned long int time_high = 0; +volatile bool dcf77_flag_start = 0; // Drapeau qui permet de savoir si on peut commencé la capture +volatile bool dcf77_flag_decode = 0; // " " " " " " " " " le décodage +volatile int dcf77_bit_count = 0; // Compte le nombre de bit déja encodé +void dcf77::start_capture() +{ + timer1_init(); + dcf77_flag_start = 0; + DDRD |= 1<= 0 ; y--) + { + if(z == 0 && !(dcf77_bits_capture[0] >> 8)) //Bit 00 TOUJOURS à 0 + { + if(decodage_bit_n <= 19) // Bit 00 à 19 ne nous interesse pas + {} + else if(decodage_bit_n <= 28) //Partie minutes + { + if((dcf77_bits_capture[z]>>y) && decodage_bit_n == 20) //Bit 20 TOUJOURS à 1 + {} + else + return false; + if (decodage_bit_n > 20 && decodage_bit_n <= 28)//Arrivé a la partie minute + { + if(decodage_bit_n == 21) + place_bit = 0; + if(decodage_bit_n != 28) + { + Minute |= ((dcf77_bits_capture[z]>>y) & 0x01) << place_bit; + place_bit++; + } + else if((Minute&0x1) && !((dcf77_bits_capture[z]>>y)&0x01) || !(Minute&0x1) && ((dcf77_bits_capture[z]>>y)&0x01)) + {} + else + return false; + } + } + } + else + return false; + decodage_bit_n++; + } + } +} +ISR(INT0_vect) +{ + if(PORTD&(1< 59)//Après le décodage 60e bit + { + dcf77_flag_start = 0; //Remise a zero du drapeau de démarage + dcf77_flag_decode = 1; //Mise a un du drapeau decode + dcf77_bit_count = 0; //Mise à zero le nombre de bit decodé + } + } + else //Passage au niveau bas + { + time_high = millis() - time_high; //Calcul du temps Haut + time_low = millis(); //Démarage du comptage du temps bas + if(time_high > 800) //Si le Temps bas est > à 800, début de la transmition + dcf77_flag_start = 1; + } +} \ No newline at end of file diff --git a/lib/DCF77 - Copie.h b/lib/DCF77 - Copie.h new file mode 100644 index 0000000..c15bd9d --- /dev/null +++ b/lib/DCF77 - Copie.h @@ -0,0 +1,39 @@ +/* + * DCF77.h + * + * Created: 22/12/2013 15:47:27 + * Author: Adrien + */ + + +#ifndef DCF77_H_ +#define DCF77_H_ + +#include +class dcf77 +{ + private: + uint8_t dcf77_bits[6]; + uint8_t Minute = 0x00; + uint8_t Heur = 0x00; + uint8_t Daymonth = 0x00; + uint8_t Dayweek = 0x00; + uint8_t Month = 0x00; + uint8_t Year = 0x00; + bool dcf77_flag_send_decode; + bool decode(); + public: + void start_capture(); + void stop_capture(); + bool ready(); + uint8_t minutes(); + uint8_t heure(); + uint8_t day_month(); + uint8_t day_week(); + uint8_t month(); + uint8_t year(); +}; + + + +#endif /* DCF77_H_ */ \ No newline at end of file diff --git a/lib/DCF77.cpp b/lib/DCF77.cpp new file mode 100644 index 0000000..5c79b96 --- /dev/null +++ b/lib/DCF77.cpp @@ -0,0 +1,211 @@ +/* + * DCF77.cpp + * + * Created: 19/12/2013 14:06:30 + * Author: Adrien + */ + +#include "DCF77.h" +#include "timer.h" +#include +#include +#include +#include +#include "LCD.h" + +#define LCD_DEBUG false +#define time_low_dcf77_min_0 80 +#define time_low_dcf77_max_0 120 +#define time_low_dcf77_min_1 180 +#define time_low_dcf77_max_1 220 +#define time_no_modulation 1000 +#define en_attente_de_signal 0 +#define decodage_en_cours 1 +#define decodage_effectuer 2 +#define decodage_erreur 3 +#define temps_haut_min 500 +#define temps_bas_min 20 + + +dcf77 atc_; +//#if LCD_DEBUG + LCD lcd1; +//#endif + +void dcf77::start_capture() +{ + DDRB |= 1<= temps_bas_min || time_low_dcf77 == 0) + { + PORTB |= 1<= time_low_dcf77_min_0 && time_low_dcf77 <= time_low_dcf77_max_0) //Si le temp bas est <= 100ms le bit est à 0 + bit = 0; + else if(time_low_dcf77 >= time_low_dcf77_min_1 && time_low_dcf77 <= time_low_dcf77_max_1) //Si le temp bas est <= 200ms le bit est à 1 + bit = 1; + else //ereur + { + //dcf77_bit_count = 0; + //dcf77_flag_start = 0; + //return; + } + if(dcf77::decode(bit)) + { + dcf77_bit_count = 0; + dcf77_flag_start = 0; + //return; + } + dcf77_bit_count++; + } + else if(dcf77_bit_count > 58)//Après le décodage 60e bit + { + //atc_.stop_capture(); //Arêt de la capture + dcf77_flag_start = 0; //Remise a zero du drapeau de démarage + dcf77_bit_count = 0; //Mise à zero le nombre de bit decodé + dcf77_status = decodage_effectuer; + } + else + { + // lcd1.set_cursor(5, 1); + // lcd1.print_text("Wt S.F."); + } + } + else + parasite_flag = true; +} +void dcf77::lo() +{ + + time_check = millis() - time_high_dcf77; + if( time_check >= temps_haut_min || time_high_dcf77 == 0) + { + PORTB &= ~(1< time_no_modulation | dcf77_flag_start) //Si le Temps bas est > à 800, début de la transmition + { + dcf77_flag_start = 1; + } + else + { + dcf77_status = en_attente_de_signal; + } + } + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + flag_no_error = false; + else if(bit_dcode_n >= 1 && bit_dcode_n <= 19); //Bits 01 à 19 ne nous interesse pas + else if (bit_dcode_n == 20 && !bit) //Bit 20 Toujours à 1 + flag_no_error = false; + else if (bit_dcode_n >= 21 && bit_dcode_n <= 27) //Bit 21 à 27 = Minute + { + if(bit) + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + flag_no_error = false; + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + { + if(bit) + dcf77_Heur |= 1 << (bit_dcode_n-29); + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + } + else if(bit_dcode_n == 35 && (dcf77_Heur&0x01) && !bit || bit_dcode_n == 35 && !(dcf77_Heur&0x01) && bit) //Bit de parité des Heure + flag_no_error = false; + else if(bit_dcode_n >= 36 && bit_dcode_n <= 41) //Bit 36 à 41 = Jours du moi + { + if(bit) + dcf77_Daymonth |= 1 << (bit_dcode_n-36); + else + dcf77_Daymonth &= ~(1 << (bit_dcode_n-36)); + } + else if(bit_dcode_n >= 42 && bit_dcode_n <= 44); //Bit 42 à 44 = Jours de la semaine, ne nous interesse pas + else if(bit_dcode_n >= 45 && bit_dcode_n <= 49) //Bit 45 à 49 = Mois + { + if(bit) + dcf77_Month |= 1 << (bit_dcode_n-45); + else + dcf77_Month &= ~(1 << (bit_dcode_n-45)); + } + else if(bit_dcode_n>= 50 && bit_dcode_n <= 57) //Bit 50 à 57 = Année + { + if(bit) + dcf77_Year |= 1 << (bit_dcode_n-50); + else + dcf77_Year &= ~(1 << (bit_dcode_n-50)); + } + else if(bit_dcode_n == 58 && (dcf77_Month&0x01) && !bit || bit_dcode_n && !(dcf77_Month&0x01) && bit);//Parity + bit_dcode_n++; + return flag_no_error; +} +int dcf77::status() +{ + return dcf77_status; +} +uint8_t dcf77::minutes() +{ + return dcf77_Minute; +} +uint8_t dcf77::heure() +{ + return dcf77_Heur; +} +uint8_t dcf77::month() +{ + return dcf77_Month; +} +uint8_t dcf77::day_month() +{ + return dcf77_Daymonth; +} +uint8_t dcf77::year() +{ + return dcf77_Year; +} +ISR(INT0_vect)//Vecteur d'interuption INT0 +{ + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + if(((PIND&(1<>PIND2))//Si c'est au niveau haut + { + atc_.hi(); + } + else //Passage au niveau bas + { + atc_.lo(); + } + } +} \ No newline at end of file diff --git a/lib/DCF77.cpp~ b/lib/DCF77.cpp~ new file mode 100644 index 0000000..5c79b96 --- /dev/null +++ b/lib/DCF77.cpp~ @@ -0,0 +1,211 @@ +/* + * DCF77.cpp + * + * Created: 19/12/2013 14:06:30 + * Author: Adrien + */ + +#include "DCF77.h" +#include "timer.h" +#include +#include +#include +#include +#include "LCD.h" + +#define LCD_DEBUG false +#define time_low_dcf77_min_0 80 +#define time_low_dcf77_max_0 120 +#define time_low_dcf77_min_1 180 +#define time_low_dcf77_max_1 220 +#define time_no_modulation 1000 +#define en_attente_de_signal 0 +#define decodage_en_cours 1 +#define decodage_effectuer 2 +#define decodage_erreur 3 +#define temps_haut_min 500 +#define temps_bas_min 20 + + +dcf77 atc_; +//#if LCD_DEBUG + LCD lcd1; +//#endif + +void dcf77::start_capture() +{ + DDRB |= 1<= temps_bas_min || time_low_dcf77 == 0) + { + PORTB |= 1<= time_low_dcf77_min_0 && time_low_dcf77 <= time_low_dcf77_max_0) //Si le temp bas est <= 100ms le bit est à 0 + bit = 0; + else if(time_low_dcf77 >= time_low_dcf77_min_1 && time_low_dcf77 <= time_low_dcf77_max_1) //Si le temp bas est <= 200ms le bit est à 1 + bit = 1; + else //ereur + { + //dcf77_bit_count = 0; + //dcf77_flag_start = 0; + //return; + } + if(dcf77::decode(bit)) + { + dcf77_bit_count = 0; + dcf77_flag_start = 0; + //return; + } + dcf77_bit_count++; + } + else if(dcf77_bit_count > 58)//Après le décodage 60e bit + { + //atc_.stop_capture(); //Arêt de la capture + dcf77_flag_start = 0; //Remise a zero du drapeau de démarage + dcf77_bit_count = 0; //Mise à zero le nombre de bit decodé + dcf77_status = decodage_effectuer; + } + else + { + // lcd1.set_cursor(5, 1); + // lcd1.print_text("Wt S.F."); + } + } + else + parasite_flag = true; +} +void dcf77::lo() +{ + + time_check = millis() - time_high_dcf77; + if( time_check >= temps_haut_min || time_high_dcf77 == 0) + { + PORTB &= ~(1< time_no_modulation | dcf77_flag_start) //Si le Temps bas est > à 800, début de la transmition + { + dcf77_flag_start = 1; + } + else + { + dcf77_status = en_attente_de_signal; + } + } + else + parasite_flag = true; +} +bool dcf77::decode(uint8_t bit) +{ + bool flag_no_error = true; + if(bit_dcode_n == 0 && !bit) //Bit 00 Toujours à 0 si le contraire erreur + flag_no_error = false; + else if(bit_dcode_n >= 1 && bit_dcode_n <= 19); //Bits 01 à 19 ne nous interesse pas + else if (bit_dcode_n == 20 && !bit) //Bit 20 Toujours à 1 + flag_no_error = false; + else if (bit_dcode_n >= 21 && bit_dcode_n <= 27) //Bit 21 à 27 = Minute + { + if(bit) + dcf77_Minute |= 1 << (bit_dcode_n-21); + else + dcf77_Minute &= ~(1 << (bit_dcode_n-21)); + } + else if(bit_dcode_n == 28 && (dcf77_Minute&0x01) && !bit || bit_dcode_n == 28 && !(dcf77_Minute&0x01) && bit) //Bit de parité des minutes + flag_no_error = false; + else if(bit_dcode_n >= 29 && bit_dcode_n <= 34) //Bit 29 à 34 = Heure + { + if(bit) + dcf77_Heur |= 1 << (bit_dcode_n-29); + else + dcf77_Heur &= ~(1 << (bit_dcode_n-29)); + } + else if(bit_dcode_n == 35 && (dcf77_Heur&0x01) && !bit || bit_dcode_n == 35 && !(dcf77_Heur&0x01) && bit) //Bit de parité des Heure + flag_no_error = false; + else if(bit_dcode_n >= 36 && bit_dcode_n <= 41) //Bit 36 à 41 = Jours du moi + { + if(bit) + dcf77_Daymonth |= 1 << (bit_dcode_n-36); + else + dcf77_Daymonth &= ~(1 << (bit_dcode_n-36)); + } + else if(bit_dcode_n >= 42 && bit_dcode_n <= 44); //Bit 42 à 44 = Jours de la semaine, ne nous interesse pas + else if(bit_dcode_n >= 45 && bit_dcode_n <= 49) //Bit 45 à 49 = Mois + { + if(bit) + dcf77_Month |= 1 << (bit_dcode_n-45); + else + dcf77_Month &= ~(1 << (bit_dcode_n-45)); + } + else if(bit_dcode_n>= 50 && bit_dcode_n <= 57) //Bit 50 à 57 = Année + { + if(bit) + dcf77_Year |= 1 << (bit_dcode_n-50); + else + dcf77_Year &= ~(1 << (bit_dcode_n-50)); + } + else if(bit_dcode_n == 58 && (dcf77_Month&0x01) && !bit || bit_dcode_n && !(dcf77_Month&0x01) && bit);//Parity + bit_dcode_n++; + return flag_no_error; +} +int dcf77::status() +{ + return dcf77_status; +} +uint8_t dcf77::minutes() +{ + return dcf77_Minute; +} +uint8_t dcf77::heure() +{ + return dcf77_Heur; +} +uint8_t dcf77::month() +{ + return dcf77_Month; +} +uint8_t dcf77::day_month() +{ + return dcf77_Daymonth; +} +uint8_t dcf77::year() +{ + return dcf77_Year; +} +ISR(INT0_vect)//Vecteur d'interuption INT0 +{ + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + if(((PIND&(1<>PIND2))//Si c'est au niveau haut + { + atc_.hi(); + } + else //Passage au niveau bas + { + atc_.lo(); + } + } +} \ No newline at end of file diff --git a/lib/DCF77.h b/lib/DCF77.h new file mode 100644 index 0000000..12cb93b --- /dev/null +++ b/lib/DCF77.h @@ -0,0 +1,52 @@ +/* + * DCF77.h + * + * Created: 22/12/2013 15:47:27 + * Author: Adrien + */ + + +#ifndef DCF77_H_ +#define DCF77_H_ + +#include + +class dcf77 +{ + private: + //uint8_t dcf77_bits[6]; + //bool dcf77_flag_send_decode; + unsigned long int time_low_dcf77 = 0; + unsigned long int time_high_dcf77 = 0; + bool dcf77_flag_start = 0; // Drapeau qui permet de savoir si on peut commencé la capture + //bool dcf77_flag_end_decode = 0; // " " " " " " le décodage est terminé + int dcf77_bit_count = 0; // Compte le nombre de bit déja encodé + uint8_t dcf77_Minute = 0x00; + uint8_t dcf77_Heur = 0x00; + uint8_t dcf77_Daymonth = 0x00; + uint8_t dcf77_Dayweek = 0x00; + uint8_t dcf77_Month = 0x00; + uint8_t dcf77_Year = 0x00; + int dcf77_status = 0; + int bit_dcode_n = 0; + bool parasite_flag = false; + unsigned int time_check = 0; + + public: + void start_capture(); + void stop_capture(); + void lo(); + void hi(); + uint8_t minutes(); + uint8_t heure(); + uint8_t day_month(); + uint8_t day_week(); + uint8_t month(); + uint8_t year(); + bool decode(uint8_t bit); + int status(); +}; + + + +#endif /* DCF77_H_ */ \ No newline at end of file diff --git a/lib/DS1307.cpp b/lib/DS1307.cpp new file mode 100644 index 0000000..3fff52a --- /dev/null +++ b/lib/DS1307.cpp @@ -0,0 +1,190 @@ +/* + * ds1307.cpp + * + * Created: 19/12/2013 14:06:21 + * Author: Adrien + * + * Note : Après réflection, l'utilisation d'une class est inutile ... + * + */ + +#define F_CPU 16000000UL +#include +#include +#include "DS1307.h" + +#define adresse_DS1307 0xD0 //Adresse I2C du DS1307 + +#define LED_RED 1< +class ds1307 +{ + private: + uint8_t curent_couleur; + bool iic_error; + public: + ds1307(); + void write(int adresse_m, uint8_t data); + uint8_t read(uint8_t adresse_m); + uint8_t r_seconde(); + uint8_t r_minute(); + uint8_t r_heur(); + uint8_t r_jour(); + uint8_t r_moi(); + uint8_t r_year(); + void w_seconde(uint8_t data); + void w_minute(uint8_t data); + void w_heur(uint8_t data, uint8_t pm); + void w_date(uint8_t data); + void w_moi(uint8_t data); + void w_year(uint8_t data); +}; + + + +#endif /* DS1307_H_ */ \ No newline at end of file diff --git a/lib/LCD.cpp b/lib/LCD.cpp new file mode 100644 index 0000000..53404e8 --- /dev/null +++ b/lib/LCD.cpp @@ -0,0 +1,170 @@ +/* + * LCD.cpp + * + * Created: 27/12/2013 13:32:02 + * Author: Adrien + */ + +/************************************************************************************************************ + * Cette librairie permet de controlé un écrans LCD a traver un PCF8574 avec comme adresse 0x40 * + * * + * ############################## * + * #----------------------------# * + * #| Configuration des pins |# * + * #|~~~~~~~~~~~~~~~~~~~~~~~~~~|# * + * #| PCF8574 | LCD |# * + * #|~~~~~~~~~~~~~~|~~~~~~~~~~~|# * + * #| 0 | D4 |# * + * #| 1 | D5 |# * + * #| 2 | D6 |# * + * #| 3 | D7 |# * + * #| 4 | NC |# * + * #| 5 | E |# * + * #| 6 | RS |# * + * #| 7 | RW |# * + * #----------------------------# * + * ############################## * + * * + * * + * @@ §§ §§ ####### * + * @@@@ §§ §§ ## ##### * + * @@ @@ §§ §§ ## #### * + * @@ @@ §§ §§ ## ## * + * @@ @@ §§ §§ ## ## * + * @@~&&&&&&~@@ §§ §§ ## #### * + * @@ @@ §§§§ ## ##### * + * @@ @@ §§ ####### * + * * + ************************************************************************************************************ + */ + +#define adresse_DS1307 0x40 +#define F_CPU 16000000UL + +#define RS 0x01<<6 +#define RW 0x01<<7 +#define E 0x01<<5 +#define D4 0x01<<0 +#define D5 0x01<<1 +#define D6 0x01<<2 +#define D7 0x01<<3 +#define D0 0x01<<0 +#define D1 0x01<<1 +#define D2 0x01<<2 +#define D3 0x01<<3 + +#include +#include +#include +#include +#include "LCD.h" + + + + uint8_t PCF8574::send(uint8_t data, uint8_t read) + { + uint8_t read_data; + //SCK Config (27.77Khz) + TWBR = 0x0A; //Bit rate division à 10 + TWSR = (TWSR & ~((1<>3)) + return true; + else + return false; + } + void LCD::send(uint8_t data, bool debut_instuction) + { + while(check_busy_flag() && debut_instuction) //Vérifie qu'il n'y a pas une oppétation en cours + {} + PCF8574::send(0x00, 0); //Met les pins à0 + PCF8574::send(data, 0); //Ecris les données + data |= (E); + //_delay_ms(1000); + PCF8574::send(data, 0); //Confirme les données + _delay_us(1); //Attente que la confiramation soit bien reçue + data &= ~(E); + PCF8574::send(data, 0); + _delay_us(1); + } + void LCD::display_init() + { + send(0x03, true); //Mode 4bit + + send(0x08, false); //Mode 2ligne + + send(0x00, true);send(0x01, false); //Clear display + send(0x00, true);send(0x02, false); //Return home + send(0x00, true);send((D2|D1), false); //Incrémentation de la RAM et déplacement du curseur vers la droite + send(0x00, true);send((D3|D2), false); //Allume l'afficheur sans curseur + + } + void LCD::send_leter(uint8_t lettre) + { + uint8_t data = (RS)|(lettre>>4); //Inscrit les 4 dernier bit dans la RAM + send(data, true); + data = (RS)|(lettre&0b00001111); //Inscrit les 4 premier bit dans la RAM + send(data, false); + } + void LCD::clear() + { + send(0x00, true); send(D0, false); //Clear Display + send(0x00, true);send(0x02, false); //Return home + } + void LCD::set_cursor(int x, int y) + { + uint8_t data; + if(y == 1) + data = 0x00 + x; + else if(y == 2) + data = 0x40 + x; + send((data>>4)|0x08, true);_delay_us(5);send(data&0x0F, false); + } + void LCD::print_text(char *txt) + { + for(int a = 0 ; a < strlen(txt) ; a++) + send_leter(txt[a]); + } + void LCD::print_number(int num) + { + char c[64]; + sprintf(c, "%d", num); + print_text(c); + } \ No newline at end of file diff --git a/lib/LCD.h b/lib/LCD.h new file mode 100644 index 0000000..60ef628 --- /dev/null +++ b/lib/LCD.h @@ -0,0 +1,37 @@ +/* + * LCD.h + * + * Created: 27/12/2013 13:32:19 + * Author: Adrien + */ + + +#ifndef LCD_H_ +#define LCD_H_ + + +#include +#include + +class PCF8574 +{ + public: + static uint8_t send(uint8_t data, uint8_t read); +}; +class LCD +{ + private: + bool check_busy_flag(); + public: + void setup(int rs_pin, int rw_pin, int e_pin, int d4_pin, int d5_pin, int d6_pin, int d7_pin); + void send(uint8_t data, bool BF); + void display_init(); + void send_leter(uint8_t lettre); + void print_text(char *txt); + void print_number(int num); + void clear(); + void set_cursor(int x, int y); +}; + + +#endif /* LCD_H_ */ \ No newline at end of file diff --git a/lib/UART.cpp b/lib/UART.cpp new file mode 100644 index 0000000..861a228 --- /dev/null +++ b/lib/UART.cpp @@ -0,0 +1,37 @@ +/* + * UART.cpp + * + * Created: 31/05/2014 23:16:31 + * Author: Adrien + */ + +#include +#include +#include "UART.h" +#define F_CPU 16000000UL +#define BAUD 9600 +#define MYUBRR (((F_CPU / (BAUD * 16UL))) - 1) + +void USART_ini() +{ + UBRR0H = (unsigned char)(MYUBRR>>8); + UBRR0L = (unsigned char)MYUBRR; + UCSR0B = (1< +#include +#include "hc74595.h" + +hc74595::hc74595(int data, int clk, int stcp,volatile uint8_t *port_uc/*, volatile uint8_t *ddr_uc*/) +{ + pin_DATA = data; + pin_CLK = clk; + pin_STCP = stcp; + port = port_uc; + ddr = --port_uc; + *ddr |= (0x01 << data | 0x01 << clk | 0x01 << stcp); +} +void hc74595::send(uint8_t data, bool inverted) //Envoi des donnée au Shift Register +{ + + for(int a = 0; a < 8 ; a++) + { + if(!inverted) + { + *port &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x01 << a)) //Regarde la valeur de chaque bit + *port |= 0x01 << pin_DATA; + else + *port &= ~(0x01 << pin_DATA); + *port|= 0x01 << pin_CLK; //Met l'orloge à 1 + } + else + { + *port &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + *port |= 0x01 << pin_DATA; + else + *port &= ~(0x01 << pin_DATA); + *port |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + } +} +void hc74595::confirm() //Envoi le signal du storage register +{ + *port |= 0x01 << pin_STCP; + _delay_us(1); + *port &= ~(0x01 << pin_STCP); +} + + + +/*----------------------------------------------------------------------------------------------------------- +/* + * _74595.cpp + * + * Created: 19/12/2013 14:06:10 + * Author: Adrien + * + +#include +#include "hc74595.h" + +void hc74595::setup(int data, int clk, int stcp, char port_uc) +{ + pin_DATA = data; + pin_CLK = clk; + pin_STCP = stcp; + port = port_uc; + switch (port) //Configure les pin nésessaire en sortie + { + case 'B' : + DDRB |= (0x01 << data | 0x01 << clk | 0x01 << stcp); + break; + case 'C' : + DDRC |= (0x01 << data | 0x01 << clk | 0x01 << stcp); + break; + case 'D' : + DDRD |= (0x01 << data | 0x01 << clk | 0x01 << stcp); + break; + } +} +void hc74595::hc74595(int data, int clk, int stcp, uint8_t *port_uc) +{ + pin_DATA = data; + pin_CLK = clk; + pin_STCP = stcp; + *port = port_uc; + *port |= (0x01 << data | 0x01 << clk | 0x01 << stcp); +} +void hc74595::send(uint8_t data, bool inverted) //Envoi des donnée au Shift Register +{ + switch (port) + { + case 'B' : + for(int a = 0; a < 8 ; a++) + { + if(!inverted) + { + PORTB &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x01 << a)) //Regarde la valeur de chaque bit + PORTB |= 0x01 << pin_DATA; + else + PORTB &= ~(0x01 << pin_DATA); + PORTB |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + else + { + PORTB &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + PORTB |= 0x01 << pin_DATA; + else + PORTB &= ~(0x01 << pin_DATA); + PORTB |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + } + break; + case 'C' : + for(int a = 0; a < 8 ; a++) + { + if(!inverted) + { + PORTC &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x01 << a)) //Regarde la valeur de chaque bit + PORTC |= 0x01 << pin_DATA; + else + PORTC &= ~(0x01 << pin_DATA); + PORTC |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + else + { + PORTC &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + PORTC |= 0x01 << pin_DATA; + else + PORTC &= ~(0x01 << pin_DATA); + PORTC |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + } + break; + case 'D' : + for(int a = 0; a < 8 ; a++) + { + if(!inverted) + { + PORTD &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x01 << a)) //Regarde la valeur de chaque bit + PORTD |= 0x01 << pin_DATA; + else + PORTD &= ~(0x01 << pin_DATA); + PORTD |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + else + { + PORTD &= ~(0x01 << pin_CLK); //Met l'orloge à 0 + if(data & (0x80 >> a)) //Regarde la valeur de chaque bit + PORTD |= 0x01 << pin_DATA; + else + PORTD &= ~(0x01 << pin_DATA); + PORTD |= 0x01 << pin_CLK; //Met l'orloge à 1 + } + } + break; + } +} +void hc74595::confirm() //Envoi le signal du storage register +{ + switch(port) + { + case 'B' : + PORTB |= 0x01 << pin_STCP; + PORTB &= ~(0x01 << pin_STCP); + break; + case 'C' : + PORTC |= 0x01 << pin_STCP; + PORTC &= ~(0x01 << pin_STCP); + break; + case 'D' : + PORTD |= 0x01 << pin_STCP; + PORTD &= ~(0x01 << pin_STCP); + break; + } +} +*/ \ No newline at end of file diff --git a/lib/hc74595.h b/lib/hc74595.h new file mode 100644 index 0000000..fdba132 --- /dev/null +++ b/lib/hc74595.h @@ -0,0 +1,27 @@ +/* + * _74hc595.h + * + * Created: 22/12/2013 15:19:47 + * Author: Adrien + */ + + +#ifndef HC74595_H_ +#define HC74595_H_ + +#include +class hc74595 +{ + private: + int pin_DATA; + int pin_CLK; + int pin_STCP; + volatile uint8_t *port; + volatile uint8_t *ddr; + public: + hc74595(int data, int clk, int stcp, volatile uint8_t *port_uc); + void send(uint8_t data, bool inverted); + void confirm(); +}; + +#endif /* 74HC595_H_ */ \ No newline at end of file diff --git a/lib/timer.cpp b/lib/timer.cpp new file mode 100644 index 0000000..b9ecd8d --- /dev/null +++ b/lib/timer.cpp @@ -0,0 +1,104 @@ +#define F_CPU 16000000UL // 16 MHz + +// Calculate the value needed for +// the CTC match value in OCR1A. +#define CTC_MATCH_OVERFLOW ((F_CPU / 1000) / 8) + +#include +#include +#include +volatile unsigned long timer1_millis; +void timer1_init() +{ + // clear to compar (CTC) mode, Clock/8 + TCCR1B |= (1 << WGM12) | (1 << CS11); + + + OCR1AH = (CTC_MATCH_OVERFLOW >> 8); + OCR1AL = CTC_MATCH_OVERFLOW; + + // Activation du mode comparaison + TIMSK1 |= (1 << OCIE1A); + + sei(); + +} +void interup_1hz_init()//DS1307 +{ + EICRA |= 1< +#include + +#include "timer.h" +volatile unsigned long us = 0; +volatile unsigned long us_s = 0; +volatile unsigned long int s = 0; +#define calibration 1; +void timer1_init() +{ + TCCR1A = 0x00; //Désactive les comparateur + Mode normal + TCCR1B = 0x00;//Mise a zero de toutes les valeurs + us = 0; + s = 0; + TCNT1 = 0x0000; + /* + Horloge à 16Mhz + 1 période = 62.5ns + clk/8 = 0.5µs débordement à 32768 µs + clk/64 = 4µs débordement à 262144 µs + clk/256 = 16µs débordement à 1 048 576µs + clk/1024 = 64µs débordement à 4 194 304µs + Le prescale sera à 8 + * + TCCR1B |= (1< +#include +#include +volatile unsigned long timer1_millis; +void timer1_init() +{ + // CTC mode, Clock/8 + TCCR1B |= (1 << WGM12) | (1 << CS11); + + // Load the high byte, then the low byte + // into the output compare + OCR1AH = (CTC_MATCH_OVERFLOW >> 8); + OCR1AL = CTC_MATCH_OVERFLOW; + + // Enable the compare match interrupt + TIMSK1 |= (1 << OCIE1A); + + // Now enable global interrupts + sei(); + +} +void interup_1hz_init() +{ + EICRA |= 1< +#include + +#include "timer.h" +volatile unsigned long us = 0; +volatile unsigned long us_s = 0; +volatile unsigned long int s = 0; +#define calibration 1; +void timer1_init() +{ + TCCR1A = 0x00; //Désactive les comparateur + Mode normal + TCCR1B = 0x00;//Mise a zero de toutes les valeurs + us = 0; + s = 0; + TCNT1 = 0x0000; + /* + Horloge à 16Mhz + 1 période = 62.5ns + clk/8 = 0.5µs débordement à 32768 µs + clk/64 = 4µs débordement à 262144 µs + clk/256 = 16µs débordement à 1 048 576µs + clk/1024 = 64µs débordement à 4 194 304µs + Le prescale sera à 8 + * + TCCR1B |= (1< http://jump.to/fleury +File: $Id: uart.c,v 1.6.2.1 2007/07/01 11:14:38 peter Exp $ +Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher +Hardware: any AVR with built-in UART, +License: GNU General Public License + +DESCRIPTION: + An interrupt is generated when the UART has finished transmitting or + receiving a byte. The interrupt handling routines use circular buffers + for buffering received and transmitted data. + + The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define + the buffer size in bytes. Note that these variables must be a + power of 2. + +USAGE: + Refere to the header file uart.h for a description of the routines. + See also example test_uart.c. + +NOTES: + Based on Atmel Application Note AVR306 + +LICENSE: + Copyright (C) 2006 Peter Fleury + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +*************************************************************************/ + +/************************************************************************ +uart_available, uart_flush, uart1_available, and uart1_flush functions +were adapted from the Arduino HardwareSerial.h library by Tim Sharpe on +11 Jan 2009. The license info for HardwareSerial.h is as follows: + + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis +************************************************************************/ + +/************************************************************************ +Changelog for modifications made by Tim Sharpe, starting with the current + library version on his Web site as of 05/01/2009. + +Date Description +========================================================================= +05/11/2009 Changed all existing UARTx_RECEIVE_INTERRUPT and UARTx_TRANSMIT_INTERRUPT + macros to use the "_vect" format introduced in AVR-Libc + v1.4.0. Had to split the 3290 and 6490 out of their existing + macro due to an inconsistency in the UART0_RECEIVE_INTERRUPT + vector name (seems like a typo: USART_RX_vect for the 3290/6490 + vice USART0_RX_vect for the others in the macro). + Verified all existing macro register names against the device + header files in AVR-Libc v1.6.6 to catch any inconsistencies. +05/12/2009 Added support for 48P, 88P, 168P, and 328P by adding them to the + existing 48/88/168 macro. + Added Arduino-style available() and flush() functions for both + supported UARTs. Really wanted to keep them out of the library, so + that it would be as close as possible to Peter Fleury's original + library, but has scoping issues accessing internal variables from + another program. Go C! +05/13/2009 Changed Interrupt Service Routine label from the old "SIGNAL" to + the "ISR" format introduced in AVR-Libc v1.4.0. + +************************************************************************/ + +#include +#include +#include +#include "uart.h" + + +/* + * constants and macros + */ + +/* size of RX/TX buffers */ +#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1) +#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1) + +#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK ) +#error RX buffer size is not a power of 2 +#endif +#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK ) +#error TX buffer size is not a power of 2 +#endif + +#if defined(__AVR_AT90S2313__) \ + || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \ + || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \ + || defined(__AVR_ATmega103__) + /* old AVR classic or ATmega103 with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT UART_RX_vect + #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect + #define UART0_STATUS USR + #define UART0_CONTROL UCR + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__) + /* old AVR classic with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT UART_RX_vect + #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ + || defined(__AVR_ATmega323__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT USART_RXC_vect + #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT USART_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega163__) + /* ATmega163 with one UART */ + #define ATMEGA_UART + #define UART0_RECEIVE_INTERRUPT UART_RX_vect + #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega162__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT USART0_RXC_vect + #define UART1_RECEIVE_INTERRUPT USART1_RXC_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART1_RECEIVE_INTERRUPT USART1_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega161__) + /* ATmega with UART */ + #error "AVR ATmega161 currently not supported by this libaray !" +#elif defined(__AVR_ATmega169__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || \ + defined(__AVR_ATmega48P__) ||defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || \ + defined(__AVR_ATmega328P__) + /* TLS-Added 48P/88P/168P/328P */ + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT USART_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATtiny2313__) + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT USART_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega329__) ||\ + defined(__AVR_ATmega649__) ||\ + defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\ + defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__) + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATmega3290__) ||\ + defined(__AVR_ATmega6490__) || + /* TLS-Separated these two from the previous group because of inconsistency in the USART_RX */ + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT USART_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega640__) +/* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART1_RECEIVE_INTERRUPT USART0_UDRE_vect + #define UART0_TRANSMIT_INTERRUPT USART1_RX_vect + #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega644__) + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT USART0_RX_vect + #define UART1_RECEIVE_INTERRUPT USART0_UDRE_vect + #define UART0_TRANSMIT_INTERRUPT USART1_RX_vect + #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#else + #error "no UART definition for MCU available" +#endif + + +/* + * module global variables + */ +static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART_TxHead; +static volatile unsigned char UART_TxTail; +static volatile unsigned char UART_RxHead; +static volatile unsigned char UART_RxTail; +static volatile unsigned char UART_LastRxError; + +#if defined( ATMEGA_USART1 ) +static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART1_TxHead; +static volatile unsigned char UART1_TxTail; +static volatile unsigned char UART1_RxHead; +static volatile unsigned char UART1_RxTail; +static volatile unsigned char UART1_LastRxError; +#endif + + + +ISR(UART0_RECEIVE_INTERRUPT) +/************************************************************************* +Function: UART Receive Complete interrupt +Purpose: called when the UART has received a character +**************************************************************************/ +{ + unsigned char tmphead; + unsigned char data; + unsigned char usr; + unsigned char lastRxError; + + + /* read UART status register and UART data register */ + usr = UART0_STATUS; + data = UART0_DATA; + + /* */ +#if defined( AT90_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART0 ) + lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) ); +#elif defined ( ATMEGA_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#endif + + /* calculate buffer index */ + tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK; + + if ( tmphead == UART_RxTail ) { + /* error: receive buffer overflow */ + lastRxError = UART_BUFFER_OVERFLOW >> 8; + }else{ + /* store new index */ + UART_RxHead = tmphead; + /* store received data in buffer */ + UART_RxBuf[tmphead] = data; + } + UART_LastRxError = lastRxError; +} + + +ISR(UART0_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART Data Register Empty interrupt +Purpose: called when the UART is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART_TxHead != UART_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK; + UART_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART0_CONTROL &= ~_BV(UART0_UDRIE); + } +} + + +/************************************************************************* +Function: uart_init() +Purpose: initialize UART and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart_init(unsigned int baudrate) +{ + UART_TxHead = 0; + UART_TxTail = 0; + UART_RxHead = 0; + UART_RxTail = 0; + +#if defined( AT90_UART ) + /* set baud rate */ + UBRR = (unsigned char)baudrate; + + /* enable UART receiver and transmmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN); + +#elif defined (ATMEGA_USART) + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART0_STATUS = (1<>8); + UBRRL = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<>8); + UBRR0L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE0)|(1<>8); + UBRR = (unsigned char) baudrate; + + /* Enable UART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<> 8; + }else{ + /* store new index */ + UART1_RxHead = tmphead; + /* store received data in buffer */ + UART1_RxBuf[tmphead] = data; + } + UART1_LastRxError = lastRxError; +} + + +SIGNAL(UART1_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART1 Data Register Empty interrupt +Purpose: called when the UART1 is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART1_TxHead != UART1_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK; + UART1_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART1_CONTROL &= ~_BV(UART1_UDRIE); + } +} + + +/************************************************************************* +Function: uart1_init() +Purpose: initialize UART1 and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart1_init(unsigned int baudrate) +{ + UART1_TxHead = 0; + UART1_TxTail = 0; + UART1_RxHead = 0; + UART1_RxTail = 0; + + + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART1_STATUS = (1<>8); + UBRR1L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART1_CONTROL = _BV(RXCIE1)|(1< http://jump.to/fleury +File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $ +Software: AVR-GCC 4.1, AVR Libc 1.4 +Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz +License: GNU General Public License +Usage: see Doxygen manual + +LICENSE: + Copyright (C) 2006 Peter Fleury + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +************************************************************************/ + +/************************************************************************ +uart_available, uart_flush, uart1_available, and uart1_flush functions +were adapted from the Arduino HardwareSerial.h library by Tim Sharpe on +11 Jan 2009. The license info for HardwareSerial.h is as follows: + + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +************************************************************************/ + +/************************************************************************ +Changelog for modifications made by Tim Sharpe, starting with the current + library version on his Web site as of 05/01/2009. + +Date Description +========================================================================= +05/12/2009 Added Arduino-style available() and flush() functions for both + supported UARTs. Really wanted to keep them out of the library, so + that it would be as close as possible to Peter Fleury's original + library, but has scoping issues accessing internal variables from + another program. Go C! + +************************************************************************/ + +/** + * @defgroup pfleury_uart UART Library + * @code #include @endcode + * + * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers. + * + * This library can be used to transmit and receive data through the built in UART. + * + * An interrupt is generated when the UART has finished transmitting or + * receiving a byte. The interrupt handling routines use circular buffers + * for buffering received and transmitted data. + * + * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define + * the size of the circular buffers in bytes. Note that these constants must be a power of 2. + * You may need to adapt this constants to your target and your application by adding + * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile. + * + * @note Based on Atmel Application Note AVR306 + * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury + */ + +/**@{*/ + + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 +#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" +#endif + + +/* +** constants and macros +*/ + +/** @brief UART Baudrate Expression + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1) + +/** @brief UART Baudrate Expression for ATmega double speed mode + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000) + + +/** Size of the circular receive buffer, must be power of 2 */ +#ifndef UART_RX_BUFFER_SIZE +#define UART_RX_BUFFER_SIZE 32 +#endif +/** Size of the circular transmit buffer, must be power of 2 */ +#ifndef UART_TX_BUFFER_SIZE +#define UART_TX_BUFFER_SIZE 32 +#endif + +/* test if the size of the circular buffers fits into SRAM */ +#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) ) +#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM" +#endif + +/* +** high byte error return code of uart_getc() +*/ +#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */ +#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */ +#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */ +#define UART_NO_DATA 0x0100 /* no receive data available */ + + +/* +** function prototypes +*/ + +/** + @brief Initialize UART and set baudrate + @param baudrate Specify baudrate using macro UART_BAUD_SELECT() + @return none +*/ +extern void uart_init(unsigned int baudrate); + + +/** + * @brief Get received byte from ringbuffer + * + * Returns in the lower byte the received character and in the + * higher byte the last receive error. + * UART_NO_DATA is returned when no data is available. + * + * @param void + * @return lower byte: received byte from ringbuffer + * @return higher byte: last receive status + * - \b 0 successfully received data from UART + * - \b UART_NO_DATA + *
no receive data available + * - \b UART_BUFFER_OVERFLOW + *
Receive ringbuffer overflow. + * We are not reading the receive buffer fast enough, + * one or more received character have been dropped + * - \b UART_OVERRUN_ERROR + *
Overrun condition by UART. + * A character already present in the UART UDR register was + * not read by the interrupt handler before the next character arrived, + * one or more received characters have been dropped. + * - \b UART_FRAME_ERROR + *
Framing Error by UART + */ +extern unsigned int uart_getc(void); + + +/** + * @brief Put byte to ringbuffer for transmitting via UART + * @param data byte to be transmitted + * @return none + */ +extern void uart_putc(unsigned char data); + + +/** + * @brief Put string to ringbuffer for transmitting via UART + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s string to be transmitted + * @return none + */ +extern void uart_puts(const char *s ); + + +/** + * @brief Put string from program memory to ringbuffer for transmitting via UART. + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s program memory string to be transmitted + * @return none + * @see uart_puts_P + */ +extern void uart_puts_p(const char *s ); + +/** + * @brief Macro to automatically put a string constant into program memory + */ +#define uart_puts_P(__s) uart_puts_p(PSTR(__s)) + +/** + * @brief Return number of bytes waiting in the receive buffer + * @param none + * @return bytes waiting in the receive buffer + */ +extern int uart_available(void); + +/** + * @brief Flush bytes waiting in receive buffer + * @param none + * @return none + */ +extern void uart_flush(void); + + +/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */ +extern void uart1_init(unsigned int baudrate); +/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */ +extern unsigned int uart1_getc(void); +/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */ +extern void uart1_putc(unsigned char data); +/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */ +extern void uart1_puts(const char *s ); +/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */ +extern void uart1_puts_p(const char *s ); +/** @brief Macro to automatically put a string constant into program memory */ +#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s)) +/** @brief Return number of bytes waiting in the receive buffer */ +extern int uart1_available(void); +/** @brief Flush bytes waiting in receive buffer */ +extern void uart1_flush(void); + +/**@}*/ + + +#endif // UART_H +