first commit

This commit is contained in:
Adrien VAN DAMME 2017-02-05 12:05:32 +01:00
commit f37d007971
56 changed files with 9973 additions and 0 deletions

222
Debug/Makefile Normal file
View File

@ -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"

49
Debug/Nixie clock.d Normal file
View File

@ -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:

1
Debug/Nixie clock.eep Normal file
View File

@ -0,0 +1 @@
:00000001FF

BIN
Debug/Nixie clock.elf Normal file

Binary file not shown.

364
Debug/Nixie clock.hex Normal file
View File

@ -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

4291
Debug/Nixie clock.lss Normal file

File diff suppressed because it is too large Load Diff

844
Debug/Nixie clock.map Normal file
View File

@ -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

BIN
Debug/Nixie clock.o Normal file

Binary file not shown.

365
Debug/Nixie clock.srec Normal file
View File

@ -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

53
Debug/fonction.d Normal file
View File

@ -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:

BIN
Debug/fonction.o Normal file

Binary file not shown.

63
Debug/lib/DCF77.d Normal file
View File

@ -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:

BIN
Debug/lib/DCF77.o Normal file

Binary file not shown.

46
Debug/lib/DS1307.d Normal file
View File

@ -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:

BIN
Debug/lib/DS1307.o Normal file

Binary file not shown.

64
Debug/lib/LCD.d Normal file
View File

@ -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:

BIN
Debug/lib/LCD.o Normal file

Binary file not shown.

46
Debug/lib/UART.d Normal file
View File

@ -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:

BIN
Debug/lib/UART.o Normal file

Binary file not shown.

46
Debug/lib/hc74595.d Normal file
View File

@ -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:

BIN
Debug/lib/hc74595.o Normal file

Binary file not shown.

40
Debug/lib/timer.d Normal file
View File

@ -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:

BIN
Debug/lib/timer.o Normal file

Binary file not shown.

2
Debug/make4656-1.bat Normal file
View File

@ -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"

2
Debug/make5444-1.bat Normal file
View File

@ -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

2
Debug/make5444-2.bat Normal file
View File

@ -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

2
Debug/make6940-1.bat Normal file
View File

@ -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"

2
Debug/make6940-2.bat Normal file
View File

@ -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

2
Debug/make6940-3.bat Normal file
View File

@ -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"

2
Debug/make6940-4.bat Normal file
View File

@ -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"

20
Debug/makedep.mk Normal file
View File

@ -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

24
Nixie clock.cpp Normal file
View File

@ -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 <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#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();
}
}

196
Nixie clock.cppproj Normal file
View File

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>6.1</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.CPP</ToolchainName>
<ProjectGuid>{f71abc8f-40b1-4ec1-b079-ec2cf2114afb}</ProjectGuid>
<avrdevice>ATmega328P</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>CPP</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>Nixie clock</AssemblyName>
<Name>Nixie clock</Name>
<RootNamespace>Nixie clock</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue>exception_table</OverrideVtorValue>
<eraseonlaunchrule>0</eraseonlaunchrule>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress>0x20000000</RamSnippetAddress>
<CacheFlash>true</CacheFlash>
<UncachedRange />
<BootSegment>2</BootSegment>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.8.1" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
<avrtoolinterface />
<avrtool>com.atmel.avrdbg.tool.simulator</avrtool>
<com_atmel_avrdbg_tool_simulator>
<ToolType>com.atmel.avrdbg.tool.simulator</ToolType>
<ToolName>Simulator</ToolName>
<ToolNumber>
</ToolNumber>
<StimuliFile>
</StimuliFile>
<Channel>
<host>127.0.0.1</host>
<port>64002</port>
<ssl>False</ssl>
</Channel>
<ToolOptions>
<InterfaceProperties>
<JtagEnableExtResetOnStartSession>false</JtagEnableExtResetOnStartSession>
</InterfaceProperties>
<InterfaceName>
</InterfaceName>
</ToolOptions>
</com_atmel_avrdbg_tool_simulator>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGccCpp>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcccpp.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcccpp.compiler.symbols.DefSymbols>
<avrgcccpp.compiler.optimization.level>Optimize for size (-Os)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
<avrgcccpp.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcccpp.linker.libraries.Libraries>
<avrgcccpp.linker.memorysettings.Comment>&lt;segmentname&gt;=&lt;address&gt;, for example .boot=0xff</avrgcccpp.linker.memorysettings.Comment>
</AvrGccCpp>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGccCpp>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcccpp.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcccpp.compiler.symbols.DefSymbols>
<avrgcccpp.compiler.optimization.level>Optimize (-O1)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcccpp.compiler.optimization.DebugLevel>Default (-g2)</avrgcccpp.compiler.optimization.DebugLevel>
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
<avrgcccpp.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcccpp.linker.libraries.Libraries>
<avrgcccpp.linker.memorysettings.Comment>&lt;segmentname&gt;=&lt;address&gt;, for example .boot=0xff</avrgcccpp.linker.memorysettings.Comment>
<avrgcccpp.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcccpp.assembler.debugging.DebugLevel>
</AvrGccCpp>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="fonction.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="fonction.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\LCD.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\LCD.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\DCF77.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\DS1307.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\hc74595.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\hc74595.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\DCF77.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\DS1307.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\timer.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\timer.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\UART.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="lib\UART.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Nixie clock.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Nixie clock.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="lib" />
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>

