20130326-182550

This commit is contained in:
2013-03-26 17:24:35 +00:00
parent 215867c80e
commit 201aa084d7
34 changed files with 3771 additions and 0 deletions
+20
View File
@@ -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
Binary file not shown.
+130
View File
@@ -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"
+46
View File
@@ -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:
+1
View File
@@ -0,0 +1 @@
:00000001FF
Binary file not shown.
+65
View File
@@ -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
+739
View File
@@ -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 <main>
8a: 0c 94 fa 01 jmp 0x3f4 ; 0x3f4 <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <recive>:
#include <avr/io.h>
#include <util/delay.h>
#include "rf12.h"
void recive() {
92: cf 93 push r28
94: df 93 push r29
96: 00 d0 rcall .+0 ; 0x98 <recive+0x6>
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 <rf12_rxdata>
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 <recive+0x34>
b0: 8a 81 ldd r24, Y+2 ; 0x02
b2: 83 36 cpi r24, 0x63 ; 99
b4: 41 f4 brne .+16 ; 0xc6 <recive+0x34>
PORTB |= (1<<PB0);
b6: c0 9a sbi 0x18, 0 ; 24
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
b8: 8f e3 ldi r24, 0x3F ; 63
ba: 9c e9 ldi r25, 0x9C ; 156
bc: 01 97 sbiw r24, 0x01 ; 1
be: f1 f7 brne .-4 ; 0xbc <recive+0x2a>
c0: 00 c0 rjmp .+0 ; 0xc2 <recive+0x30>
c2: 00 00 nop
_delay_ms(20);
PORTB &= ~(1<<PB0);
c4: c0 98 cbi 0x18, 0 ; 24
}
}
c6: 0f 90 pop r0
c8: 0f 90 pop r0
ca: df 91 pop r29
cc: cf 91 pop r28
ce: 08 95 ret
000000d0 <send>:
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 <rf12_txdata>
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 <send+0x1e>
f6: 00 c0 rjmp .+0 ; 0xf8 <send+0x28>
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 <main>:
int main(void)
{
rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz)
102: 0e 94 b1 00 call 0x162 ; 0x162 <rf12_init>
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_setfreq>
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_setbandwidth>
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_setbaud>
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 <rf12_setpower>
DDRB |= (1<<PB0);
128: b8 9a sbi 0x17, 0 ; 23
while(1)
{
recive();
12a: 0e 94 49 00 call 0x92 ; 0x92 <recive>
12e: fd cf rjmp .-6 ; 0x12a <main+0x28>
00000130 <rf12_trans>:
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 <util/delay.h>
#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 <rf12_trans+0x10>
sbi(RF_PORT, SDI);
13c: 95 9a sbi 0x12, 5 ; 18
13e: 01 c0 rjmp .+2 ; 0x142 <rf12_trans+0x12>
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<<SDO))
146: 86 99 sbic 0x10, 6 ; 16
werti|=1;
148: 21 60 ori r18, 0x01 ; 1
sbi(RF_PORT, SCK);
14a: 94 9a sbi 0x12, 4 ; 18
wert<<=1;
14c: 88 0f add r24, r24
14e: 99 1f adc r25, r25
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
150: 00 c0 rjmp .+0 ; 0x152 <rf12_trans+0x22>
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 <rf12_trans+0x8>
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 <rf12_init>:
void rf12_init(void)
{
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
162: 88 e3 ldi r24, 0x38 ; 56
164: 81 bb out 0x11, r24 ; 17
RF_PORT=(1<<CS);
166: 88 e0 ldi r24, 0x08 ; 8
168: 82 bb out 0x12, r24 ; 18
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
16a: 8f ef ldi r24, 0xFF ; 255
16c: 90 e7 ldi r25, 0x70 ; 112
16e: a2 e0 ldi r26, 0x02 ; 2
170: 81 50 subi r24, 0x01 ; 1
172: 90 40 sbci r25, 0x00 ; 0
174: a0 40 sbci r26, 0x00 ; 0
176: e1 f7 brne .-8 ; 0x170 <rf12_init+0xe>
178: 00 c0 rjmp .+0 ; 0x17a <rf12_init+0x18>
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>
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>
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>
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>
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>
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>
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 <rf12_trans>
}
1b4: 08 95 ret
000001b6 <rf12_setbandwidth>:
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 <rf12_trans>
}
1f0: 08 95 ret
000001f2 <rf12_setfreq>:
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 <rf12_setfreq+0x14>
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 <rf12_setfreq+0x18>
200: 8f e3 ldi r24, 0x3F ; 63
202: 9f e0 ldi r25, 0x0F ; 15
204: 02 c0 rjmp .+4 ; 0x20a <rf12_setfreq+0x18>
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 <rf12_trans>
}
210: 08 95 ret
00000212 <rf12_setbaud>:
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 <rf12_setbaud+0x4c>
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_setbaud+0x30>
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 <rf12_trans>
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 <rf12_trans>
25e: 08 95 ret
00000260 <rf12_setpower>:
}
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 <rf12_trans>
}
280: 08 95 ret
00000282 <rf12_ready>:
void rf12_ready(void)
{ cbi(RF_PORT, CS);
282: 93 98 cbi 0x12, 3 ; 18
while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready
284: 86 9b sbis 0x10, 6 ; 16
286: fe cf rjmp .-4 ; 0x284 <rf12_ready+0x2>
}
288: 08 95 ret
0000028a <rf12_txdata>:
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_trans>
rf12_ready();
29e: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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_trans>
rf12_ready();
2aa: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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_trans>
rf12_ready();
2b6: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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_trans>
rf12_ready();
2c2: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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_trans>
rf12_ready();
2ce: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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 <rf12_trans>
for (i=0; i<number; i++)
2da: cc 23 and r28, r28
2dc: 99 f0 breq .+38 ; 0x304 <rf12_txdata+0x7a>
void rf12_ready(void)
{ cbi(RF_PORT, CS);
while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready
}
void rf12_txdata(unsigned char *data, unsigned char number)
2de: c8 01 movw r24, r16
2e0: 01 96 adiw r24, 0x01 ; 1
2e2: c1 50 subi r28, 0x01 ; 1
2e4: 9c 01 movw r18, r24
2e6: 2c 0f add r18, r28
2e8: 31 1d adc r19, r1
2ea: e9 01 movw r28, r18
rf12_ready();
rf12_trans(0xB82D);
rf12_ready();
rf12_trans(0xB8D4);
for (i=0; i<number; i++)
{ rf12_ready();
2ec: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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>
rf12_trans(0xB8AA);
rf12_ready();
rf12_trans(0xB82D);
rf12_ready();
rf12_trans(0xB8D4);
for (i=0; i<number; i++)
2fe: 0c 17 cp r16, r28
300: 1d 07 cpc r17, r29
302: a1 f7 brne .-24 ; 0x2ec <rf12_txdata+0x62>
{ rf12_ready();
rf12_trans(0xB800|(*data++));
}
rf12_ready();
304: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
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 <rf12_trans>
}
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 <rf12_rxdata>:
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>
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>
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 <rf12_trans>
for (i=0; i<number; i++)
33e: dd 23 and r29, r29
340: 99 f0 breq .+38 ; 0x368 <rf12_rxdata+0x4e>
}
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<number; i++)
{ rf12_ready();
350: 0e 94 41 01 call 0x282 ; 0x282 <rf12_ready>
*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 <rf12_trans>
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<number; i++)
362: ec 17 cp r30, r28
364: fd 07 cpc r31, r29
366: a1 f7 brne .-24 ; 0x350 <rf12_rxdata+0x36>
{ 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 <rf12_trans>
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>
+424
View File
@@ -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
+66
View File
@@ -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
+8
View File
@@ -0,0 +1,8 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
Reciver.c
rf12.c
+48
View File
@@ -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:
+50
View File
@@ -0,0 +1,50 @@
/*
* Reciver.c
*
* Created: 25.03.2013 21:03:07
* Author: netz
*/
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#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<<PB0);
_delay_ms(20);
PORTB &= ~(1<<PB0);
}
}
void send() {
unsigned char text[1] = {0x01};
rf12_txdata(text,1);
_delay_ms(100);
}
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
DDRB |= (1<<PB0);
while(1)
{
recive();
//_delay_ms(200);
/*PORTB |= (1<<PB0);
send();
PORTB &= ~(1<<PB0);
_delay_ms(900);*/
}
}
+114
View File
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>6.0</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8</ToolchainName>
<ProjectGuid>{762e00f9-912f-4c48-851f-1f51c060e5ae}</ProjectGuid>
<avrdevice>ATmega16A</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>Reciver</AssemblyName>
<Name>Reciver</Name>
<RootNamespace>Reciver</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue />
<eraseonlaunchrule>0</eraseonlaunchrule>
<AsfVersion>3.5.1</AsfVersion>
<avrtool>com.atmel.avrdbg.tool.ispmk2</avrtool>
<avrtoolinterface>ISP</avrtoolinterface>
<com_atmel_avrdbg_tool_ispmk2>
<ToolType>com.atmel.avrdbg.tool.ispmk2</ToolType>
<ToolName>AVRISP mkII</ToolName>
<ToolNumber>0000000000000</ToolNumber>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue>
</OverrideVtorValue>
<Channel>
<host>127.0.0.1</host>
<port>49503</port>
<ssl>False</ssl>
</Channel>
<ToolOptions>
<InterfaceName>ISP</InterfaceName>
<InterfaceProperties>
<JtagDbgClock>249000</JtagDbgClock>
<JtagProgClock>1000000</JtagProgClock>
<IspClock>250000</IspClock>
<JtagInChain>false</JtagInChain>
<JtagEnableExtResetOnStartSession>false</JtagEnableExtResetOnStartSession>
<JtagDevicesBefore>0</JtagDevicesBefore>
<JtagDevicesAfter>0</JtagDevicesAfter>
<JtagInstrBitsBefore>0</JtagInstrBitsBefore>
<JtagInstrBitsAfter>0</JtagInstrBitsAfter>
</InterfaceProperties>
</ToolOptions>
</com_atmel_avrdbg_tool_ispmk2>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>m</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>m</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="global.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Reciver.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="rf12.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="rf12.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+20
View File
@@ -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_ */
+127
View File
@@ -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 <avr/io.h>
#include <util/delay.h>
#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<<SDO))
werti|=1;
sbi(RF_PORT, SCK);
wert<<=1;
_delay_us(0.3);
cbi(RF_PORT, SCK);
}
sbi(RF_PORT, CS);
return werti;
}
void rf12_init(void)
{
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
RF_PORT=(1<<CS);
_delay_ms(100);
rf12_trans(0xC0E0); // AVR CLK: 10MHz
rf12_trans(0x80D7); // Enable FIFO
rf12_trans(0xC2AB); // Data Filter: internal
rf12_trans(0xCA81); // Set FIFO mode
rf12_trans(0xE000); // disable wakeuptimer
rf12_trans(0xC800); // disable low duty cycle
rf12_trans(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz
}
void rf12_setbandwidth(unsigned char bandwidth, unsigned char gain, unsigned char drssi)
{
rf12_trans(0x9400|((bandwidth&7)<<5)|((gain&3)<<3)|(drssi&7));
}
void rf12_setfreq(unsigned short freq)
{ if (freq<96) // 430,2400MHz
freq=96;
else if (freq>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<<SDO))); // wait until FIFO ready
}
void rf12_txdata(unsigned char *data, unsigned char number)
{ unsigned char i;
rf12_trans(0x8238); // TX on
rf12_ready();
rf12_trans(0xB8AA);
rf12_ready();
rf12_trans(0xB8AA);
rf12_ready();
rf12_trans(0xB8AA);
rf12_ready();
rf12_trans(0xB82D);
rf12_ready();
rf12_trans(0xB8D4);
for (i=0; i<number; i++)
{ rf12_ready();
rf12_trans(0xB800|(*data++));
}
rf12_ready();
rf12_trans(0x8208); // TX off
}
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<number; i++)
{ rf12_ready();
*data++=rf12_trans(0xB000);
}
rf12_trans(0x8208); // RX off
}
+25
View File
@@ -0,0 +1,25 @@
/*
* rf12.h
*
* Created: 25.03.2013 00:25:08
* Author: netz
*/
#ifndef RF12_H_
#define RF12_H_
extern unsigned short rf12_trans(unsigned short wert); // transfer 1 word to/from module
extern void rf12_init(void); // initialize module
extern void rf12_setfreq(unsigned short freq); // set center frequency
extern void rf12_setbaud(unsigned short baud); // set baudrate
extern void rf12_setpower(unsigned char power, unsigned char mod); // set transmission settings
extern void rf12_setbandwidth(unsigned char bandwidth, unsigned char gain, unsigned char drssi); // set receiver settings
extern void rf12_txdata(unsigned char *data, unsigned char number); // transmit number of bytes from array
extern void rf12_rxdata(unsigned char *data, unsigned char number); // receive number of bytes into array
extern void rf12_ready(void); // wait until FIFO ready (to transmit/read data)
#define RF12FREQ(freq) ((freq-430.0)/0.0025) // macro for calculating frequency value out of frequency in MHz
#endif /* RF12_H_ */