diff --git a/Reciver/Reciver.atsln b/Reciver/Reciver.atsln new file mode 100644 index 0000000..93137b2 --- /dev/null +++ b/Reciver/Reciver.atsln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Atmel Studio Solution File, Format Version 11.00 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "Reciver", "Reciver\Reciver.cproj", "{762E00F9-912F-4C48-851F-1F51C060E5AE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {762E00F9-912F-4C48-851F-1F51C060E5AE}.Debug|AVR.ActiveCfg = Debug|AVR + {762E00F9-912F-4C48-851F-1F51C060E5AE}.Debug|AVR.Build.0 = Debug|AVR + {762E00F9-912F-4C48-851F-1F51C060E5AE}.Release|AVR.ActiveCfg = Release|AVR + {762E00F9-912F-4C48-851F-1F51C060E5AE}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Reciver/Reciver.atsuo b/Reciver/Reciver.atsuo new file mode 100644 index 0000000..a95a3db Binary files /dev/null and b/Reciver/Reciver.atsuo differ diff --git a/Reciver/Reciver/Debug/Makefile b/Reciver/Reciver/Debug/Makefile new file mode 100644 index 0000000..28e8034 --- /dev/null +++ b/Reciver/Reciver/Debug/Makefile @@ -0,0 +1,130 @@ +################################################################################ +# 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:= + +# Every subdirectory with source files must be described here +SUBDIRS := + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Reciver.c \ +../rf12.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +Reciver.o \ +rf12.o + + +OBJS_AS_ARGS += \ +Reciver.o \ +rf12.o + + +C_DEPS += \ +Reciver.d \ +rf12.d + + +C_DEPS_AS_ARGS += \ +Reciver.d \ +rf12.d + + +OUTPUT_FILE_PATH +=Reciver.elf + +OUTPUT_FILE_PATH_AS_ARGS +=Reciver.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +# AVR32/GNU C Compiler + + + + + +./%.o: .././%.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2 + $(QUOTE)E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe$(QUOTE) -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -mmcu=atmega16a -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) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : (AVR_8_bit_GNU_Toolchain_3.4.1_830) 4.6.2 + $(QUOTE)E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="Reciver.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -mmcu=atmega16a + @echo Finished building target: $@ + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Reciver.elf" "Reciver.hex" + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Reciver.elf" "Reciver.eep" || exit 0 + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objdump.exe" -h -S "Reciver.elf" > "Reciver.lss" + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "Reciver.elf" "Reciver.srec" + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-size.exe" "Reciver.elf" + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS)$(C_DEPS_AS_ARGS) $(EXECUTABLES) + rm -rf "Reciver.elf" "Reciver.a" "Reciver.hex" "Reciver.lss" "Reciver.eep" "Reciver.map" "Reciver.srec" + \ No newline at end of file diff --git a/Reciver/Reciver/Debug/Reciver.d b/Reciver/Reciver/Debug/Reciver.d new file mode 100644 index 0000000..43afa07 --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.d @@ -0,0 +1,46 @@ +Reciver.d Reciver.o: .././Reciver.c \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom16a.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h \ + .././rf12.h + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom16a.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h: + +.././rf12.h: diff --git a/Reciver/Reciver/Debug/Reciver.eep b/Reciver/Reciver/Debug/Reciver.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Reciver/Reciver/Debug/Reciver.elf b/Reciver/Reciver/Debug/Reciver.elf new file mode 100644 index 0000000..da97ce4 Binary files /dev/null and b/Reciver/Reciver/Debug/Reciver.elf differ diff --git a/Reciver/Reciver/Debug/Reciver.hex b/Reciver/Reciver/Debug/Reciver.hex new file mode 100644 index 0000000..e90c5ef --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.hex @@ -0,0 +1,65 @@ +:100000000C942A000C9447000C9447000C94470071 +:100010000C9447000C9447000C9447000C94470044 +:100020000C9447000C9447000C9447000C94470034 +:100030000C9447000C9447000C9447000C94470024 +:100040000C9447000C9447000C9447000C94470014 +:100050000C94470011241FBECFE5D4E0DEBFCDBF16 +:1000600010E0A0E6B0E0E8EFF3E002C005900D92EA +:10007000A036B107D9F710E0A0E6B0E001C01D92AC +:10008000A036B107E1F70E9481000C94FA010C94AC +:100090000000CF93DF9300D0CDB7DEB719821A826C +:1000A000CE01019662E00E948D018981873359F467 +:1000B0008A81833641F4C09A8FE39CE90197F1F776 +:1000C00000C00000C0980F900F90DF91CF9108956D +:1000D000CF93DF930F92CDB7DEB781E08983CE0156 +:1000E000019661E00E9445018FEF90E7A2E0815008 +:1000F0009040A040E1F700C000000F90DF91CF9149 +:1001000008950E94B10080E296E00E94F90081E02B +:1001100060E047E00E94DB0080E895E20E94090170 +:1001200080E066E00E943001B89A0E944900FDCF4D +:10013000939840E120E030E0992314F4959A01C0AF +:100140009598220F331F86992160949A880F991FE2 +:1001500000C000009498415079F7939A822F932F12 +:10016000089588E381BB88E082BB8FEF90E7A2E02F +:1001700081509040A040E1F700C0000080EE90EC7C +:100180000E94980087ED90E80E9498008BEA92EC1C +:100190000E94980081E89AEC0E94980080E090EE1E +:1001A0000E94980080E098EC0E94980087EF94EC01 +:1001B0000E949800089590E0880F991F829592956B +:1001C000907F9827807F9827907050E047705070FC +:1001D000842B952B946970E063707070660F771FA5 +:1001E000660F771F660F771F862B972B0E9498004C +:1001F00008958036910538F02FE08034920728F07A +:100200008FE39FE002C080E690E0906A0E94980031 +:10021000089522E08739920710F125E1883192078D +:1002200080F49C0140E050E060E678EA80E090E0F5 +:100230000E94DF01C90101978068966C0E949800B6 +:1002400008959C0140E050E06CEF72E485E090E09E +:100250000E94BD01C9010197966C0E949800089503 +:1002600090E087709070986970E062957295707FE9 +:100270007627607F76277070862B972B0E949800D8 +:1002800008959398869BFECF08950F931F93CF9365 +:10029000DF938C01C62F88E392E80E9498000E94A9 +:1002A00041018AEA98EB0E9498000E9441018AEA83 +:1002B00098EB0E9498000E9441018AEA98EB0E9404 +:1002C00098000E9441018DE298EB0E9498000E94E4 +:1002D000410184ED98EB0E949800CC2399F0C8016D +:1002E0000196C1509C012C0F311DE9010E94410172 +:1002F000F80181918F0190E0986B0E9498000C1793 +:100300001D07A1F70E94410188E092E80E94980031 +:10031000DF91CF911F910F9108950F931F93CF936A +:10032000DF938C01D62F88EC92E80E94980081E838 +:100330009AEC0E94980083E89AEC0E949800DD23D2 +:1003400099F0C8010196D1509C012D0F311DE90192 +:100350000E94410180E090EB0E949800F801819397 +:100360008F01EC17FD07A1F788E092E80E94980042 +:10037000DF91CF911F910F910895A1E21A2EAA1B30 +:10038000BB1BFD010DC0AA1FBB1FEE1FFF1FA21745 +:10039000B307E407F50720F0A21BB30BE40BF50B42 +:1003A000661F771F881F991F1A9469F760957095CB +:1003B000809590959B01AC01BD01CF01089597FBFD +:1003C000092E05260ED057FD04D0D7DF0AD0001C19 +:1003D00038F450954095309521953F4F4F4F5F4FE2 +:1003E0000895F6F790958095709561957F4F8F4FA2 +:0803F0009F4F0895F894FFCF20 +:00000001FF diff --git a/Reciver/Reciver/Debug/Reciver.lss b/Reciver/Reciver/Debug/Reciver.lss new file mode 100644 index 0000000..504b8f9 --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.lss @@ -0,0 +1,739 @@ + +Reciver.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 000003f8 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00800060 000003f8 0000046c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .stab 000006cc 00000000 00000000 0000046c 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 00000085 00000000 00000000 00000b38 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 000000e0 00000000 00000000 00000bc0 2**3 + CONTENTS, READONLY, DEBUGGING + 5 .debug_info 00000989 00000000 00000000 00000ca0 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_abbrev 000002ea 00000000 00000000 00001629 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_line 00000662 00000000 00000000 00001913 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_frame 00000130 00000000 00000000 00001f78 2**2 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 000001ca 00000000 00000000 000020a8 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_loc 00000384 00000000 00000000 00002272 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> + 4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + +00000054 <__ctors_end>: + 54: 11 24 eor r1, r1 + 56: 1f be out 0x3f, r1 ; 63 + 58: cf e5 ldi r28, 0x5F ; 95 + 5a: d4 e0 ldi r29, 0x04 ; 4 + 5c: de bf out 0x3e, r29 ; 62 + 5e: cd bf out 0x3d, r28 ; 61 + +00000060 <__do_copy_data>: + 60: 10 e0 ldi r17, 0x00 ; 0 + 62: a0 e6 ldi r26, 0x60 ; 96 + 64: b0 e0 ldi r27, 0x00 ; 0 + 66: e8 ef ldi r30, 0xF8 ; 248 + 68: f3 e0 ldi r31, 0x03 ; 3 + 6a: 02 c0 rjmp .+4 ; 0x70 <__do_copy_data+0x10> + 6c: 05 90 lpm r0, Z+ + 6e: 0d 92 st X+, r0 + 70: a0 36 cpi r26, 0x60 ; 96 + 72: b1 07 cpc r27, r17 + 74: d9 f7 brne .-10 ; 0x6c <__do_copy_data+0xc> + +00000076 <__do_clear_bss>: + 76: 10 e0 ldi r17, 0x00 ; 0 + 78: a0 e6 ldi r26, 0x60 ; 96 + 7a: b0 e0 ldi r27, 0x00 ; 0 + 7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start> + +0000007e <.do_clear_bss_loop>: + 7e: 1d 92 st X+, r1 + +00000080 <.do_clear_bss_start>: + 80: a0 36 cpi r26, 0x60 ; 96 + 82: b1 07 cpc r27, r17 + 84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop> + 86: 0e 94 81 00 call 0x102 ; 0x102
+ 8a: 0c 94 fa 01 jmp 0x3f4 ; 0x3f4 <_exit> + +0000008e <__bad_interrupt>: + 8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +00000092 : + +#include +#include +#include "rf12.h" + +void recive() { + 92: cf 93 push r28 + 94: df 93 push r29 + 96: 00 d0 rcall .+0 ; 0x98 + 98: cd b7 in r28, 0x3d ; 61 + 9a: de b7 in r29, 0x3e ; 62 + unsigned char text[2]; + text[0] = 0; + 9c: 19 82 std Y+1, r1 ; 0x01 + text[1] = 0; + 9e: 1a 82 std Y+2, r1 ; 0x02 + rf12_rxdata(text,2); + a0: ce 01 movw r24, r28 + a2: 01 96 adiw r24, 0x01 ; 1 + a4: 62 e0 ldi r22, 0x02 ; 2 + a6: 0e 94 8d 01 call 0x31a ; 0x31a + if(text[0] == 55 && text[1] == 99) { + aa: 89 81 ldd r24, Y+1 ; 0x01 + ac: 87 33 cpi r24, 0x37 ; 55 + ae: 59 f4 brne .+22 ; 0xc6 + b0: 8a 81 ldd r24, Y+2 ; 0x02 + b2: 83 36 cpi r24, 0x63 ; 99 + b4: 41 f4 brne .+16 ; 0xc6 + PORTB |= (1< + c0: 00 c0 rjmp .+0 ; 0xc2 + c2: 00 00 nop + _delay_ms(20); + PORTB &= ~(1<: + +void send() { + d0: cf 93 push r28 + d2: df 93 push r29 + d4: 0f 92 push r0 + d6: cd b7 in r28, 0x3d ; 61 + d8: de b7 in r29, 0x3e ; 62 + unsigned char text[1] = {0x01}; + da: 81 e0 ldi r24, 0x01 ; 1 + dc: 89 83 std Y+1, r24 ; 0x01 + rf12_txdata(text,1); + de: ce 01 movw r24, r28 + e0: 01 96 adiw r24, 0x01 ; 1 + e2: 61 e0 ldi r22, 0x01 ; 1 + e4: 0e 94 45 01 call 0x28a ; 0x28a + e8: 8f ef ldi r24, 0xFF ; 255 + ea: 90 e7 ldi r25, 0x70 ; 112 + ec: a2 e0 ldi r26, 0x02 ; 2 + ee: 81 50 subi r24, 0x01 ; 1 + f0: 90 40 sbci r25, 0x00 ; 0 + f2: a0 40 sbci r26, 0x00 ; 0 + f4: e1 f7 brne .-8 ; 0xee + f6: 00 c0 rjmp .+0 ; 0xf8 + f8: 00 00 nop + _delay_ms(100); +} + fa: 0f 90 pop r0 + fc: df 91 pop r29 + fe: cf 91 pop r28 + 100: 08 95 ret + +00000102
: + +int main(void) +{ + rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) + 102: 0e 94 b1 00 call 0x162 ; 0x162 + rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen + 106: 80 e2 ldi r24, 0x20 ; 32 + 108: 96 e0 ldi r25, 0x06 ; 6 + 10a: 0e 94 f9 00 call 0x1f2 ; 0x1f2 + rf12_setbandwidth(1, 0, 7); // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm + 10e: 81 e0 ldi r24, 0x01 ; 1 + 110: 60 e0 ldi r22, 0x00 ; 0 + 112: 47 e0 ldi r20, 0x07 ; 7 + 114: 0e 94 db 00 call 0x1b6 ; 0x1b6 + rf12_setbaud(9600); // 19200 baud + 118: 80 e8 ldi r24, 0x80 ; 128 + 11a: 95 e2 ldi r25, 0x25 ; 37 + 11c: 0e 94 09 01 call 0x212 ; 0x212 + rf12_setpower(0, 6); // 1mW Ausgangsleistung, 120kHz Frequenzshift + 120: 80 e0 ldi r24, 0x00 ; 0 + 122: 66 e0 ldi r22, 0x06 ; 6 + 124: 0e 94 30 01 call 0x260 ; 0x260 + + DDRB |= (1< + 12e: fd cf rjmp .-6 ; 0x12a + +00000130 : + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + 130: 93 98 cbi 0x12, 3 ; 18 + 132: 40 e1 ldi r20, 0x10 ; 16 +#include +#include "global.h" +#include "rf12.h" + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + 134: 20 e0 ldi r18, 0x00 ; 0 + 136: 30 e0 ldi r19, 0x00 ; 0 + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + { if (wert&32768) + 138: 99 23 and r25, r25 + 13a: 14 f4 brge .+4 ; 0x140 + sbi(RF_PORT, SDI); + 13c: 95 9a sbi 0x12, 5 ; 18 + 13e: 01 c0 rjmp .+2 ; 0x142 + else + cbi(RF_PORT, SDI); + 140: 95 98 cbi 0x12, 5 ; 18 + werti<<=1; + 142: 22 0f add r18, r18 + 144: 33 1f adc r19, r19 + if (RF_PIN&(1< + 152: 00 00 nop + _delay_us(0.3); + cbi(RF_PORT, SCK); + 154: 94 98 cbi 0x12, 4 ; 18 + 156: 41 50 subi r20, 0x01 ; 1 +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + 158: 79 f7 brne .-34 ; 0x138 + sbi(RF_PORT, SCK); + wert<<=1; + _delay_us(0.3); + cbi(RF_PORT, SCK); + } + sbi(RF_PORT, CS); + 15a: 93 9a sbi 0x12, 3 ; 18 + return werti; +} + 15c: 82 2f mov r24, r18 + 15e: 93 2f mov r25, r19 + 160: 08 95 ret + +00000162 : + +void rf12_init(void) +{ + RF_DDR=(1< + 178: 00 c0 rjmp .+0 ; 0x17a + 17a: 00 00 nop + + _delay_ms(100); + + rf12_trans(0xC0E0); // AVR CLK: 10MHz + 17c: 80 ee ldi r24, 0xE0 ; 224 + 17e: 90 ec ldi r25, 0xC0 ; 192 + 180: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0x80D7); // Enable FIFO + 184: 87 ed ldi r24, 0xD7 ; 215 + 186: 90 e8 ldi r25, 0x80 ; 128 + 188: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xC2AB); // Data Filter: internal + 18c: 8b ea ldi r24, 0xAB ; 171 + 18e: 92 ec ldi r25, 0xC2 ; 194 + 190: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xCA81); // Set FIFO mode + 194: 81 e8 ldi r24, 0x81 ; 129 + 196: 9a ec ldi r25, 0xCA ; 202 + 198: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xE000); // disable wakeuptimer + 19c: 80 e0 ldi r24, 0x00 ; 0 + 19e: 90 ee ldi r25, 0xE0 ; 224 + 1a0: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xC800); // disable low duty cycle + 1a4: 80 e0 ldi r24, 0x00 ; 0 + 1a6: 98 ec ldi r25, 0xC8 ; 200 + 1a8: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz + 1ac: 87 ef ldi r24, 0xF7 ; 247 + 1ae: 94 ec ldi r25, 0xC4 ; 196 + 1b0: 0e 94 98 00 call 0x130 ; 0x130 +} + 1b4: 08 95 ret + +000001b6 : + +void rf12_setbandwidth(unsigned char bandwidth, unsigned char gain, unsigned char drssi) +{ + rf12_trans(0x9400|((bandwidth&7)<<5)|((gain&3)<<3)|(drssi&7)); + 1b6: 90 e0 ldi r25, 0x00 ; 0 + 1b8: 88 0f add r24, r24 + 1ba: 99 1f adc r25, r25 + 1bc: 82 95 swap r24 + 1be: 92 95 swap r25 + 1c0: 90 7f andi r25, 0xF0 ; 240 + 1c2: 98 27 eor r25, r24 + 1c4: 80 7f andi r24, 0xF0 ; 240 + 1c6: 98 27 eor r25, r24 + 1c8: 90 70 andi r25, 0x00 ; 0 + 1ca: 50 e0 ldi r21, 0x00 ; 0 + 1cc: 47 70 andi r20, 0x07 ; 7 + 1ce: 50 70 andi r21, 0x00 ; 0 + 1d0: 84 2b or r24, r20 + 1d2: 95 2b or r25, r21 + 1d4: 94 69 ori r25, 0x94 ; 148 + 1d6: 70 e0 ldi r23, 0x00 ; 0 + 1d8: 63 70 andi r22, 0x03 ; 3 + 1da: 70 70 andi r23, 0x00 ; 0 + 1dc: 66 0f add r22, r22 + 1de: 77 1f adc r23, r23 + 1e0: 66 0f add r22, r22 + 1e2: 77 1f adc r23, r23 + 1e4: 66 0f add r22, r22 + 1e6: 77 1f adc r23, r23 + 1e8: 86 2b or r24, r22 + 1ea: 97 2b or r25, r23 + 1ec: 0e 94 98 00 call 0x130 ; 0x130 +} + 1f0: 08 95 ret + +000001f2 : + +void rf12_setfreq(unsigned short freq) +{ if (freq<96) // 430,2400MHz + 1f2: 80 36 cpi r24, 0x60 ; 96 + 1f4: 91 05 cpc r25, r1 + 1f6: 38 f0 brcs .+14 ; 0x206 + 1f8: 2f e0 ldi r18, 0x0F ; 15 + 1fa: 80 34 cpi r24, 0x40 ; 64 + 1fc: 92 07 cpc r25, r18 + 1fe: 28 f0 brcs .+10 ; 0x20a + 200: 8f e3 ldi r24, 0x3F ; 63 + 202: 9f e0 ldi r25, 0x0F ; 15 + 204: 02 c0 rjmp .+4 ; 0x20a + freq=96; + 206: 80 e6 ldi r24, 0x60 ; 96 + 208: 90 e0 ldi r25, 0x00 ; 0 + else if (freq>3903) // 439,7575MHz + freq=3903; + rf12_trans(0xA000|freq); + 20a: 90 6a ori r25, 0xA0 ; 160 + 20c: 0e 94 98 00 call 0x130 ; 0x130 +} + 210: 08 95 ret + +00000212 : + +void rf12_setbaud(unsigned short baud) +{ + if (baud<663) + 212: 22 e0 ldi r18, 0x02 ; 2 + 214: 87 39 cpi r24, 0x97 ; 151 + 216: 92 07 cpc r25, r18 + 218: 10 f1 brcs .+68 ; 0x25e + return; + if (baud<5400) // Baudrate= 344827,58621/(R+1)/(1+CS*7) + 21a: 25 e1 ldi r18, 0x15 ; 21 + 21c: 88 31 cpi r24, 0x18 ; 24 + 21e: 92 07 cpc r25, r18 + 220: 80 f4 brcc .+32 ; 0x242 + rf12_trans(0xC680|((43104/baud)-1)); + 222: 9c 01 movw r18, r24 + 224: 40 e0 ldi r20, 0x00 ; 0 + 226: 50 e0 ldi r21, 0x00 ; 0 + 228: 60 e6 ldi r22, 0x60 ; 96 + 22a: 78 ea ldi r23, 0xA8 ; 168 + 22c: 80 e0 ldi r24, 0x00 ; 0 + 22e: 90 e0 ldi r25, 0x00 ; 0 + 230: 0e 94 df 01 call 0x3be ; 0x3be <__divmodsi4> + 234: c9 01 movw r24, r18 + 236: 01 97 sbiw r24, 0x01 ; 1 + 238: 80 68 ori r24, 0x80 ; 128 + 23a: 96 6c ori r25, 0xC6 ; 198 + 23c: 0e 94 98 00 call 0x130 ; 0x130 + 240: 08 95 ret + else + rf12_trans(0xC600|((344828UL/baud)-1)); + 242: 9c 01 movw r18, r24 + 244: 40 e0 ldi r20, 0x00 ; 0 + 246: 50 e0 ldi r21, 0x00 ; 0 + 248: 6c ef ldi r22, 0xFC ; 252 + 24a: 72 e4 ldi r23, 0x42 ; 66 + 24c: 85 e0 ldi r24, 0x05 ; 5 + 24e: 90 e0 ldi r25, 0x00 ; 0 + 250: 0e 94 bd 01 call 0x37a ; 0x37a <__udivmodsi4> + 254: c9 01 movw r24, r18 + 256: 01 97 sbiw r24, 0x01 ; 1 + 258: 96 6c ori r25, 0xC6 ; 198 + 25a: 0e 94 98 00 call 0x130 ; 0x130 + 25e: 08 95 ret + +00000260 : +} + +void rf12_setpower(unsigned char power, unsigned char mod) +{ + rf12_trans(0x9800|(power&7)|((mod&15)<<4)); + 260: 90 e0 ldi r25, 0x00 ; 0 + 262: 87 70 andi r24, 0x07 ; 7 + 264: 90 70 andi r25, 0x00 ; 0 + 266: 98 69 ori r25, 0x98 ; 152 + 268: 70 e0 ldi r23, 0x00 ; 0 + 26a: 62 95 swap r22 + 26c: 72 95 swap r23 + 26e: 70 7f andi r23, 0xF0 ; 240 + 270: 76 27 eor r23, r22 + 272: 60 7f andi r22, 0xF0 ; 240 + 274: 76 27 eor r23, r22 + 276: 70 70 andi r23, 0x00 ; 0 + 278: 86 2b or r24, r22 + 27a: 97 2b or r25, r23 + 27c: 0e 94 98 00 call 0x130 ; 0x130 +} + 280: 08 95 ret + +00000282 : + +void rf12_ready(void) +{ cbi(RF_PORT, CS); + 282: 93 98 cbi 0x12, 3 ; 18 + while (!(RF_PIN&(1< +} + 288: 08 95 ret + +0000028a : + +void rf12_txdata(unsigned char *data, unsigned char number) +{ unsigned char i; + 28a: 0f 93 push r16 + 28c: 1f 93 push r17 + 28e: cf 93 push r28 + 290: df 93 push r29 + 292: 8c 01 movw r16, r24 + 294: c6 2f mov r28, r22 + rf12_trans(0x8238); // TX on + 296: 88 e3 ldi r24, 0x38 ; 56 + 298: 92 e8 ldi r25, 0x82 ; 130 + 29a: 0e 94 98 00 call 0x130 ; 0x130 + rf12_ready(); + 29e: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0xB8AA); + 2a2: 8a ea ldi r24, 0xAA ; 170 + 2a4: 98 eb ldi r25, 0xB8 ; 184 + 2a6: 0e 94 98 00 call 0x130 ; 0x130 + rf12_ready(); + 2aa: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0xB8AA); + 2ae: 8a ea ldi r24, 0xAA ; 170 + 2b0: 98 eb ldi r25, 0xB8 ; 184 + 2b2: 0e 94 98 00 call 0x130 ; 0x130 + rf12_ready(); + 2b6: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0xB8AA); + 2ba: 8a ea ldi r24, 0xAA ; 170 + 2bc: 98 eb ldi r25, 0xB8 ; 184 + 2be: 0e 94 98 00 call 0x130 ; 0x130 + rf12_ready(); + 2c2: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0xB82D); + 2c6: 8d e2 ldi r24, 0x2D ; 45 + 2c8: 98 eb ldi r25, 0xB8 ; 184 + 2ca: 0e 94 98 00 call 0x130 ; 0x130 + rf12_ready(); + 2ce: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0xB8D4); + 2d2: 84 ed ldi r24, 0xD4 ; 212 + 2d4: 98 eb ldi r25, 0xB8 ; 184 + 2d6: 0e 94 98 00 call 0x130 ; 0x130 + for (i=0; i +void rf12_ready(void) +{ cbi(RF_PORT, CS); + while (!(RF_PIN&(1< + rf12_trans(0xB800|(*data++)); + 2f0: f8 01 movw r30, r16 + 2f2: 81 91 ld r24, Z+ + 2f4: 8f 01 movw r16, r30 + 2f6: 90 e0 ldi r25, 0x00 ; 0 + 2f8: 98 6b ori r25, 0xB8 ; 184 + 2fa: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xB8AA); + rf12_ready(); + rf12_trans(0xB82D); + rf12_ready(); + rf12_trans(0xB8D4); + for (i=0; i + { rf12_ready(); + rf12_trans(0xB800|(*data++)); + } + rf12_ready(); + 304: 0e 94 41 01 call 0x282 ; 0x282 + rf12_trans(0x8208); // TX off + 308: 88 e0 ldi r24, 0x08 ; 8 + 30a: 92 e8 ldi r25, 0x82 ; 130 + 30c: 0e 94 98 00 call 0x130 ; 0x130 +} + 310: df 91 pop r29 + 312: cf 91 pop r28 + 314: 1f 91 pop r17 + 316: 0f 91 pop r16 + 318: 08 95 ret + +0000031a : + +void rf12_rxdata(unsigned char *data, unsigned char number) +{ unsigned char i; + 31a: 0f 93 push r16 + 31c: 1f 93 push r17 + 31e: cf 93 push r28 + 320: df 93 push r29 + 322: 8c 01 movw r16, r24 + 324: d6 2f mov r29, r22 + rf12_trans(0x82C8); // RX on + 326: 88 ec ldi r24, 0xC8 ; 200 + 328: 92 e8 ldi r25, 0x82 ; 130 + 32a: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xCA81); // set FIFO mode + 32e: 81 e8 ldi r24, 0x81 ; 129 + 330: 9a ec ldi r25, 0xCA ; 202 + 332: 0e 94 98 00 call 0x130 ; 0x130 + rf12_trans(0xCA83); // enable FIFO + 336: 83 e8 ldi r24, 0x83 ; 131 + 338: 9a ec ldi r25, 0xCA ; 202 + 33a: 0e 94 98 00 call 0x130 ; 0x130 + for (i=0; i + } + rf12_ready(); + rf12_trans(0x8208); // TX off +} + +void rf12_rxdata(unsigned char *data, unsigned char number) + 342: c8 01 movw r24, r16 + 344: 01 96 adiw r24, 0x01 ; 1 + 346: d1 50 subi r29, 0x01 ; 1 + 348: 9c 01 movw r18, r24 + 34a: 2d 0f add r18, r29 + 34c: 31 1d adc r19, r1 + 34e: e9 01 movw r28, r18 +{ unsigned char i; + rf12_trans(0x82C8); // RX on + rf12_trans(0xCA81); // set FIFO mode + rf12_trans(0xCA83); // enable FIFO + for (i=0; i + *data++=rf12_trans(0xB000); + 354: 80 e0 ldi r24, 0x00 ; 0 + 356: 90 eb ldi r25, 0xB0 ; 176 + 358: 0e 94 98 00 call 0x130 ; 0x130 + 35c: f8 01 movw r30, r16 + 35e: 81 93 st Z+, r24 + 360: 8f 01 movw r16, r30 +void rf12_rxdata(unsigned char *data, unsigned char number) +{ unsigned char i; + rf12_trans(0x82C8); // RX on + rf12_trans(0xCA81); // set FIFO mode + rf12_trans(0xCA83); // enable FIFO + for (i=0; i + { rf12_ready(); + *data++=rf12_trans(0xB000); + } + rf12_trans(0x8208); // RX off + 368: 88 e0 ldi r24, 0x08 ; 8 + 36a: 92 e8 ldi r25, 0x82 ; 130 + 36c: 0e 94 98 00 call 0x130 ; 0x130 + 370: df 91 pop r29 + 372: cf 91 pop r28 + 374: 1f 91 pop r17 + 376: 0f 91 pop r16 + 378: 08 95 ret + +0000037a <__udivmodsi4>: + 37a: a1 e2 ldi r26, 0x21 ; 33 + 37c: 1a 2e mov r1, r26 + 37e: aa 1b sub r26, r26 + 380: bb 1b sub r27, r27 + 382: fd 01 movw r30, r26 + 384: 0d c0 rjmp .+26 ; 0x3a0 <__udivmodsi4_ep> + +00000386 <__udivmodsi4_loop>: + 386: aa 1f adc r26, r26 + 388: bb 1f adc r27, r27 + 38a: ee 1f adc r30, r30 + 38c: ff 1f adc r31, r31 + 38e: a2 17 cp r26, r18 + 390: b3 07 cpc r27, r19 + 392: e4 07 cpc r30, r20 + 394: f5 07 cpc r31, r21 + 396: 20 f0 brcs .+8 ; 0x3a0 <__udivmodsi4_ep> + 398: a2 1b sub r26, r18 + 39a: b3 0b sbc r27, r19 + 39c: e4 0b sbc r30, r20 + 39e: f5 0b sbc r31, r21 + +000003a0 <__udivmodsi4_ep>: + 3a0: 66 1f adc r22, r22 + 3a2: 77 1f adc r23, r23 + 3a4: 88 1f adc r24, r24 + 3a6: 99 1f adc r25, r25 + 3a8: 1a 94 dec r1 + 3aa: 69 f7 brne .-38 ; 0x386 <__udivmodsi4_loop> + 3ac: 60 95 com r22 + 3ae: 70 95 com r23 + 3b0: 80 95 com r24 + 3b2: 90 95 com r25 + 3b4: 9b 01 movw r18, r22 + 3b6: ac 01 movw r20, r24 + 3b8: bd 01 movw r22, r26 + 3ba: cf 01 movw r24, r30 + 3bc: 08 95 ret + +000003be <__divmodsi4>: + 3be: 97 fb bst r25, 7 + 3c0: 09 2e mov r0, r25 + 3c2: 05 26 eor r0, r21 + 3c4: 0e d0 rcall .+28 ; 0x3e2 <__divmodsi4_neg1> + 3c6: 57 fd sbrc r21, 7 + 3c8: 04 d0 rcall .+8 ; 0x3d2 <__divmodsi4_neg2> + 3ca: d7 df rcall .-82 ; 0x37a <__udivmodsi4> + 3cc: 0a d0 rcall .+20 ; 0x3e2 <__divmodsi4_neg1> + 3ce: 00 1c adc r0, r0 + 3d0: 38 f4 brcc .+14 ; 0x3e0 <__divmodsi4_exit> + +000003d2 <__divmodsi4_neg2>: + 3d2: 50 95 com r21 + 3d4: 40 95 com r20 + 3d6: 30 95 com r19 + 3d8: 21 95 neg r18 + 3da: 3f 4f sbci r19, 0xFF ; 255 + 3dc: 4f 4f sbci r20, 0xFF ; 255 + 3de: 5f 4f sbci r21, 0xFF ; 255 + +000003e0 <__divmodsi4_exit>: + 3e0: 08 95 ret + +000003e2 <__divmodsi4_neg1>: + 3e2: f6 f7 brtc .-4 ; 0x3e0 <__divmodsi4_exit> + 3e4: 90 95 com r25 + 3e6: 80 95 com r24 + 3e8: 70 95 com r23 + 3ea: 61 95 neg r22 + 3ec: 7f 4f sbci r23, 0xFF ; 255 + 3ee: 8f 4f sbci r24, 0xFF ; 255 + 3f0: 9f 4f sbci r25, 0xFF ; 255 + 3f2: 08 95 ret + +000003f4 <_exit>: + 3f4: f8 94 cli + +000003f6 <__stop_program>: + 3f6: ff cf rjmp .-2 ; 0x3f6 <__stop_program> diff --git a/Reciver/Reciver/Debug/Reciver.map b/Reciver/Reciver/Debug/Reciver.map new file mode 100644 index 0000000..6facd7c --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.map @@ -0,0 +1,424 @@ +Archive member included because of file (symbol) + +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + rf12.o (__udivmodsi4) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + rf12.o (__divmodsi4) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o (exit) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + Reciver.o (__do_copy_data) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + Reciver.o (__do_clear_bss) + +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 +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o +LOAD Reciver.o +LOAD rf12.o +START GROUP +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5\libm.a +END GROUP +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5\libc.a +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a + +.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 0x3f8 + *(.vectors) + .vectors 0x00000000 0x54 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000054 . = ALIGN (0x2) + 0x00000054 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000054 0x0 linker stubs + *(.trampolines*) + 0x00000054 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000054 __ctors_start = . + *(.ctors) + 0x00000054 __ctors_end = . + 0x00000054 __dtors_start = . + *(.dtors) + 0x00000054 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000054 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + 0x00000054 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000054 0xc e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000060 0x16 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + 0x00000060 __do_copy_data + .init4 0x00000076 0x10 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + 0x00000076 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000086 0x8 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + *(.init9) + *(.text) + .text 0x0000008e 0x4 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + 0x0000008e __vector_1 + 0x0000008e __vector_12 + 0x0000008e __bad_interrupt + 0x0000008e __vector_6 + 0x0000008e __vector_3 + 0x0000008e __vector_11 + 0x0000008e __vector_13 + 0x0000008e __vector_17 + 0x0000008e __vector_19 + 0x0000008e __vector_7 + 0x0000008e __vector_5 + 0x0000008e __vector_4 + 0x0000008e __vector_9 + 0x0000008e __vector_2 + 0x0000008e __vector_15 + 0x0000008e __vector_8 + 0x0000008e __vector_14 + 0x0000008e __vector_10 + 0x0000008e __vector_16 + 0x0000008e __vector_18 + 0x0000008e __vector_20 + .text 0x00000092 0x9e Reciver.o + 0x00000092 recive + 0x000000d0 send + 0x00000102 main + .text 0x00000130 0x24a rf12.o + 0x00000130 rf12_trans + 0x00000162 rf12_init + 0x000001b6 rf12_setbandwidth + 0x000001f2 rf12_setfreq + 0x00000212 rf12_setbaud + 0x00000260 rf12_setpower + 0x00000282 rf12_ready + 0x0000028a rf12_txdata + 0x0000031a rf12_rxdata + .text 0x0000037a 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .text 0x0000037a 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .text 0x0000037a 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .text 0x0000037a 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .text 0x0000037a 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + 0x0000037a . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000037a 0x44 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + 0x0000037a __udivmodsi4 + .text.libgcc 0x000003be 0x36 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + 0x000003be __divmodsi4 + .text.libgcc 0x000003f4 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .text.libgcc 0x000003f4 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .text.libgcc 0x000003f4 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + 0x000003f4 . = ALIGN (0x2) + *(.fini9) + .fini9 0x000003f4 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + 0x000003f4 _exit + 0x000003f4 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000003f4 0x4 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + *(.fini0) + 0x000003f8 _etext = . + +.data 0x00800060 0x0 load address 0x000003f8 + 0x00800060 PROVIDE (__data_start, .) + *(.data) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + .data 0x00800060 0x0 Reciver.o + .data 0x00800060 0x0 rf12.o + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800060 . = ALIGN (0x2) + 0x00800060 _edata = . + 0x00800060 PROVIDE (__data_end, .) + +.bss 0x00800060 0x0 + 0x00800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + .bss 0x00800060 0x0 Reciver.o + .bss 0x00800060 0x0 rf12.o + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800060 PROVIDE (__bss_end, .) + 0x000003f8 __data_load_start = LOADADDR (.data) + 0x000003f8 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800060 0x0 + 0x00800060 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800060 PROVIDE (__noinit_end, .) + 0x00800060 _end = . + 0x00800060 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6cc + *(.stab) + .stab 0x00000000 0x6cc e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + +.stabstr 0x00000000 0x85 + *(.stabstr) + .stabstr 0x00000000 0x85 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr5/crtm16a.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0xe0 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 Reciver.o + .debug_aranges + 0x00000020 0x20 rf12.o + .debug_aranges + 0x00000040 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .debug_aranges + 0x00000060 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .debug_aranges + 0x00000080 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .debug_aranges + 0x000000a0 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .debug_aranges + 0x000000c0 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x989 + *(.debug_info) + .debug_info 0x00000000 0x1cd Reciver.o + .debug_info 0x000001cd 0x36b rf12.o + .debug_info 0x00000538 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .debug_info 0x00000615 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .debug_info 0x000006f2 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .debug_info 0x000007cf 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .debug_info 0x000008ac 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2ea + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x113 Reciver.o + .debug_abbrev 0x00000113 0x173 rf12.o + .debug_abbrev 0x00000286 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .debug_abbrev 0x0000029a 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .debug_abbrev 0x000002ae 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .debug_abbrev 0x000002c2 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .debug_abbrev 0x000002d6 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + +.debug_line 0x00000000 0x662 + *(.debug_line) + .debug_line 0x00000000 0x191 Reciver.o + .debug_line 0x00000191 0x1e1 rf12.o + .debug_line 0x00000372 0xa8 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_udivmodsi4.o) + .debug_line 0x0000041a 0xa1 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_divmodsi4.o) + .debug_line 0x000004bb 0x88 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_exit.o) + .debug_line 0x00000543 0x91 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_copy_data.o) + .debug_line 0x000005d4 0x8e e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr5\libgcc.a(_clear_bss.o) + +.debug_frame 0x00000000 0x130 + *(.debug_frame) + .debug_frame 0x00000000 0x64 Reciver.o + .debug_frame 0x00000064 0xcc rf12.o + +.debug_str 0x00000000 0x1ca + *(.debug_str) + .debug_str 0x00000000 0x10d Reciver.o + 0x141 (size before relaxing) + .debug_str 0x0000010d 0xbd rf12.o + 0x1f8 (size before relaxing) + +.debug_loc 0x00000000 0x384 + *(.debug_loc) + .debug_loc 0x00000000 0xd8 Reciver.o + .debug_loc 0x000000d8 0x2ac rf12.o + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(Reciver.elf elf32-avr) +LOAD linker stubs diff --git a/Reciver/Reciver/Debug/Reciver.srec b/Reciver/Reciver/Debug/Reciver.srec new file mode 100644 index 0000000..03aac1f --- /dev/null +++ b/Reciver/Reciver/Debug/Reciver.srec @@ -0,0 +1,66 @@ +S00F0000526563697665722E7372656345 +S11300000C942A000C9447000C9447000C9447006D +S11300100C9447000C9447000C9447000C94470040 +S11300200C9447000C9447000C9447000C94470030 +S11300300C9447000C9447000C9447000C94470020 +S11300400C9447000C9447000C9447000C94470010 +S11300500C94470011241FBECFE5D4E0DEBFCDBF12 +S113006010E0A0E6B0E0E8EFF3E002C005900D92E6 +S1130070A036B107D9F710E0A0E6B0E001C01D92A8 +S1130080A036B107E1F70E9481000C94FA010C94A8 +S11300900000CF93DF9300D0CDB7DEB719821A8268 +S11300A0CE01019662E00E948D018981873359F463 +S11300B08A81833641F4C09A8FE39CE90197F1F772 +S11300C000C00000C0980F900F90DF91CF91089569 +S11300D0CF93DF930F92CDB7DEB781E08983CE0152 +S11300E0019661E00E9445018FEF90E7A2E0815004 +S11300F09040A040E1F700C000000F90DF91CF9145 +S113010008950E94B10080E296E00E94F90081E027 +S113011060E047E00E94DB0080E895E20E9409016C +S113012080E066E00E943001B89A0E944900FDCF49 +S1130130939840E120E030E0992314F4959A01C0AB +S11301409598220F331F86992160949A880F991FDE +S113015000C000009498415079F7939A822F932F0E +S1130160089588E381BB88E082BB8FEF90E7A2E02B +S113017081509040A040E1F700C0000080EE90EC78 +S11301800E94980087ED90E80E9498008BEA92EC18 +S11301900E94980081E89AEC0E94980080E090EE1A +S11301A00E94980080E098EC0E94980087EF94ECFD +S11301B00E949800089590E0880F991F8295929567 +S11301C0907F9827807F9827907050E047705070F8 +S11301D0842B952B946970E063707070660F771FA1 +S11301E0660F771F660F771F862B972B0E94980048 +S11301F008958036910538F02FE08034920728F076 +S11302008FE39FE002C080E690E0906A0E9498002D +S1130210089522E08739920710F125E18831920789 +S113022080F49C0140E050E060E678EA80E090E0F1 +S11302300E94DF01C90101978068966C0E949800B2 +S113024008959C0140E050E06CEF72E485E090E09A +S11302500E94BD01C9010197966C0E9498000895FF +S113026090E087709070986970E062957295707FE5 +S11302707627607F76277070862B972B0E949800D4 +S113028008959398869BFECF08950F931F93CF9361 +S1130290DF938C01C62F88E392E80E9498000E94A5 +S11302A041018AEA98EB0E9498000E9441018AEA7F +S11302B098EB0E9498000E9441018AEA98EB0E9400 +S11302C098000E9441018DE298EB0E9498000E94E0 +S11302D0410184ED98EB0E949800CC2399F0C80169 +S11302E00196C1509C012C0F311DE9010E9441016E +S11302F0F80181918F0190E0986B0E9498000C178F +S11303001D07A1F70E94410188E092E80E9498002D +S1130310DF91CF911F910F9108950F931F93CF9366 +S1130320DF938C01D62F88EC92E80E94980081E834 +S11303309AEC0E94980083E89AEC0E949800DD23CE +S113034099F0C8010196D1509C012D0F311DE9018E +S11303500E94410180E090EB0E949800F801819393 +S11303608F01EC17FD07A1F788E092E80E9498003E +S1130370DF91CF911F910F910895A1E21A2EAA1B2C +S1130380BB1BFD010DC0AA1FBB1FEE1FFF1FA21741 +S1130390B307E407F50720F0A21BB30BE40BF50B3E +S11303A0661F771F881F991F1A9469F760957095C7 +S11303B0809590959B01AC01BD01CF01089597FBF9 +S11303C0092E05260ED057FD04D0D7DF0AD0001C15 +S11303D038F450954095309521953F4F4F4F5F4FDE +S11303E00895F6F790958095709561957F4F8F4F9E +S10B03F09F4F0895F894FFCF1C +S9030000FC diff --git a/Reciver/Reciver/Debug/makedep.mk b/Reciver/Reciver/Debug/makedep.mk new file mode 100644 index 0000000..562bd5a --- /dev/null +++ b/Reciver/Reciver/Debug/makedep.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +Reciver.c + +rf12.c + diff --git a/Reciver/Reciver/Debug/rf12.d b/Reciver/Reciver/Debug/rf12.d new file mode 100644 index 0000000..6fc9491 --- /dev/null +++ b/Reciver/Reciver/Debug/rf12.d @@ -0,0 +1,48 @@ +rf12.d rf12.o: .././rf12.c \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom16a.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h \ + .././global.h .././rf12.h + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom16a.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h: + +.././global.h: + +.././rf12.h: diff --git a/Reciver/Reciver/Reciver.c b/Reciver/Reciver/Reciver.c new file mode 100644 index 0000000..3f8ee5a --- /dev/null +++ b/Reciver/Reciver/Reciver.c @@ -0,0 +1,50 @@ +/* + * Reciver.c + * + * Created: 25.03.2013 21:03:07 + * Author: netz + */ + +#define F_CPU 8000000 + +#include +#include +#include "rf12.h" + +void recive() { + unsigned char text[2]; + text[0] = 0; + text[1] = 0; + rf12_rxdata(text,2); + if(text[0] == 55 && text[1] == 99) { + PORTB |= (1< + + + 2.0 + 6.0 + com.Atmel.AVRGCC8 + {762e00f9-912f-4c48-851f-1f51c060e5ae} + ATmega16A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + Reciver + Reciver + Reciver + Native + true + false + + 0 + 3.5.1 + com.atmel.avrdbg.tool.ispmk2 + ISP + + com.atmel.avrdbg.tool.ispmk2 + AVRISP mkII + 0000000000000 + true + false + + + + 127.0.0.1 + 49503 + False + + + ISP + + 249000 + 1000000 + 250000 + false + false + 0 + 0 + 0 + 0 + + + + + + + + True + True + True + True + True + True + Optimize for size (-Os) + True + True + True + + + m + + + + + + + + + True + True + True + True + True + True + Optimize (-O1) + True + True + Default (-g2) + True + + + m + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/Reciver/Reciver/global.h b/Reciver/Reciver/global.h new file mode 100644 index 0000000..e105219 --- /dev/null +++ b/Reciver/Reciver/global.h @@ -0,0 +1,20 @@ +/* + * global.h + * + * Created: 25.03.2013 21:12:17 + * Author: netz + */ + + + +#ifndef GLOBAL_H_ +#define GLOBAL_H_ + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#endif /* GLOBAL_H_ */ \ No newline at end of file diff --git a/Reciver/Reciver/rf12.c b/Reciver/Reciver/rf12.c new file mode 100644 index 0000000..b14384b --- /dev/null +++ b/Reciver/Reciver/rf12.c @@ -0,0 +1,127 @@ +/* + * rf12.c + * + * Created: 24.03.2013 23:52:52 + * Author: netz + */ + +#define F_CPU 8000000 + +#define RF_PORT PORTD +#define RF_DDR DDRD +#define RF_PIN PIND + +#define CS PD3 +#define SCK PD4 +#define SDI PD5 +#define SDO PD6 + + +#include +#include +#include "global.h" +#include "rf12.h" + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + { if (wert&32768) + sbi(RF_PORT, SDI); + else + cbi(RF_PORT, SDI); + werti<<=1; + if (RF_PIN&(1<3903) // 439,7575MHz + freq=3903; + rf12_trans(0xA000|freq); +} + +void rf12_setbaud(unsigned short baud) +{ + if (baud<663) + return; + if (baud<5400) // Baudrate= 344827,58621/(R+1)/(1+CS*7) + rf12_trans(0xC680|((43104/baud)-1)); + else + rf12_trans(0xC600|((344828UL/baud)-1)); +} + +void rf12_setpower(unsigned char power, unsigned char mod) +{ + rf12_trans(0x9800|(power&7)|((mod&15)<<4)); +} + +void rf12_ready(void) +{ cbi(RF_PORT, CS); + while (!(RF_PIN&(1< "Sender.lss" + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "Sender.elf" "Sender.srec" + "E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-size.exe" "Sender.elf" + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS)$(C_DEPS_AS_ARGS) $(EXECUTABLES) + rm -rf "Sender.elf" "Sender.a" "Sender.hex" "Sender.lss" "Sender.eep" "Sender.map" "Sender.srec" + \ No newline at end of file diff --git a/Sender/Sender/Debug/Sender.d b/Sender/Sender/Debug/Sender.d new file mode 100644 index 0000000..484ddae --- /dev/null +++ b/Sender/Sender/Debug/Sender.d @@ -0,0 +1,46 @@ +Sender.d Sender.o: .././Sender.c \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom8a.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h \ + .././rf12.h + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom8a.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h: + +.././rf12.h: diff --git a/Sender/Sender/Debug/Sender.eep b/Sender/Sender/Debug/Sender.eep new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/Sender/Sender/Debug/Sender.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/Sender/Sender/Debug/Sender.elf b/Sender/Sender/Debug/Sender.elf new file mode 100644 index 0000000..6e07081 Binary files /dev/null and b/Sender/Sender/Debug/Sender.elf differ diff --git a/Sender/Sender/Debug/Sender.hex b/Sender/Sender/Debug/Sender.hex new file mode 100644 index 0000000..10a414f --- /dev/null +++ b/Sender/Sender/Debug/Sender.hex @@ -0,0 +1,58 @@ +:1000000012C02CC02BC02AC029C028C027C026C0BF +:1000100025C024C023C022C021C020C01FC01EC0D4 +:100020001DC01CC01BC011241FBECFE5D4E0DEBF25 +:10003000CDBF10E0A0E6B0E0E0E9F3E002C005903B +:100040000D92A036B107D9F710E0A0E6B0E001C0EC +:100050001D92A036B107E1F740D198C1D1CFAC983D +:1000600040E120E030E0992314F4AA9A01C0AA9854 +:10007000220F331F99992160AB9A880F991F00C0F6 +:100080000000AB98415079F7AC9A822F932F0895D6 +:100090008CE184BB80E185BB8FEF90E7A2E08150CB +:1000A0009040A040E1F700C0000080EE90ECD7DF68 +:1000B00087ED90E8D4DF8BEA92ECD1DF81E89AEC0F +:1000C000CEDF80E090EECBDF80E098ECC8DF87EFFA +:1000D00094ECC5DF089590E0880F991F8295929562 +:1000E000907F9827807F9827907050E047705070DD +:1000F000842B952B946970E063707070660F771F86 +:10010000660F771F660F771F862B972BA8DF089542 +:100110008036910538F02FE08034920728F08FE385 +:100120009FE002C080E690E0906A99DF089522E0A7 +:1001300087399207F0F025E18831920770F49C012D +:1001400040E050E060E678EA80E090E004D1C90148 +:1001500001978068966C83DF08959C0140E050E031 +:100160006CEF72E485E090E0D4D0C9010197966C01 +:1001700076DF089590E087709070986970E06295DE +:100180007295707F7627607F76277070862B972B0D +:1001900066DF0895AC98999BFECF08950F931F9347 +:1001A000CF93DF938C01C62F88E392E858DFF2DF0C +:1001B0008AEA98EB54DFEEDF8AEA98EB50DFEADF59 +:1001C0008AEA98EB4CDFE6DF8DE298EB48DFE2DF6E +:1001D00084ED98EB44DFCC2389F0C8010196C1502F +:1001E0009C012C0F311DE901D5DFF80181918F01B0 +:1001F00090E0986B34DF0C171D07B1F7CBDF88E078 +:1002000092E82DDFDF91CF911F910F9108950F9309 +:100210001F93CF93DF938C01D62F88EC92E81FDFDA +:1002200081E89AEC1CDF83E89AEC19DFDD2389F082 +:10023000C8010196D1509C012D0F311DE901AADFA3 +:1002400080E090EB0CDFF80181938F01EC17FD0744 +:10025000B1F788E092E803DFDF91CF911F910F9112 +:100260000895CF93DF93D82FC62F88E392E8F7DE67 +:1002700091DF8AEA98EBF3DE8DDF8AEA98EBEFDE16 +:1002800089DF8AEA98EBEBDE85DF8DE298EBE7DE2B +:1002900081DF84ED98EBE3DE7DDF8D2F90E0986BBE +:1002A000DEDE78DF8C2F90E0986BD9DE73DF80E0A4 +:1002B00098EBD5DE6FDF88E092E8D1DE8FE19EE437 +:1002C0000197F1F700C00000DF91CF91089587E317 +:1002D00090E063E670E0C5DF0895DADE80E296E044 +:1002E00017DF81E060E047E0F6DE80E895E21FDF9F +:1002F00080E066E03FDFA59AAD9AE9DFAD988FEF29 +:1003000094E3ACE081509040A040E1F700C00000D1 +:10031000F3CFA1E21A2EAA1BBB1BFD010DC0AA1F21 +:10032000BB1FEE1FFF1FA217B307E407F50720F05E +:10033000A21BB30BE40BF50B661F771F881F991FD9 +:100340001A9469F760957095809590959B01AC0122 +:10035000BD01CF01089597FB092E05260ED057FD4C +:1003600004D0D7DF0AD0001C38F450954095309562 +:1003700021953F4F4F4F5F4F0895F6F79095809529 +:10038000709561957F4F8F4F9F4F0895F894FFCFE1 +:00000001FF diff --git a/Sender/Sender/Debug/Sender.lss b/Sender/Sender/Debug/Sender.lss new file mode 100644 index 0000000..9a23db8 --- /dev/null +++ b/Sender/Sender/Debug/Sender.lss @@ -0,0 +1,758 @@ + +Sender.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000390 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 00000000 00800060 00000390 00000404 2**0 + CONTENTS, ALLOC, LOAD, DATA + 2 .stab 000006cc 00000000 00000000 00000404 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 00000085 00000000 00000000 00000ad0 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 000000e0 00000000 00000000 00000b58 2**3 + CONTENTS, READONLY, DEBUGGING + 5 .debug_info 0000097e 00000000 00000000 00000c38 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_abbrev 000002cd 00000000 00000000 000015b6 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_line 0000066d 00000000 00000000 00001883 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_frame 0000011c 00000000 00000000 00001ef0 2**2 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 000001ce 00000000 00000000 0000200c 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .debug_loc 00000317 00000000 00000000 000021da 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> + 2: 2c c0 rjmp .+88 ; 0x5c <__bad_interrupt> + 4: 2b c0 rjmp .+86 ; 0x5c <__bad_interrupt> + 6: 2a c0 rjmp .+84 ; 0x5c <__bad_interrupt> + 8: 29 c0 rjmp .+82 ; 0x5c <__bad_interrupt> + a: 28 c0 rjmp .+80 ; 0x5c <__bad_interrupt> + c: 27 c0 rjmp .+78 ; 0x5c <__bad_interrupt> + e: 26 c0 rjmp .+76 ; 0x5c <__bad_interrupt> + 10: 25 c0 rjmp .+74 ; 0x5c <__bad_interrupt> + 12: 24 c0 rjmp .+72 ; 0x5c <__bad_interrupt> + 14: 23 c0 rjmp .+70 ; 0x5c <__bad_interrupt> + 16: 22 c0 rjmp .+68 ; 0x5c <__bad_interrupt> + 18: 21 c0 rjmp .+66 ; 0x5c <__bad_interrupt> + 1a: 20 c0 rjmp .+64 ; 0x5c <__bad_interrupt> + 1c: 1f c0 rjmp .+62 ; 0x5c <__bad_interrupt> + 1e: 1e c0 rjmp .+60 ; 0x5c <__bad_interrupt> + 20: 1d c0 rjmp .+58 ; 0x5c <__bad_interrupt> + 22: 1c c0 rjmp .+56 ; 0x5c <__bad_interrupt> + 24: 1b c0 rjmp .+54 ; 0x5c <__bad_interrupt> + +00000026 <__ctors_end>: + 26: 11 24 eor r1, r1 + 28: 1f be out 0x3f, r1 ; 63 + 2a: cf e5 ldi r28, 0x5F ; 95 + 2c: d4 e0 ldi r29, 0x04 ; 4 + 2e: de bf out 0x3e, r29 ; 62 + 30: cd bf out 0x3d, r28 ; 61 + +00000032 <__do_copy_data>: + 32: 10 e0 ldi r17, 0x00 ; 0 + 34: a0 e6 ldi r26, 0x60 ; 96 + 36: b0 e0 ldi r27, 0x00 ; 0 + 38: e0 e9 ldi r30, 0x90 ; 144 + 3a: f3 e0 ldi r31, 0x03 ; 3 + 3c: 02 c0 rjmp .+4 ; 0x42 <__SREG__+0x3> + 3e: 05 90 lpm r0, Z+ + 40: 0d 92 st X+, r0 + 42: a0 36 cpi r26, 0x60 ; 96 + 44: b1 07 cpc r27, r17 + 46: d9 f7 brne .-10 ; 0x3e <__SP_H__> + +00000048 <__do_clear_bss>: + 48: 10 e0 ldi r17, 0x00 ; 0 + 4a: a0 e6 ldi r26, 0x60 ; 96 + 4c: b0 e0 ldi r27, 0x00 ; 0 + 4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> + +00000050 <.do_clear_bss_loop>: + 50: 1d 92 st X+, r1 + +00000052 <.do_clear_bss_start>: + 52: a0 36 cpi r26, 0x60 ; 96 + 54: b1 07 cpc r27, r17 + 56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> + 58: 40 d1 rcall .+640 ; 0x2da
+ 5a: 98 c1 rjmp .+816 ; 0x38c <_exit> + +0000005c <__bad_interrupt>: + 5c: d1 cf rjmp .-94 ; 0x0 <__vectors> + +0000005e : + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + 5e: ac 98 cbi 0x15, 4 ; 21 + 60: 40 e1 ldi r20, 0x10 ; 16 +#include +#include "global.h" +#include "rf12.h" + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + 62: 20 e0 ldi r18, 0x00 ; 0 + 64: 30 e0 ldi r19, 0x00 ; 0 + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + { if (wert&32768) + 66: 99 23 and r25, r25 + 68: 14 f4 brge .+4 ; 0x6e + sbi(RF_PORT, SDI); + 6a: aa 9a sbi 0x15, 2 ; 21 + 6c: 01 c0 rjmp .+2 ; 0x70 + else + cbi(RF_PORT, SDI); + 6e: aa 98 cbi 0x15, 2 ; 21 + werti<<=1; + 70: 22 0f add r18, r18 + 72: 33 1f adc r19, r19 + if (RF_PIN&(1< + 80: 00 00 nop + _delay_us(0.3); + cbi(RF_PORT, SCK); + 82: ab 98 cbi 0x15, 3 ; 21 + 84: 41 50 subi r20, 0x01 ; 1 +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + 86: 79 f7 brne .-34 ; 0x66 + sbi(RF_PORT, SCK); + wert<<=1; + _delay_us(0.3); + cbi(RF_PORT, SCK); + } + sbi(RF_PORT, CS); + 88: ac 9a sbi 0x15, 4 ; 21 + return werti; +} + 8a: 82 2f mov r24, r18 + 8c: 93 2f mov r25, r19 + 8e: 08 95 ret + +00000090 : + +void rf12_init(void) +{ + RF_DDR=(1< + a6: 00 c0 rjmp .+0 ; 0xa8 + a8: 00 00 nop + + _delay_ms(100); + + rf12_trans(0xC0E0); // AVR CLK: 10MHz + aa: 80 ee ldi r24, 0xE0 ; 224 + ac: 90 ec ldi r25, 0xC0 ; 192 + ae: d7 df rcall .-82 ; 0x5e + rf12_trans(0x80D7); // Enable FIFO + b0: 87 ed ldi r24, 0xD7 ; 215 + b2: 90 e8 ldi r25, 0x80 ; 128 + b4: d4 df rcall .-88 ; 0x5e + rf12_trans(0xC2AB); // Data Filter: internal + b6: 8b ea ldi r24, 0xAB ; 171 + b8: 92 ec ldi r25, 0xC2 ; 194 + ba: d1 df rcall .-94 ; 0x5e + rf12_trans(0xCA81); // Set FIFO mode + bc: 81 e8 ldi r24, 0x81 ; 129 + be: 9a ec ldi r25, 0xCA ; 202 + c0: ce df rcall .-100 ; 0x5e + rf12_trans(0xE000); // disable wakeuptimer + c2: 80 e0 ldi r24, 0x00 ; 0 + c4: 90 ee ldi r25, 0xE0 ; 224 + c6: cb df rcall .-106 ; 0x5e + rf12_trans(0xC800); // disable low duty cycle + c8: 80 e0 ldi r24, 0x00 ; 0 + ca: 98 ec ldi r25, 0xC8 ; 200 + cc: c8 df rcall .-112 ; 0x5e + rf12_trans(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz + ce: 87 ef ldi r24, 0xF7 ; 247 + d0: 94 ec ldi r25, 0xC4 ; 196 + d2: c5 df rcall .-118 ; 0x5e +} + d4: 08 95 ret + +000000d6 : + +void rf12_setbandwidth(unsigned char bandwidth, unsigned char gain, unsigned char drssi) +{ + rf12_trans(0x9400|((bandwidth&7)<<5)|((gain&3)<<3)|(drssi&7)); + d6: 90 e0 ldi r25, 0x00 ; 0 + d8: 88 0f add r24, r24 + da: 99 1f adc r25, r25 + dc: 82 95 swap r24 + de: 92 95 swap r25 + e0: 90 7f andi r25, 0xF0 ; 240 + e2: 98 27 eor r25, r24 + e4: 80 7f andi r24, 0xF0 ; 240 + e6: 98 27 eor r25, r24 + e8: 90 70 andi r25, 0x00 ; 0 + ea: 50 e0 ldi r21, 0x00 ; 0 + ec: 47 70 andi r20, 0x07 ; 7 + ee: 50 70 andi r21, 0x00 ; 0 + f0: 84 2b or r24, r20 + f2: 95 2b or r25, r21 + f4: 94 69 ori r25, 0x94 ; 148 + f6: 70 e0 ldi r23, 0x00 ; 0 + f8: 63 70 andi r22, 0x03 ; 3 + fa: 70 70 andi r23, 0x00 ; 0 + fc: 66 0f add r22, r22 + fe: 77 1f adc r23, r23 + 100: 66 0f add r22, r22 + 102: 77 1f adc r23, r23 + 104: 66 0f add r22, r22 + 106: 77 1f adc r23, r23 + 108: 86 2b or r24, r22 + 10a: 97 2b or r25, r23 + 10c: a8 df rcall .-176 ; 0x5e +} + 10e: 08 95 ret + +00000110 : + +void rf12_setfreq(unsigned short freq) +{ if (freq<96) // 430,2400MHz + 110: 80 36 cpi r24, 0x60 ; 96 + 112: 91 05 cpc r25, r1 + 114: 38 f0 brcs .+14 ; 0x124 + 116: 2f e0 ldi r18, 0x0F ; 15 + 118: 80 34 cpi r24, 0x40 ; 64 + 11a: 92 07 cpc r25, r18 + 11c: 28 f0 brcs .+10 ; 0x128 + 11e: 8f e3 ldi r24, 0x3F ; 63 + 120: 9f e0 ldi r25, 0x0F ; 15 + 122: 02 c0 rjmp .+4 ; 0x128 + freq=96; + 124: 80 e6 ldi r24, 0x60 ; 96 + 126: 90 e0 ldi r25, 0x00 ; 0 + else if (freq>3903) // 439,7575MHz + freq=3903; + rf12_trans(0xA000|freq); + 128: 90 6a ori r25, 0xA0 ; 160 + 12a: 99 df rcall .-206 ; 0x5e +} + 12c: 08 95 ret + +0000012e : + +void rf12_setbaud(unsigned short baud) +{ + if (baud<663) + 12e: 22 e0 ldi r18, 0x02 ; 2 + 130: 87 39 cpi r24, 0x97 ; 151 + 132: 92 07 cpc r25, r18 + 134: f0 f0 brcs .+60 ; 0x172 + return; + if (baud<5400) // Baudrate= 344827,58621/(R+1)/(1+CS*7) + 136: 25 e1 ldi r18, 0x15 ; 21 + 138: 88 31 cpi r24, 0x18 ; 24 + 13a: 92 07 cpc r25, r18 + 13c: 70 f4 brcc .+28 ; 0x15a + rf12_trans(0xC680|((43104/baud)-1)); + 13e: 9c 01 movw r18, r24 + 140: 40 e0 ldi r20, 0x00 ; 0 + 142: 50 e0 ldi r21, 0x00 ; 0 + 144: 60 e6 ldi r22, 0x60 ; 96 + 146: 78 ea ldi r23, 0xA8 ; 168 + 148: 80 e0 ldi r24, 0x00 ; 0 + 14a: 90 e0 ldi r25, 0x00 ; 0 + 14c: 04 d1 rcall .+520 ; 0x356 <__divmodsi4> + 14e: c9 01 movw r24, r18 + 150: 01 97 sbiw r24, 0x01 ; 1 + 152: 80 68 ori r24, 0x80 ; 128 + 154: 96 6c ori r25, 0xC6 ; 198 + 156: 83 df rcall .-250 ; 0x5e + 158: 08 95 ret + else + rf12_trans(0xC600|((344828UL/baud)-1)); + 15a: 9c 01 movw r18, r24 + 15c: 40 e0 ldi r20, 0x00 ; 0 + 15e: 50 e0 ldi r21, 0x00 ; 0 + 160: 6c ef ldi r22, 0xFC ; 252 + 162: 72 e4 ldi r23, 0x42 ; 66 + 164: 85 e0 ldi r24, 0x05 ; 5 + 166: 90 e0 ldi r25, 0x00 ; 0 + 168: d4 d0 rcall .+424 ; 0x312 <__udivmodsi4> + 16a: c9 01 movw r24, r18 + 16c: 01 97 sbiw r24, 0x01 ; 1 + 16e: 96 6c ori r25, 0xC6 ; 198 + 170: 76 df rcall .-276 ; 0x5e + 172: 08 95 ret + +00000174 : +} + +void rf12_setpower(unsigned char power, unsigned char mod) +{ + rf12_trans(0x9800|(power&7)|((mod&15)<<4)); + 174: 90 e0 ldi r25, 0x00 ; 0 + 176: 87 70 andi r24, 0x07 ; 7 + 178: 90 70 andi r25, 0x00 ; 0 + 17a: 98 69 ori r25, 0x98 ; 152 + 17c: 70 e0 ldi r23, 0x00 ; 0 + 17e: 62 95 swap r22 + 180: 72 95 swap r23 + 182: 70 7f andi r23, 0xF0 ; 240 + 184: 76 27 eor r23, r22 + 186: 60 7f andi r22, 0xF0 ; 240 + 188: 76 27 eor r23, r22 + 18a: 70 70 andi r23, 0x00 ; 0 + 18c: 86 2b or r24, r22 + 18e: 97 2b or r25, r23 + 190: 66 df rcall .-308 ; 0x5e +} + 192: 08 95 ret + +00000194 : + +void rf12_ready(void) +{ cbi(RF_PORT, CS); + 194: ac 98 cbi 0x15, 4 ; 21 + while (!(RF_PIN&(1< +} + 19a: 08 95 ret + +0000019c : + +void rf12_txdata(unsigned char *data, unsigned char number) +{ unsigned char i; + 19c: 0f 93 push r16 + 19e: 1f 93 push r17 + 1a0: cf 93 push r28 + 1a2: df 93 push r29 + 1a4: 8c 01 movw r16, r24 + 1a6: c6 2f mov r28, r22 + rf12_trans(0x8238); // TX on + 1a8: 88 e3 ldi r24, 0x38 ; 56 + 1aa: 92 e8 ldi r25, 0x82 ; 130 + 1ac: 58 df rcall .-336 ; 0x5e + rf12_ready(); + 1ae: f2 df rcall .-28 ; 0x194 + rf12_trans(0xB8AA); + 1b0: 8a ea ldi r24, 0xAA ; 170 + 1b2: 98 eb ldi r25, 0xB8 ; 184 + 1b4: 54 df rcall .-344 ; 0x5e + rf12_ready(); + 1b6: ee df rcall .-36 ; 0x194 + rf12_trans(0xB8AA); + 1b8: 8a ea ldi r24, 0xAA ; 170 + 1ba: 98 eb ldi r25, 0xB8 ; 184 + 1bc: 50 df rcall .-352 ; 0x5e + rf12_ready(); + 1be: ea df rcall .-44 ; 0x194 + rf12_trans(0xB8AA); + 1c0: 8a ea ldi r24, 0xAA ; 170 + 1c2: 98 eb ldi r25, 0xB8 ; 184 + 1c4: 4c df rcall .-360 ; 0x5e + rf12_ready(); + 1c6: e6 df rcall .-52 ; 0x194 + rf12_trans(0xB82D); + 1c8: 8d e2 ldi r24, 0x2D ; 45 + 1ca: 98 eb ldi r25, 0xB8 ; 184 + 1cc: 48 df rcall .-368 ; 0x5e + rf12_ready(); + 1ce: e2 df rcall .-60 ; 0x194 + rf12_trans(0xB8D4); + 1d0: 84 ed ldi r24, 0xD4 ; 212 + 1d2: 98 eb ldi r25, 0xB8 ; 184 + 1d4: 44 df rcall .-376 ; 0x5e + for (i=0; i +void rf12_ready(void) +{ cbi(RF_PORT, CS); + while (!(RF_PIN&(1< + rf12_trans(0xB800|(*data++)); + 1ea: f8 01 movw r30, r16 + 1ec: 81 91 ld r24, Z+ + 1ee: 8f 01 movw r16, r30 + 1f0: 90 e0 ldi r25, 0x00 ; 0 + 1f2: 98 6b ori r25, 0xB8 ; 184 + 1f4: 34 df rcall .-408 ; 0x5e + rf12_trans(0xB8AA); + rf12_ready(); + rf12_trans(0xB82D); + rf12_ready(); + rf12_trans(0xB8D4); + for (i=0; i + { rf12_ready(); + rf12_trans(0xB800|(*data++)); + } + rf12_ready(); + 1fc: cb df rcall .-106 ; 0x194 + rf12_trans(0x8208); // TX off + 1fe: 88 e0 ldi r24, 0x08 ; 8 + 200: 92 e8 ldi r25, 0x82 ; 130 + 202: 2d df rcall .-422 ; 0x5e +} + 204: df 91 pop r29 + 206: cf 91 pop r28 + 208: 1f 91 pop r17 + 20a: 0f 91 pop r16 + 20c: 08 95 ret + +0000020e : + +void rf12_rxdata(unsigned char *data, unsigned char number) +{ unsigned char i; + 20e: 0f 93 push r16 + 210: 1f 93 push r17 + 212: cf 93 push r28 + 214: df 93 push r29 + 216: 8c 01 movw r16, r24 + 218: d6 2f mov r29, r22 + rf12_trans(0x82C8); // RX on + 21a: 88 ec ldi r24, 0xC8 ; 200 + 21c: 92 e8 ldi r25, 0x82 ; 130 + 21e: 1f df rcall .-450 ; 0x5e + rf12_trans(0xCA81); // set FIFO mode + 220: 81 e8 ldi r24, 0x81 ; 129 + 222: 9a ec ldi r25, 0xCA ; 202 + 224: 1c df rcall .-456 ; 0x5e + rf12_trans(0xCA83); // enable FIFO + 226: 83 e8 ldi r24, 0x83 ; 131 + 228: 9a ec ldi r25, 0xCA ; 202 + 22a: 19 df rcall .-462 ; 0x5e + for (i=0; i + } + rf12_ready(); + rf12_trans(0x8208); // TX off +} + +void rf12_rxdata(unsigned char *data, unsigned char number) + 230: c8 01 movw r24, r16 + 232: 01 96 adiw r24, 0x01 ; 1 + 234: d1 50 subi r29, 0x01 ; 1 + 236: 9c 01 movw r18, r24 + 238: 2d 0f add r18, r29 + 23a: 31 1d adc r19, r1 + 23c: e9 01 movw r28, r18 +{ unsigned char i; + rf12_trans(0x82C8); // RX on + rf12_trans(0xCA81); // set FIFO mode + rf12_trans(0xCA83); // enable FIFO + for (i=0; i + *data++=rf12_trans(0xB000); + 240: 80 e0 ldi r24, 0x00 ; 0 + 242: 90 eb ldi r25, 0xB0 ; 176 + 244: 0c df rcall .-488 ; 0x5e + 246: f8 01 movw r30, r16 + 248: 81 93 st Z+, r24 + 24a: 8f 01 movw r16, r30 +void rf12_rxdata(unsigned char *data, unsigned char number) +{ unsigned char i; + rf12_trans(0x82C8); // RX on + rf12_trans(0xCA81); // set FIFO mode + rf12_trans(0xCA83); // enable FIFO + for (i=0; i + { rf12_ready(); + *data++=rf12_trans(0xB000); + } + rf12_trans(0x8208); // RX off + 252: 88 e0 ldi r24, 0x08 ; 8 + 254: 92 e8 ldi r25, 0x82 ; 130 + 256: 03 df rcall .-506 ; 0x5e +} + 258: df 91 pop r29 + 25a: cf 91 pop r28 + 25c: 1f 91 pop r17 + 25e: 0f 91 pop r16 + 260: 08 95 ret + +00000262 : + +void rf12_txpacket(uint8_t addr, uint8_t data) { + 262: cf 93 push r28 + 264: df 93 push r29 + 266: d8 2f mov r29, r24 + 268: c6 2f mov r28, r22 + rf12_trans(0x8238); // TX on + 26a: 88 e3 ldi r24, 0x38 ; 56 + 26c: 92 e8 ldi r25, 0x82 ; 130 + 26e: f7 de rcall .-530 ; 0x5e + rf12_ready(); + 270: 91 df rcall .-222 ; 0x194 + rf12_trans(0xB8AA); + 272: 8a ea ldi r24, 0xAA ; 170 + 274: 98 eb ldi r25, 0xB8 ; 184 + 276: f3 de rcall .-538 ; 0x5e + rf12_ready(); + 278: 8d df rcall .-230 ; 0x194 + rf12_trans(0xB8AA); + 27a: 8a ea ldi r24, 0xAA ; 170 + 27c: 98 eb ldi r25, 0xB8 ; 184 + 27e: ef de rcall .-546 ; 0x5e + rf12_ready(); + 280: 89 df rcall .-238 ; 0x194 + rf12_trans(0xB8AA); + 282: 8a ea ldi r24, 0xAA ; 170 + 284: 98 eb ldi r25, 0xB8 ; 184 + 286: eb de rcall .-554 ; 0x5e + rf12_ready(); + 288: 85 df rcall .-246 ; 0x194 + rf12_trans(0xB82D); + 28a: 8d e2 ldi r24, 0x2D ; 45 + 28c: 98 eb ldi r25, 0xB8 ; 184 + 28e: e7 de rcall .-562 ; 0x5e + rf12_ready(); + 290: 81 df rcall .-254 ; 0x194 + rf12_trans(0xB8D4); + 292: 84 ed ldi r24, 0xD4 ; 212 + 294: 98 eb ldi r25, 0xB8 ; 184 + 296: e3 de rcall .-570 ; 0x5e + rf12_ready(); + 298: 7d df rcall .-262 ; 0x194 + rf12_trans(0xB800|addr); + 29a: 8d 2f mov r24, r29 + 29c: 90 e0 ldi r25, 0x00 ; 0 + 29e: 98 6b ori r25, 0xB8 ; 184 + 2a0: de de rcall .-580 ; 0x5e + rf12_ready(); + 2a2: 78 df rcall .-272 ; 0x194 + rf12_trans(0xB800|data); + 2a4: 8c 2f mov r24, r28 + 2a6: 90 e0 ldi r25, 0x00 ; 0 + 2a8: 98 6b ori r25, 0xB8 ; 184 + 2aa: d9 de rcall .-590 ; 0x5e + rf12_ready(); + 2ac: 73 df rcall .-282 ; 0x194 + rf12_trans(0xB800); + 2ae: 80 e0 ldi r24, 0x00 ; 0 + 2b0: 98 eb ldi r25, 0xB8 ; 184 + 2b2: d5 de rcall .-598 ; 0x5e + rf12_ready(); + 2b4: 6f df rcall .-290 ; 0x194 + rf12_trans(0x8208); + 2b6: 88 e0 ldi r24, 0x08 ; 8 + 2b8: 92 e8 ldi r25, 0x82 ; 130 + 2ba: d1 de rcall .-606 ; 0x5e + 2bc: 8f e1 ldi r24, 0x1F ; 31 + 2be: 9e e4 ldi r25, 0x4E ; 78 + 2c0: 01 97 sbiw r24, 0x01 ; 1 + 2c2: f1 f7 brne .-4 ; 0x2c0 + 2c4: 00 c0 rjmp .+0 ; 0x2c6 + 2c6: 00 00 nop + _delay_ms(10); + 2c8: df 91 pop r29 + 2ca: cf 91 pop r28 + 2cc: 08 95 ret + +000002ce : + +void send() { + //unsigned char text[1] = {0x01}; + //rf12_txdata(text,1); + //_delay_ms(100); + rf12_txpacket(55,99); + 2ce: 87 e3 ldi r24, 0x37 ; 55 + 2d0: 90 e0 ldi r25, 0x00 ; 0 + 2d2: 63 e6 ldi r22, 0x63 ; 99 + 2d4: 70 e0 ldi r23, 0x00 ; 0 + 2d6: c5 df rcall .-118 ; 0x262 +} + 2d8: 08 95 ret + +000002da
: + +int main(void) +{ + rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) + 2da: da de rcall .-588 ; 0x90 + rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen + 2dc: 80 e2 ldi r24, 0x20 ; 32 + 2de: 96 e0 ldi r25, 0x06 ; 6 + 2e0: 17 df rcall .-466 ; 0x110 + rf12_setbandwidth(1, 0, 7); // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm + 2e2: 81 e0 ldi r24, 0x01 ; 1 + 2e4: 60 e0 ldi r22, 0x00 ; 0 + 2e6: 47 e0 ldi r20, 0x07 ; 7 + 2e8: f6 de rcall .-532 ; 0xd6 + rf12_setbaud(9600); // 19200 baud + 2ea: 80 e8 ldi r24, 0x80 ; 128 + 2ec: 95 e2 ldi r25, 0x25 ; 37 + 2ee: 1f df rcall .-450 ; 0x12e + rf12_setpower(0, 6); // 1mW Ausgangsleistung, 120kHz Frequenzshift + 2f0: 80 e0 ldi r24, 0x00 ; 0 + 2f2: 66 e0 ldi r22, 0x06 ; 6 + 2f4: 3f df rcall .-386 ; 0x174 + + DDRC |= (1< + PORTC &= ~(1< + 30c: 00 c0 rjmp .+0 ; 0x30e + 30e: 00 00 nop + 310: f3 cf rjmp .-26 ; 0x2f8 + +00000312 <__udivmodsi4>: + 312: a1 e2 ldi r26, 0x21 ; 33 + 314: 1a 2e mov r1, r26 + 316: aa 1b sub r26, r26 + 318: bb 1b sub r27, r27 + 31a: fd 01 movw r30, r26 + 31c: 0d c0 rjmp .+26 ; 0x338 <__udivmodsi4_ep> + +0000031e <__udivmodsi4_loop>: + 31e: aa 1f adc r26, r26 + 320: bb 1f adc r27, r27 + 322: ee 1f adc r30, r30 + 324: ff 1f adc r31, r31 + 326: a2 17 cp r26, r18 + 328: b3 07 cpc r27, r19 + 32a: e4 07 cpc r30, r20 + 32c: f5 07 cpc r31, r21 + 32e: 20 f0 brcs .+8 ; 0x338 <__udivmodsi4_ep> + 330: a2 1b sub r26, r18 + 332: b3 0b sbc r27, r19 + 334: e4 0b sbc r30, r20 + 336: f5 0b sbc r31, r21 + +00000338 <__udivmodsi4_ep>: + 338: 66 1f adc r22, r22 + 33a: 77 1f adc r23, r23 + 33c: 88 1f adc r24, r24 + 33e: 99 1f adc r25, r25 + 340: 1a 94 dec r1 + 342: 69 f7 brne .-38 ; 0x31e <__udivmodsi4_loop> + 344: 60 95 com r22 + 346: 70 95 com r23 + 348: 80 95 com r24 + 34a: 90 95 com r25 + 34c: 9b 01 movw r18, r22 + 34e: ac 01 movw r20, r24 + 350: bd 01 movw r22, r26 + 352: cf 01 movw r24, r30 + 354: 08 95 ret + +00000356 <__divmodsi4>: + 356: 97 fb bst r25, 7 + 358: 09 2e mov r0, r25 + 35a: 05 26 eor r0, r21 + 35c: 0e d0 rcall .+28 ; 0x37a <__divmodsi4_neg1> + 35e: 57 fd sbrc r21, 7 + 360: 04 d0 rcall .+8 ; 0x36a <__divmodsi4_neg2> + 362: d7 df rcall .-82 ; 0x312 <__udivmodsi4> + 364: 0a d0 rcall .+20 ; 0x37a <__divmodsi4_neg1> + 366: 00 1c adc r0, r0 + 368: 38 f4 brcc .+14 ; 0x378 <__divmodsi4_exit> + +0000036a <__divmodsi4_neg2>: + 36a: 50 95 com r21 + 36c: 40 95 com r20 + 36e: 30 95 com r19 + 370: 21 95 neg r18 + 372: 3f 4f sbci r19, 0xFF ; 255 + 374: 4f 4f sbci r20, 0xFF ; 255 + 376: 5f 4f sbci r21, 0xFF ; 255 + +00000378 <__divmodsi4_exit>: + 378: 08 95 ret + +0000037a <__divmodsi4_neg1>: + 37a: f6 f7 brtc .-4 ; 0x378 <__divmodsi4_exit> + 37c: 90 95 com r25 + 37e: 80 95 com r24 + 380: 70 95 com r23 + 382: 61 95 neg r22 + 384: 7f 4f sbci r23, 0xFF ; 255 + 386: 8f 4f sbci r24, 0xFF ; 255 + 388: 9f 4f sbci r25, 0xFF ; 255 + 38a: 08 95 ret + +0000038c <_exit>: + 38c: f8 94 cli + +0000038e <__stop_program>: + 38e: ff cf rjmp .-2 ; 0x38e <__stop_program> diff --git a/Sender/Sender/Debug/Sender.map b/Sender/Sender/Debug/Sender.map new file mode 100644 index 0000000..83739bd --- /dev/null +++ b/Sender/Sender/Debug/Sender.map @@ -0,0 +1,421 @@ +Archive member included because of file (symbol) + +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + rf12.o (__udivmodsi4) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + rf12.o (__divmodsi4) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o (exit) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + rf12.o (__do_copy_data) +e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + rf12.o (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00002000 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 +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o +LOAD rf12.o +LOAD Sender.o +START GROUP +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4\libm.a +END GROUP +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4\libc.a +LOAD e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a + +.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 0x390 + *(.vectors) + .vectors 0x00000000 0x26 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000026 . = ALIGN (0x2) + 0x00000026 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000026 0x0 linker stubs + *(.trampolines*) + 0x00000026 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000026 __ctors_start = . + *(.ctors) + 0x00000026 __ctors_end = . + 0x00000026 __dtors_start = . + *(.dtors) + 0x00000026 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000026 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + 0x00000026 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000026 0xc e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000032 0x16 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + 0x00000032 __do_copy_data + .init4 0x00000048 0x10 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + 0x00000048 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000058 0x4 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + *(.init9) + *(.text) + .text 0x0000005c 0x2 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + 0x0000005c __vector_1 + 0x0000005c __vector_12 + 0x0000005c __bad_interrupt + 0x0000005c __vector_6 + 0x0000005c __vector_3 + 0x0000005c __vector_11 + 0x0000005c __vector_13 + 0x0000005c __vector_17 + 0x0000005c __vector_7 + 0x0000005c __vector_5 + 0x0000005c __vector_4 + 0x0000005c __vector_9 + 0x0000005c __vector_2 + 0x0000005c __vector_15 + 0x0000005c __vector_8 + 0x0000005c __vector_14 + 0x0000005c __vector_10 + 0x0000005c __vector_16 + 0x0000005c __vector_18 + .text 0x0000005e 0x270 rf12.o + 0x0000005e rf12_trans + 0x00000090 rf12_init + 0x000000d6 rf12_setbandwidth + 0x00000110 rf12_setfreq + 0x0000012e rf12_setbaud + 0x00000174 rf12_setpower + 0x00000194 rf12_ready + 0x0000019c rf12_txdata + 0x0000020e rf12_rxdata + 0x00000262 rf12_txpacket + .text 0x000002ce 0x44 Sender.o + 0x000002ce send + 0x000002da main + .text 0x00000312 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .text 0x00000312 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .text 0x00000312 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .text 0x00000312 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .text 0x00000312 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + 0x00000312 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000312 0x44 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + 0x00000312 __udivmodsi4 + .text.libgcc 0x00000356 0x36 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + 0x00000356 __divmodsi4 + .text.libgcc 0x0000038c 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .text.libgcc 0x0000038c 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .text.libgcc 0x0000038c 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + 0x0000038c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000038c 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + 0x0000038c _exit + 0x0000038c exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000038c 0x4 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x00000390 _etext = . + +.data 0x00800060 0x0 load address 0x00000390 + 0x00800060 PROVIDE (__data_start, .) + *(.data) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + .data 0x00800060 0x0 rf12.o + .data 0x00800060 0x0 Sender.o + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .data 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800060 . = ALIGN (0x2) + 0x00800060 _edata = . + 0x00800060 PROVIDE (__data_end, .) + +.bss 0x00800060 0x0 + 0x00800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + .bss 0x00800060 0x0 rf12.o + .bss 0x00800060 0x0 Sender.o + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .bss 0x00800060 0x0 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800060 PROVIDE (__bss_end, .) + 0x00000390 __data_load_start = LOADADDR (.data) + 0x00000390 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800060 0x0 + 0x00800060 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800060 PROVIDE (__noinit_end, .) + 0x00800060 _end = . + 0x00800060 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6cc + *(.stab) + .stab 0x00000000 0x6cc e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + +.stabstr 0x00000000 0x85 + *(.stabstr) + .stabstr 0x00000000 0x85 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/../../../../avr/lib/avr4/crtm8a.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0xe0 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 rf12.o + .debug_aranges + 0x00000020 0x20 Sender.o + .debug_aranges + 0x00000040 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .debug_aranges + 0x00000060 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .debug_aranges + 0x00000080 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .debug_aranges + 0x000000a0 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .debug_aranges + 0x000000c0 0x20 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x97e + *(.debug_info) + .debug_info 0x00000000 0x3df rf12.o + .debug_info 0x000003df 0x14e Sender.o + .debug_info 0x0000052d 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .debug_info 0x0000060a 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .debug_info 0x000006e7 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .debug_info 0x000007c4 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .debug_info 0x000008a1 0xdd e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2cd + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x173 rf12.o + .debug_abbrev 0x00000173 0xf6 Sender.o + .debug_abbrev 0x00000269 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .debug_abbrev 0x0000027d 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .debug_abbrev 0x00000291 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .debug_abbrev 0x000002a5 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .debug_abbrev 0x000002b9 0x14 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + +.debug_line 0x00000000 0x66d + *(.debug_line) + .debug_line 0x00000000 0x1ff rf12.o + .debug_line 0x000001ff 0x17e Sender.o + .debug_line 0x0000037d 0xa8 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_udivmodsi4.o) + .debug_line 0x00000425 0xa1 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_divmodsi4.o) + .debug_line 0x000004c6 0x88 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_exit.o) + .debug_line 0x0000054e 0x91 e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_copy_data.o) + .debug_line 0x000005df 0x8e e:/programme/atmel/atmel studio 6.0/extensions/atmel/avrgcc/3.4.1.95/avrtoolchain/bin/../lib/gcc/avr/4.6.2/avr4\libgcc.a(_clear_bss.o) + +.debug_frame 0x00000000 0x11c + *(.debug_frame) + .debug_frame 0x00000000 0xe8 rf12.o + .debug_frame 0x000000e8 0x34 Sender.o + +.debug_str 0x00000000 0x1ce + *(.debug_str) + .debug_str 0x00000000 0x1b6 rf12.o + 0x209 (size before relaxing) + .debug_str 0x000001b6 0x18 Sender.o + 0x140 (size before relaxing) + +.debug_loc 0x00000000 0x317 + *(.debug_loc) + .debug_loc 0x00000000 0x317 rf12.o + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(Sender.elf elf32-avr) +LOAD linker stubs diff --git a/Sender/Sender/Debug/Sender.srec b/Sender/Sender/Debug/Sender.srec new file mode 100644 index 0000000..e87f15a --- /dev/null +++ b/Sender/Sender/Debug/Sender.srec @@ -0,0 +1,59 @@ +S00E000053656E6465722E73726563B5 +S113000012C02CC02BC02AC029C028C027C026C0BB +S113001025C024C023C022C021C020C01FC01EC0D0 +S11300201DC01CC01BC011241FBECFE5D4E0DEBF21 +S1130030CDBF10E0A0E6B0E0E0E9F3E002C0059037 +S11300400D92A036B107D9F710E0A0E6B0E001C0E8 +S11300501D92A036B107E1F740D198C1D1CFAC9839 +S113006040E120E030E0992314F4AA9A01C0AA9850 +S1130070220F331F99992160AB9A880F991F00C0F2 +S11300800000AB98415079F7AC9A822F932F0895D2 +S11300908CE184BB80E185BB8FEF90E7A2E08150C7 +S11300A09040A040E1F700C0000080EE90ECD7DF64 +S11300B087ED90E8D4DF8BEA92ECD1DF81E89AEC0B +S11300C0CEDF80E090EECBDF80E098ECC8DF87EFF6 +S11300D094ECC5DF089590E0880F991F829592955E +S11300E0907F9827807F9827907050E047705070D9 +S11300F0842B952B946970E063707070660F771F82 +S1130100660F771F660F771F862B972BA8DF08953E +S11301108036910538F02FE08034920728F08FE381 +S11301209FE002C080E690E0906A99DF089522E0A3 +S113013087399207F0F025E18831920770F49C0129 +S113014040E050E060E678EA80E090E004D1C90144 +S113015001978068966C83DF08959C0140E050E02D +S11301606CEF72E485E090E0D4D0C9010197966CFD +S113017076DF089590E087709070986970E06295DA +S11301807295707F7627607F76277070862B972B09 +S113019066DF0895AC98999BFECF08950F931F9343 +S11301A0CF93DF938C01C62F88E392E858DFF2DF08 +S11301B08AEA98EB54DFEEDF8AEA98EB50DFEADF55 +S11301C08AEA98EB4CDFE6DF8DE298EB48DFE2DF6A +S11301D084ED98EB44DFCC2389F0C8010196C1502B +S11301E09C012C0F311DE901D5DFF80181918F01AC +S11301F090E0986B34DF0C171D07B1F7CBDF88E074 +S113020092E82DDFDF91CF911F910F9108950F9305 +S11302101F93CF93DF938C01D62F88EC92E81FDFD6 +S113022081E89AEC1CDF83E89AEC19DFDD2389F07E +S1130230C8010196D1509C012D0F311DE901AADF9F +S113024080E090EB0CDFF80181938F01EC17FD0740 +S1130250B1F788E092E803DFDF91CF911F910F910E +S11302600895CF93DF93D82FC62F88E392E8F7DE63 +S113027091DF8AEA98EBF3DE8DDF8AEA98EBEFDE12 +S113028089DF8AEA98EBEBDE85DF8DE298EBE7DE27 +S113029081DF84ED98EBE3DE7DDF8D2F90E0986BBA +S11302A0DEDE78DF8C2F90E0986BD9DE73DF80E0A0 +S11302B098EBD5DE6FDF88E092E8D1DE8FE19EE433 +S11302C00197F1F700C00000DF91CF91089587E313 +S11302D090E063E670E0C5DF0895DADE80E296E040 +S11302E017DF81E060E047E0F6DE80E895E21FDF9B +S11302F080E066E03FDFA59AAD9AE9DFAD988FEF25 +S113030094E3ACE081509040A040E1F700C00000CD +S1130310F3CFA1E21A2EAA1BBB1BFD010DC0AA1F1D +S1130320BB1FEE1FFF1FA217B307E407F50720F05A +S1130330A21BB30BE40BF50B661F771F881F991FD5 +S11303401A9469F760957095809590959B01AC011E +S1130350BD01CF01089597FB092E05260ED057FD48 +S113036004D0D7DF0AD0001C38F45095409530955E +S113037021953F4F4F4F5F4F0895F6F79095809525 +S1130380709561957F4F8F4F9F4F0895F894FFCFDD +S9030000FC diff --git a/Sender/Sender/Debug/makedep.mk b/Sender/Sender/Debug/makedep.mk new file mode 100644 index 0000000..f691cab --- /dev/null +++ b/Sender/Sender/Debug/makedep.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +rf12.c + +Sender.c + diff --git a/Sender/Sender/Debug/rf12.d b/Sender/Sender/Debug/rf12.d new file mode 100644 index 0000000..9f4acdb --- /dev/null +++ b/Sender/Sender/Debug/rf12.d @@ -0,0 +1,48 @@ +rf12.d rf12.o: .././rf12.c \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom8a.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h \ + e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h \ + .././global.h .././rf12.h + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/iom8a.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/portpins.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/common.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/version.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/fuse.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/lock.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/util/delay_basic.h: + +e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/math.h: + +.././global.h: + +.././rf12.h: diff --git a/Sender/Sender/Sender.c b/Sender/Sender/Sender.c new file mode 100644 index 0000000..94bd971 --- /dev/null +++ b/Sender/Sender/Sender.c @@ -0,0 +1,37 @@ +/* + * Sender.c + * + * Created: 24.03.2013 17:10:24 + * Author: netz + */ + +#define F_CPU 8000000 + +#include +#include +#include "rf12.h" + +void send() { + //unsigned char text[1] = {0x01}; + //rf12_txdata(text,1); + //_delay_ms(100); + rf12_txpacket(55,99); +} + +int main(void) +{ + rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) + rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen + rf12_setbandwidth(1, 0, 7); // 400kHz Bandbreite, 0dB Verstärkung, DRSSI threshold: -61dBm + rf12_setbaud(9600); // 19200 baud + rf12_setpower(0, 6); // 1mW Ausgangsleistung, 120kHz Frequenzshift + + DDRC |= (1< + + + 2.0 + 6.0 + com.Atmel.AVRGCC8 + {94f7c1f8-043f-4c56-a743-1d31cdca3c2e} + ATmega8A + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + Sender + Sender + Sender + Native + true + false + + 0 + 3.5.1 + com.atmel.avrdbg.tool.ispmk2 + ISP + + com.atmel.avrdbg.tool.ispmk2 + AVRISP mkII + 0000000000000 + true + false + + + + 127.0.0.1 + 51623 + False + + + ISP + + 249000 + 1000000 + 250000 + false + false + 0 + 0 + 0 + 0 + + + + + + + + True + True + True + True + True + True + Optimize for size (-Os) + True + True + True + + + m + + + + + + + + + True + True + True + True + True + True + Optimize (-O1) + True + True + Default (-g2) + True + + + m + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/Sender/Sender/global.h b/Sender/Sender/global.h new file mode 100644 index 0000000..e016dee --- /dev/null +++ b/Sender/Sender/global.h @@ -0,0 +1,13 @@ +/* + * global.h + * + * Created: 25.03.2013 00:02:40 + * Author: netz + */ + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif \ No newline at end of file diff --git a/Sender/Sender/rf12.c b/Sender/Sender/rf12.c new file mode 100644 index 0000000..0bde947 --- /dev/null +++ b/Sender/Sender/rf12.c @@ -0,0 +1,150 @@ +/* + * rf12.c + * + * Created: 24.03.2013 23:52:52 + * Author: netz + */ + +#define F_CPU 8000000 + +#define RF_PORT PORTC +#define RF_DDR DDRC +#define RF_PIN PINC + +#define CS PC4 +#define SCK PC3 +#define SDI PC2 +#define SDO PC1 + + +#include +#include +#include "global.h" +#include "rf12.h" + +unsigned short rf12_trans(unsigned short wert) +{ unsigned short werti=0; + unsigned char i; + + cbi(RF_PORT, CS); + for (i=0; i<16; i++) + { if (wert&32768) + sbi(RF_PORT, SDI); + else + cbi(RF_PORT, SDI); + werti<<=1; + if (RF_PIN&(1<3903) // 439,7575MHz + freq=3903; + rf12_trans(0xA000|freq); +} + +void rf12_setbaud(unsigned short baud) +{ + if (baud<663) + return; + if (baud<5400) // Baudrate= 344827,58621/(R+1)/(1+CS*7) + rf12_trans(0xC680|((43104/baud)-1)); + else + rf12_trans(0xC600|((344828UL/baud)-1)); +} + +void rf12_setpower(unsigned char power, unsigned char mod) +{ + rf12_trans(0x9800|(power&7)|((mod&15)<<4)); +} + +void rf12_ready(void) +{ cbi(RF_PORT, CS); + while (!(RF_PIN&(1<