24
Nixie clock.cpp~ Normal file
View File

@ -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 <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#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();
}
}

17
Nixie clock.h Normal file
View File

@ -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_ */

537
fonction.cpp Normal file
View File

@ -0,0 +1,537 @@
/*
* fonction.cpp
*
* Created: 19/12/2013 14:18:08
* Author: Adrien
*/
#define F_CPU 16000000UL //Fréquence horloge à 16Mhz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
/* Chargement des librairie */
#include "./lib/hc74595.h"
#include "./lib/DS1307.h"
#include "lib/UART.h"
/* Config des pin */
#define LED_RED 1<<PINB3 /*Ici direct en Hex*/
#define LED_GREEN 1<<PINB4 /*Ici direct en Hex*/
#define LED_BLUE 1<<PINB5 /*Ici direct en Hex*/
#define SHIFT_REGISTER_CLK 7 /*Ici pour config donc pas en hex*/
#define SHIFT_REGISTER_CONFIRM 5 /*Ici pour config donc pas en hex*/
#define SHIFT_REGISTER_DATA 6 /*Ici pour config donc pas en hex*/
#define SHIFT_REGISTER_PORT 123
/*BP sur PORT B*/
#define BP_PLUS 2
#define BP_MOINS 1
#define BP_CONF 0
/*Pin Enable du Shift Register sur PORT C*/
#define SR_SECONDE 2
#define SR_MINUTE 1
#define SR_HEUR 0
#define SR_JOURS 0
#define SR_MOIS 1
#define SR_ANNEE 2
#define tmps_max_bp_plus_moins 1000 //Temps avent que le script continue sa route lorsque le bp reste enfoncé
#define tmps_clignotement 100 //Temps du clignotements (/!\ Eteint les registe à décalage => 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<<PIND2);
DDRC &= LOW(1<<PORTC5|1<<PORTC4);
DDRB &= LOW(1<<BP_CONF|1<<BP_MOINS|1<<BP_PLUS); //Config des entrée pour les bp
DDRC |= 1<<SR_HEUR|1<<SR_MINUTE|1<<SR_SECONDE; //Config des sortie Pour les pin enable
PORTC &= LOW(1<<SR_HEUR|1<<SR_MINUTE|1<<SR_SECONDE); //Active tous les registre a décalage
DDRB |= LED_RED | LED_GREEN | LED_BLUE ; //Config des sortie pour les LED
PORTB &= LOW(LED_RED|LED_GREEN|LED_BLUE); //Mise à 0 de toutes les LED
if(rtc.r_seconde() == 0x80)
rtc.w_seconde(0x00);
}
void affichage_heur()
{
uint8_t 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 = 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<<BP_PLUS)) || usart == 0XC1)
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_delay_ms(1);
if(bcm_rgb_actif == 0 && (PINB&mask) == 0 && 1==2)
{
bcm_rgb_actif = 1;
}
else
{
bcm_rgb_actif = 0;
curent_couleur = ((PINB & mask)+(LED_RED));
if(curent_couleur > 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<<BP_MOINS)) || usart == 0XC0)
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_MOINS)) ; b++)
_delay_ms(1);
if(bcm_rgb_actif == 0 && (PINB&mask) == 0 && 1==2)
{
bcm_rgb_actif = 1;
}
else
{
bcm_rgb_actif = 0;
if(PINB & mask == 0)
curent_couleur = mask;
curent_couleur = ((PINB & mask)-(LED_RED));
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);
}
}
}
void bouton() //Gestion des BP pour configurer l'heur
{
if (PINB & (1<<BP_CONF)) //Si le BP Conf est activé
{
while(PINB & (1<<BP_CONF)) //Attente que le BP sois relaché
_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
{
if(a >= (tmps_clignotement*2))
a = 0;
if (PINB & (1<<BP_CONF))
{
while(PINB & (1<<BP_CONF))
_delay_ms(1);
pousse++;
}
switch(pousse)
{
case 1: //Config des secondes
if(a > tmps_clignotement) //Clignotement
clignotement(SR_SECONDE, false);
else
affichage_heur();
if((PINB & (1<<BP_PLUS)) || PINB & (1<<BP_MOINS))//Mise à 00 si + ou - est actionné
rtc.w_seconde(0x00);
break;
case 2: //Config des minutes
if(a > tmps_clignotement) //Clignotement
clignotement(SR_MINUTE, false);
else
affichage_heur();
if(PINB & (1<<BP_PLUS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_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
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<<BP_MOINS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_MOINS)) ; b++)
_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;
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<<BP_PLUS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_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;
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<<BP_MOINS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_MOINS)); b++)
_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
curent_heur = ((((curent_heur&0xF0)>>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<<SR_HEUR);
if(a > tmps_clignotement) //Clignotement
clignotement(SR_JOURS, true);
else
affichage_date();
if(PINB & (1<<BP_PLUS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_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
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<<BP_MOINS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1<<BP_MOINS); b++)
_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
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<<BP_PLUS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_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
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<<BP_MOINS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1<<BP_MOINS); b++)
_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
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<<BP_PLUS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & (1<<BP_PLUS)); b++)
_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
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<<BP_MOINS))
{
for(int b = 0 ; b < tmps_max_bp_plus_moins && (PINB & 1<<BP_MOINS); b++)
_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
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;
rtc.w_year(curent_year); //Met à jour le DS1307
}
break;
}
PORTC &= LOW(1<<SR_SECONDE|1<<SR_MINUTE|1<<SR_HEUR); //Active tous les registre à décalage
_delay_ms(1); //Attente de 1ms pour le comptage de la variable a
}
}
}
void uart_ds1307()
{
if(usart == 0xCF)
{
bool cfg = true;
for(int a = 0; cfg ; a++)
{
usart = USART_Receive();
if(a>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;
}
}
}
}

26
fonction.h Normal file
View File

@ -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_ */

138
lib/DCF77 - Copie.cpp Normal file
View File

@ -0,0 +1,138 @@
/*
* DCF77.cpp
*
* Created: 19/12/2013 14:06:30
* Author: Adrien
*/
#include "DCF77.h"
#include "timer.h"
#include <avr/io.h>
#include <avr/interrupt.h>
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<<PIND2;
EICRA |= 1<<ISC00; //Interuption a chaque changement d'état de INT0
EIMSK |= 1<<INT0; //Activation de l'interuption INT0
sei();
}
void dcf77::stop_capture()
{
EIMSK &= ~(1<<INT0);
dcf77_flag_start = 0;
dcf77_flag_decode = 0;
dcf77_bit_count = 0;
}
bool dcf77::decode()
{
int decodage_bit_n = 0;//Variable pour voir ou est le decodage des bits
int place_bit = 0;//Pour savoir ou est placé le bit
for (int z = 0 ; z <= 6 ; z++) //Passage au crible des tableau
{
int place_bit = 0;//Pour savoir ou est placé le bit
for(int y= 8 ; y >= 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<<PIND2))//Si c'est au niveau haut
{
time_high = millis(); //Démarage du comptage du temps haut
time_low = millis() - time_low; //Calcul du Temps bas
if(dcf77_flag_start && dcf77_bit_count <= 59) //Démarage de la démodulation si toute les condition sont OK
{
dcf77_flag_decode = 0; //Anonce que le decodage ne peut pas être éfectué
int bit;
if(time_low <= 100 && time_low != 0) //Si le temp bas est <= 100ms le bit est à 0
bit = 0;
else if(time_low <= 200 && time_low != 0) //Si le temp bas est <= 200ms le bit est à 1
bit = 1;
else //ereur
{
dcf77_flag_start = 0;
return;
}
if(dcf77_bit_count < 8)
{
dcf77_bits_capture[0] = (dcf77_bits_capture[0]<<1) | bit;
}
else if (dcf77_bit_count < 16)
{
dcf77_bits_capture[1] = (dcf77_bits_capture[1]<<1) | bit;
}
else if (dcf77_bit_count < 24)
{
dcf77_bits_capture[2] = (dcf77_bits_capture[2]<<1) | bit;
}
else if (dcf77_bit_count < 32)
{
dcf77_bits_capture[3] = (dcf77_bits_capture[3]<<1) | bit;
}
else if (dcf77_bit_count < 40)
{
dcf77_bits_capture[4] = (dcf77_bits_capture[4]<<1) | bit;
}
else if (dcf77_bit_count < 48)
{
dcf77_bits_capture[5] = (dcf77_bits_capture[5]<<1) | bit;
}
else if (dcf77_bit_count < 56)
{
dcf77_bits_capture[6] = (dcf77_bits_capture[6]<<1) | bit;
}
dcf77_bit_count++;
}
else if(dcf77_bit_count > 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;
}
}

39
lib/DCF77 - Copie.h Normal file
View File

@ -0,0 +1,39 @@
/*
* DCF77.h
*
* Created: 22/12/2013 15:47:27
* Author: Adrien
*/
#ifndef DCF77_H_
#define DCF77_H_
#include <stdint.h>
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_ */

211
lib/DCF77.cpp Normal file
View File

@ -0,0 +1,211 @@
/*
* DCF77.cpp
*
* Created: 19/12/2013 14:06:30
* Author: Adrien
*/
#include "DCF77.h"
#include "timer.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>
#include <util/delay.h>
#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<<PINB5;
timer1_init();
dcf77_flag_start = 0;
DDRD &= ~(1<<PIND2); //PIND2 en entrée
EICRA = 1<<ISC00; //Interuption a chaque changement d'état de INT0
EIMSK |= 1<<INT0; //Activation de l'interuption INT0
sei(); //Activation des interuption en générale
}
void dcf77::stop_capture()
{
EIMSK &= ~(1<<INT0); //Désactive l'interuption
dcf77_flag_start = 0;
dcf77_bit_count = 0;
cli();
}
void dcf77::hi()
{
time_check = millis() - time_low_dcf77;
if( time_check >= temps_bas_min || time_low_dcf77 == 0)
{
PORTB |= 1<<PINB5; //Led de Debug à 1
parasite_flag = false;
time_high_dcf77 = millis(); //Démarage du comptage du temps haut
time_low_dcf77 = millis() - time_low_dcf77; //Calcul du Temps bas
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;
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<<PINB5);//Led de debug à 0
parasite_flag = false;
time_high_dcf77 = millis() - time_high_dcf77; //Calcul du temps Haut
time_low_dcf77 = millis(); //Démarage du comptage du temps bas
if(time_high_dcf77 > 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))>>PIND2))//Si c'est au niveau haut
{
atc_.hi();
}
else //Passage au niveau bas
{
atc_.lo();
}
}
}

211
lib/DCF77.cpp~ Normal file
View File

@ -0,0 +1,211 @@
/*
* DCF77.cpp
*
* Created: 19/12/2013 14:06:30
* Author: Adrien
*/
#include "DCF77.h"
#include "timer.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>
#include <util/delay.h>
#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<<PINB5;
timer1_init();
dcf77_flag_start = 0;
DDRD &= ~(1<<PIND2); //PIND2 en entrée
EICRA = 1<<ISC00; //Interuption a chaque changement d'état de INT0
EIMSK |= 1<<INT0; //Activation de l'interuption INT0
sei(); //Activation des interuption en générale
}
void dcf77::stop_capture()
{
EIMSK &= ~(1<<INT0); //Désactive l'interuption
dcf77_flag_start = 0;
dcf77_bit_count = 0;
cli();
}
void dcf77::hi()
{
time_check = millis() - time_low_dcf77;
if( time_check >= temps_bas_min || time_low_dcf77 == 0)
{
PORTB |= 1<<PINB5; //Led de Debug à 1
parasite_flag = false;
time_high_dcf77 = millis(); //Démarage du comptage du temps haut
time_low_dcf77 = millis() - time_low_dcf77; //Calcul du Temps bas
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;
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<<PINB5);//Led de debug à 0
parasite_flag = false;
time_high_dcf77 = millis() - time_high_dcf77; //Calcul du temps Haut
time_low_dcf77 = millis(); //Démarage du comptage du temps bas
if(time_high_dcf77 > 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))>>PIND2))//Si c'est au niveau haut
{
atc_.hi();
}
else //Passage au niveau bas
{
atc_.lo();
}
}
}

52
lib/DCF77.h Normal file
View File

@ -0,0 +1,52 @@
/*
* DCF77.h
*
* Created: 22/12/2013 15:47:27
* Author: Adrien
*/
#ifndef DCF77_H_
#define DCF77_H_
#include <stdint.h>
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_ */

190
lib/DS1307.cpp Normal file
View File

@ -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 <avr/io.h>
#include <util/delay.h>
#include "DS1307.h"
#define adresse_DS1307 0xD0 //Adresse I2C du DS1307
#define LED_RED 1<<PINB3 /*Ici direct en Hex*/
#define LED_GREEN 1<<PINB4 /*Ici direct en Hex*/
#define LED_BLUE 1<<PINB5 /*Ici direct en Hex*/
ds1307::ds1307()
{
iic_error = false;
}
void ds1307::write(int adresse_m, uint8_t data)
{
//SCK Config à 80Khz (MAX DS1307 = 100Khz)
TWBR = 0x5C; //Bit rate division à 92
TWSR &= ~((1<<TWPS1)|(1<<TWPS0)) ; // Prescale à 1
//I2C Init
TWCR = (1<<TWEN); //Active l'I2C
TWCR = (1<<TWEN)|(1<<TWSTA)|(1<<TWINT); //Envoi la condiont de démarage
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//DS1307 adresse write
TWDR = adresse_DS1307; //Inscrit l'adresse, Mode write
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//Adresse memoir send
TWDR = adresse_m; //Inscrit l'adresse mémoire
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//Data send
TWDR = data; //Inscrit les donnée
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi les donnée
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//Stop condition
TWCR = (1<<TWEN)|(1<<TWINT)|(1<<TWSTO);
while((TWCR&(1<<TWSTO)))
{
}
TWCR &= (~(1<<TWEN));
}
uint8_t ds1307::read(uint8_t adresse_m)
{
TWBR = 0x5C; //Bit rate division à 92
TWSR &= ~((1<<TWPS1)|(1<<TWPS0)); // Prescale à 1
//I2C Init
TWCR = (1<<TWEN); //Active l'I2C
TWCR = (1<<TWEN)|(1<<TWSTA)|(1<<TWINT); //Envoi la condiont de démarage
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//DS1307 adresse write
TWDR = adresse_DS1307; //Inscrit l'adresse, Mode write
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//DS1307 adresse mem
TWDR = adresse_m; //Inscrit l'adresse mémoir
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//Restart condition
TWCR = (1<<TWEN)|(1<<TWSTA)|(1<<TWINT); //Envoi la condiont de démarage
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//DS1307 adresse + read
TWDR = adresse_DS1307|0x01; //Inscrit l'adresse + Mode read
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
{
}
//Receive
TWCR = (1<<TWEN)|(1<<TWINT); //Demande de réception
while(!(TWCR&(1<<TWINT))) //Attente de la réception
{
}
uint8_t data = TWDR;
//Stop condition
TWCR = (1<<TWEN)|(1<<TWINT)|(1<<TWSTO);
while((TWCR&(1<<TWSTO)))
{
}
TWCR&=(~(1<<TWEN));
return data;
}
uint8_t ds1307::r_seconde()
{
return ds1307::read(0x00);
}
uint8_t ds1307::r_minute()
{
return ds1307::read(0x01);
}
uint8_t ds1307::r_heur()
{
return ds1307::read(0x02);
}
uint8_t ds1307::r_jour()
{
return ds1307::read(0x04);
}
uint8_t ds1307::r_moi()
{
return ds1307::read(0x05);
}
uint8_t ds1307::r_year()
{
return ds1307::read(0x06);
}
void ds1307::w_seconde(uint8_t data)
{
ds1307::write(0x00, data);
}
void ds1307::w_minute(uint8_t data)
{
ds1307::write(0x01, data);
}
void ds1307::w_heur(uint8_t data, uint8_t pm)
{
if(pm)
data |= (1<<6);
else
data &= ~(1<<6);
ds1307::write(0x02, data);
}
void ds1307::w_date(uint8_t data)
{
ds1307::write(0x04, data);
}
void ds1307::w_moi(uint8_t data)
{
ds1307::write(0x05, data);
}
void ds1307::w_year(uint8_t data)
{
ds1307::write(0x06, data);
}

37
lib/DS1307.h Normal file
View File

@ -0,0 +1,37 @@
/*
* DS1307.h
*
* Created: 22/12/2013 15:28:08
* Author: Adrien
*/
#ifndef DS1307_H_
#define DS1307_H_
#include <stdint.h>
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_ */

170
lib/LCD.cpp Normal file
View File

@ -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 <stdlib.h>
#include <stdio.h>
#include <avr/delay.h>
#include <avr/io.h>
#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<<TWPS0) & (1<<TWPS1))); //TWPS à 0
//I2C Init
TWCR = (1<<TWEN); //Active l'I2C
TWCR = (1<<TWEN)|(1<<TWSTA)|(1<<TWINT); //Envoi la condiont de démarage
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
;
//DS1307 adresse write
TWDR = adresse_DS1307|read ; //Inscrit l'adresse, Mode
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi l'adresse
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
;
//Data send
if(!read) //Si écriture
TWDR = data; //Inscrit les donnée
TWCR = (1<<TWEN)|(1<<TWINT); //Envoi les donnée
while(!(TWCR&(1<<TWINT))) //Attente de l'envoi
;
if(read) //Si lecture
read_data = TWDR;
//Stop condition
TWCR = (1<<TWEN)|(1<<TWINT)|(1<<TWSTO);
while((TWCR&(1<<TWSTO)))
;
_delay_ms(1);
TWCR &= (~(1<<TWEN));
if(read)
return read_data;
}
bool LCD::check_busy_flag()
{
PCF8574::send(RW, 0);
uint8_t bf = PCF8574::send(RW, 1)&D7;
//_delay_ms(10000);
if((bf&(D7)>>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);
}

37
lib/LCD.h Normal file
View File

@ -0,0 +1,37 @@
/*
* LCD.h
*
* Created: 27/12/2013 13:32:19
* Author: Adrien
*/
#ifndef LCD_H_
#define LCD_H_
#include <stdint.h>
#include <string.h>
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_ */

37
lib/UART.cpp Normal file
View File

@ -0,0 +1,37 @@
/*
* UART.cpp
*
* Created: 31/05/2014 23:16:31
* Author: Adrien
*/
#include <avr/io.h>
#include <util/delay.h>
#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<<RXEN0)|(1<<TXEN0);
UCSR0C = ((1<<UCSZ00)|(1<<UCSZ01));
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) )
;
/* Put data into buffer, sends the data */
UDR0 = data;
}
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
if((UCSR0A & (1<<RXC0)))
return UDR0;
else
return false;
}

18
lib/UART.h Normal file
View File

@ -0,0 +1,18 @@
/*
* UART.h
*
* Created: 31/05/2014 23:16:48
* Author: Adrien
*/
#ifndef UART_H_
#define UART_H_
void USART_ini();
void USART_Transmit( unsigned char data );
unsigned char USART_Receive( void );
#endif /* UART_H_ */

186
lib/hc74595.cpp Normal file
View File

@ -0,0 +1,186 @@
/*
* _74595.cpp
*
* Created: 19/12/2013 14:06:10
* Author: Adrien
*/
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#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 <avr/io.h>
#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;
}
}
*/

27
lib/hc74595.h Normal file
View File

@ -0,0 +1,27 @@
/*
* _74hc595.h
*
* Created: 22/12/2013 15:19:47
* Author: Adrien
*/
#ifndef HC74595_H_
#define HC74595_H_
#include <stdint.h>
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_ */

104
lib/timer.cpp Normal file
View File

@ -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 <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>
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<<ISC11 | 1<< ISC10; //Configuration pour activer INT1 sur un front montant
EIMSK |= 1<<INT1; // Activation de l'interuption INT1
sei();
}
unsigned long millis ()
{
unsigned long millis_return;
// Ensure this cannot be disrupted
ATOMIC_BLOCK(ATOMIC_FORCEON) {
millis_return = timer1_millis;
}
return millis_return;
}
ISR (TIMER1_COMPA_vect)
{
timer1_millis++;
}
/*
* timer.cpp
*
* Created: 21/12/2013 15:45:30
* Author: Adrien
*
#include <avr/interrupt.h>
#include <avr/io.h>
#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<<CS12) | (0<<CS11) | (1<<CS10); //Prescale à 8
TIMSK1 = 1<<TOIE1; // Initialisation de l'interuption de débordement
sei();
}
void interup_1hz_init()
{
EICRA |= 1<<ISC11 | 1<< ISC10; //Configuration pour activer INT1 sur un front montant
EIMSK |= 1<<INT1; // Activation de l'interuption INT1
sei();
}
unsigned long int millis()
{
return (TCNT1/64)/100;
}
unsigned long int secondes()
{
return s;
}
ISR(TIMER1_OVF_vect)
{
// us += 32768; //Lors du débordement le timer est égale à (2^16)*0.5 ms
TCNT1 = 0;
}
ISR(INT1_vect)
{
s++;
}*/

106
lib/timer.cpp~ Normal file
View File

@ -0,0 +1,106 @@
#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 <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>
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<<ISC11 | 1<< ISC10; //Configuration pour activer INT1 sur un front montant
EIMSK |= 1<<INT1; // Activation de l'interuption INT1
sei();
}
unsigned long millis ()
{
unsigned long millis_return;
// Ensure this cannot be disrupted
ATOMIC_BLOCK(ATOMIC_FORCEON) {
millis_return = timer1_millis;
}
return millis_return;
}
ISR (TIMER1_COMPA_vect)
{
timer1_millis++;
}
/*
* timer.cpp
*
* Created: 21/12/2013 15:45:30
* Author: Adrien
*
#include <avr/interrupt.h>
#include <avr/io.h>
#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<<CS12) | (0<<CS11) | (1<<CS10); //Prescale à 8
TIMSK1 = 1<<TOIE1; // Initialisation de l'interuption de débordement
sei();
}
void interup_1hz_init()
{
EICRA |= 1<<ISC11 | 1<< ISC10; //Configuration pour activer INT1 sur un front montant
EIMSK |= 1<<INT1; // Activation de l'interuption INT1
sei();
}
unsigned long int millis()
{
return (TCNT1/64)/100;
}
unsigned long int secondes()
{
return s;
}
ISR(TIMER1_OVF_vect)
{
// us += 32768; //Lors du débordement le timer est égale à (2^16)*0.5 ms
TCNT1 = 0;
}
ISR(INT1_vect)
{
s++;
}*/

17
lib/timer.h Normal file
View File

@ -0,0 +1,17 @@
/*
* timer.cpp
*
* Created: 21/12/2013 15:45:27
* Author: Adrien
*/
#ifndef INTERUPTION_H_
#define INTERUPTION_H_
void timer1_init();
void interup_1hz_init();
unsigned long int millis();
unsigned long int secondes();
#endif

17
lib/timer.h~ Normal file
View File

@ -0,0 +1,17 @@
/*
* timer.cpp
*
* Created: 21/12/2013 15:45:27
* Author: Adrien
*/
#ifndef INTERUPTION_H_
#define INTERUPTION_H_
void timer1_init();
void interup_1hz_init();
unsigned long int millis();
unsigned long int secondes();
#endif

776
uart/uart.c Normal file
View File

@ -0,0 +1,776 @@
/*************************************************************************
Title: Interrupt UART library with receive/transmit circular buffers
Author: Peter Fleury <pfleury@gmx.ch> 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 <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#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<<U2X); //Enable 2x speed
baudrate &= ~0x8000;
}
UBRRH = (unsigned char)(baudrate>>8);
UBRRL = (unsigned char) baudrate;
/* Enable USART receiver and transmitter and receive complete interrupt */
UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
/* Set frame format: asynchronous, 8data, no parity, 1stop bit */
#ifdef URSEL
UCSRC = (1<<URSEL)|(3<<UCSZ0);
#else
UCSRC = (3<<UCSZ0);
#endif
#elif defined (ATMEGA_USART0 )
/* Set baud rate */
if ( baudrate & 0x8000 )
{
UART0_STATUS = (1<<U2X0); //Enable 2x speed
baudrate &= ~0x8000;
}
UBRR0H = (unsigned char)(baudrate>>8);
UBRR0L = (unsigned char) baudrate;
/* Enable USART receiver and transmitter and receive complete interrupt */
UART0_CONTROL = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
/* Set frame format: asynchronous, 8data, no parity, 1stop bit */
#ifdef URSEL0
UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
#else
UCSR0C = (3<<UCSZ00);
#endif
#elif defined ( ATMEGA_UART )
/* set baud rate */
if ( baudrate & 0x8000 )
{
UART0_STATUS = (1<<U2X); //Enable 2x speed
baudrate &= ~0x8000;
}
UBRRHI = (unsigned char)(baudrate>>8);
UBRR = (unsigned char) baudrate;
/* Enable UART receiver and transmitter and receive complete interrupt */
UART0_CONTROL = _BV(RXCIE)|(1<<RXEN)|(1<<TXEN);
#endif
}/* uart_init */
/*************************************************************************
Function: uart_getc()
Purpose: return byte from ringbuffer
Returns: lower byte: received byte from ringbuffer
higher byte: last receive error
**************************************************************************/
unsigned int uart_getc(void)
{
unsigned char tmptail;
unsigned char data;
if ( UART_RxHead == UART_RxTail ) {
return UART_NO_DATA; /* no data available */
}
/* calculate /store buffer index */
tmptail = (UART_RxTail + 1) & UART_RX_BUFFER_MASK;
UART_RxTail = tmptail;
/* get data from receive buffer */
data = UART_RxBuf[tmptail];
return (UART_LastRxError << 8) + data;
}/* uart_getc */
/*************************************************************************
Function: uart_putc()
Purpose: write byte to ringbuffer for transmitting via UART
Input: byte to be transmitted
Returns: none
**************************************************************************/
void uart_putc(unsigned char data)
{
unsigned char tmphead;
tmphead = (UART_TxHead + 1) & UART_TX_BUFFER_MASK;
while ( tmphead == UART_TxTail ){
;/* wait for free space in buffer */
}
UART_TxBuf[tmphead] = data;
UART_TxHead = tmphead;
/* enable UDRE interrupt */
UART0_CONTROL |= _BV(UART0_UDRIE);
}/* uart_putc */
/*************************************************************************
Function: uart_puts()
Purpose: transmit string to UART
Input: string to be transmitted
Returns: none
**************************************************************************/
void uart_puts(const char *s )
{
while (*s)
uart_putc(*s++);
}/* uart_puts */
/*************************************************************************
Function: uart_puts_p()
Purpose: transmit string from program memory to UART
Input: program memory string to be transmitted
Returns: none
**************************************************************************/
void uart_puts_p(const char *progmem_s )
{
register char c;
while ( (c = pgm_read_byte(progmem_s++)) )
uart_putc(c);
}/* uart_puts_p */
/*************************************************************************
Function: uart_available()
Purpose: Determine the number of bytes waiting in the receive buffer
Input: None
Returns: Integer number of bytes in the receive buffer
**************************************************************************/
int uart_available(void)
{
return (UART_RX_BUFFER_MASK + UART_RxHead - UART_RxTail) % UART_RX_BUFFER_MASK;
}/* uart_available */
/*************************************************************************
Function: uart_flush()
Purpose: Flush bytes waiting the receive buffer. Acutally ignores them.
Input: None
Returns: None
**************************************************************************/
void uart_flush(void)
{
UART_RxHead = UART_RxTail;
}/* uart_flush */
/*
* these functions are only for ATmegas with two USART
*/
#if defined( ATMEGA_USART1 )
SIGNAL(UART1_RECEIVE_INTERRUPT)
/*************************************************************************
Function: UART1 Receive Complete interrupt
Purpose: called when the UART1 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 = UART1_STATUS;
data = UART1_DATA;
/* */
lastRxError = (usr & (_BV(FE1)|_BV(DOR1)) );
/* calculate buffer index */
tmphead = ( UART1_RxHead + 1) & UART_RX_BUFFER_MASK;
if ( tmphead == UART1_RxTail ) {
/* error: receive buffer overflow */
lastRxError = UART_BUFFER_OVERFLOW >> 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<<U2X1); //Enable 2x speed
baudrate &= ~0x8000;
}
UBRR1H = (unsigned char)(baudrate>>8);
UBRR1L = (unsigned char) baudrate;
/* Enable USART receiver and transmitter and receive complete interrupt */
UART1_CONTROL = _BV(RXCIE1)|(1<<RXEN1)|(1<<TXEN1);
/* Set frame format: asynchronous, 8data, no parity, 1stop bit */
#ifdef URSEL1
UCSR1C = (1<<URSEL1)|(3<<UCSZ10);
#else
UCSR1C = (3<<UCSZ10);
#endif
}/* uart_init */
/*************************************************************************
Function: uart1_getc()
Purpose: return byte from ringbuffer
Returns: lower byte: received byte from ringbuffer
higher byte: last receive error
**************************************************************************/
unsigned int uart1_getc(void)
{
unsigned char tmptail;
unsigned char data;
if ( UART1_RxHead == UART1_RxTail ) {
return UART_NO_DATA; /* no data available */
}
/* calculate /store buffer index */
tmptail = (UART1_RxTail + 1) & UART_RX_BUFFER_MASK;
UART1_RxTail = tmptail;
/* get data from receive buffer */
data = UART1_RxBuf[tmptail];
return (UART1_LastRxError << 8) + data;
}/* uart1_getc */
/*************************************************************************
Function: uart1_putc()
Purpose: write byte to ringbuffer for transmitting via UART
Input: byte to be transmitted
Returns: none
**************************************************************************/
void uart1_putc(unsigned char data)
{
unsigned char tmphead;
tmphead = (UART1_TxHead + 1) & UART_TX_BUFFER_MASK;
while ( tmphead == UART1_TxTail ){
;/* wait for free space in buffer */
}
UART1_TxBuf[tmphead] = data;
UART1_TxHead = tmphead;
/* enable UDRE interrupt */
UART1_CONTROL |= _BV(UART1_UDRIE);
}/* uart1_putc */
/*************************************************************************
Function: uart1_puts()
Purpose: transmit string to UART1
Input: string to be transmitted
Returns: none
**************************************************************************/
void uart1_puts(const char *s )
{
while (*s)
uart1_putc(*s++);
}/* uart1_puts */
/*************************************************************************
Function: uart1_puts_p()
Purpose: transmit string from program memory to UART1
Input: program memory string to be transmitted
Returns: none
**************************************************************************/
void uart1_puts_p(const char *progmem_s )
{
register char c;
while ( (c = pgm_read_byte(progmem_s++)) )
uart1_putc(c);
}/* uart1_puts_p */
/*************************************************************************
Function: uart1_available()
Purpose: Determine the number of bytes waiting in the receive buffer
Input: None
Returns: Integer number of bytes in the receive buffer
**************************************************************************/
int uart1_available(void)
{
return (UART_RX_BUFFER_MASK + UART1_RxHead - UART1_RxTail) % UART_RX_BUFFER_MASK;
}/* uart1_available */
/*************************************************************************
Function: uart1_flush()
Purpose: Flush bytes waiting the receive buffer. Acutally ignores them.
Input: None
Returns: None
**************************************************************************/
void uart1_flush(void)
{
UART1_RxHead = UART1_RxTail;
}/* uart1_flush */
#endif

248
uart/uart.h Normal file
View File

@ -0,0 +1,248 @@
#ifndef UART_H
#define UART_H
/************************************************************************
Title: Interrupt UART library with receive/transmit circular buffers
Author: Peter Fleury <pfleury@gmx.ch> 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 <uart.h> @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
* <br>no receive data available
* - \b UART_BUFFER_OVERFLOW
* <br>Receive ringbuffer overflow.
* We are not reading the receive buffer fast enough,
* one or more received character have been dropped
* - \b UART_OVERRUN_ERROR
* <br>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
* <br>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