20130326-182550

This commit is contained in:
BlubbFish 2013-03-26 17:24:35 +00:00
parent 215867c80e
commit 201aa084d7
34 changed files with 3771 additions and 0 deletions

20
Reciver/Reciver.atsln Normal file
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

BIN
Reciver/Reciver.atsuo Normal file

Binary file not shown.

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"

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:

View File

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

Binary file not shown.

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

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>

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

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

View File

@ -0,0 +1,8 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
Reciver.c
rf12.c

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
Reciver/Reciver/Reciver.c Normal file
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);*/
}
}

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
Reciver/Reciver/global.h Normal file
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
Reciver/Reciver/rf12.c Normal file
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
Reciver/Reciver/rf12.h Normal file
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_ */

20
Sender/Sender.atsln Normal file
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}") = "Sender", "Sender\Sender.cproj", "{94F7C1F8-043F-4C56-A743-1D31CDCA3C2E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
Release|AVR = Release|AVR
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{94F7C1F8-043F-4C56-A743-1D31CDCA3C2E}.Debug|AVR.ActiveCfg = Debug|AVR
{94F7C1F8-043F-4C56-A743-1D31CDCA3C2E}.Debug|AVR.Build.0 = Debug|AVR
{94F7C1F8-043F-4C56-A743-1D31CDCA3C2E}.Release|AVR.ActiveCfg = Release|AVR
{94F7C1F8-043F-4C56-A743-1D31CDCA3C2E}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
Sender/Sender.atsuo Normal file

Binary file not shown.

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 += \
../rf12.c \
../Sender.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
rf12.o \
Sender.o
OBJS_AS_ARGS += \
rf12.o \
Sender.o
C_DEPS += \
rf12.d \
Sender.d
C_DEPS_AS_ARGS += \
rf12.d \
Sender.d
OUTPUT_FILE_PATH +=Sender.elf
OUTPUT_FILE_PATH_AS_ARGS +=Sender.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=atmega8a -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="Sender.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -mmcu=atmega8a
@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 "Sender.elf" "Sender.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 "Sender.elf" "Sender.eep" || exit 0
"E:\Programme\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\bin\avr-objdump.exe" -h -S "Sender.elf" > "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"

View File

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

View File

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

Binary file not shown.

View File

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

View File

@ -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 <main>
5a: 98 c1 rjmp .+816 ; 0x38c <_exit>
0000005c <__bad_interrupt>:
5c: d1 cf rjmp .-94 ; 0x0 <__vectors>
0000005e <rf12_trans>:
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 <util/delay.h>
#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 <rf12_trans+0x10>
sbi(RF_PORT, SDI);
6a: aa 9a sbi 0x15, 2 ; 21
6c: 01 c0 rjmp .+2 ; 0x70 <rf12_trans+0x12>
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<<SDO))
74: 99 99 sbic 0x13, 1 ; 19
werti|=1;
76: 21 60 ori r18, 0x01 ; 1
sbi(RF_PORT, SCK);
78: ab 9a sbi 0x15, 3 ; 21
wert<<=1;
7a: 88 0f add r24, r24
7c: 99 1f adc r25, r25
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
7e: 00 c0 rjmp .+0 ; 0x80 <rf12_trans+0x22>
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 <rf12_trans+0x8>
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 <rf12_init>:
void rf12_init(void)
{
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
90: 8c e1 ldi r24, 0x1C ; 28
92: 84 bb out 0x14, r24 ; 20
RF_PORT=(1<<CS);
94: 80 e1 ldi r24, 0x10 ; 16
96: 85 bb out 0x15, r24 ; 21
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
98: 8f ef ldi r24, 0xFF ; 255
9a: 90 e7 ldi r25, 0x70 ; 112
9c: a2 e0 ldi r26, 0x02 ; 2
9e: 81 50 subi r24, 0x01 ; 1
a0: 90 40 sbci r25, 0x00 ; 0
a2: a0 40 sbci r26, 0x00 ; 0
a4: e1 f7 brne .-8 ; 0x9e <rf12_init+0xe>
a6: 00 c0 rjmp .+0 ; 0xa8 <rf12_init+0x18>
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>
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>
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>
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>
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>
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>
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 <rf12_trans>
}
d4: 08 95 ret
000000d6 <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));
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 <rf12_trans>
}
10e: 08 95 ret
00000110 <rf12_setfreq>:
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 <rf12_setfreq+0x14>
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 <rf12_setfreq+0x18>
11e: 8f e3 ldi r24, 0x3F ; 63
120: 9f e0 ldi r25, 0x0F ; 15
122: 02 c0 rjmp .+4 ; 0x128 <rf12_setfreq+0x18>
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 <rf12_trans>
}
12c: 08 95 ret
0000012e <rf12_setbaud>:
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 <rf12_setbaud+0x44>
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_setbaud+0x2c>
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 <rf12_trans>
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 <rf12_trans>
172: 08 95 ret
00000174 <rf12_setpower>:
}
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 <rf12_trans>
}
192: 08 95 ret
00000194 <rf12_ready>:
void rf12_ready(void)
{ cbi(RF_PORT, CS);
194: ac 98 cbi 0x15, 4 ; 21
while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready
196: 99 9b sbis 0x13, 1 ; 19
198: fe cf rjmp .-4 ; 0x196 <rf12_ready+0x2>
}
19a: 08 95 ret
0000019c <rf12_txdata>:
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_trans>
rf12_ready();
1ae: f2 df rcall .-28 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
1b0: 8a ea ldi r24, 0xAA ; 170
1b2: 98 eb ldi r25, 0xB8 ; 184
1b4: 54 df rcall .-344 ; 0x5e <rf12_trans>
rf12_ready();
1b6: ee df rcall .-36 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
1b8: 8a ea ldi r24, 0xAA ; 170
1ba: 98 eb ldi r25, 0xB8 ; 184
1bc: 50 df rcall .-352 ; 0x5e <rf12_trans>
rf12_ready();
1be: ea df rcall .-44 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
1c0: 8a ea ldi r24, 0xAA ; 170
1c2: 98 eb ldi r25, 0xB8 ; 184
1c4: 4c df rcall .-360 ; 0x5e <rf12_trans>
rf12_ready();
1c6: e6 df rcall .-52 ; 0x194 <rf12_ready>
rf12_trans(0xB82D);
1c8: 8d e2 ldi r24, 0x2D ; 45
1ca: 98 eb ldi r25, 0xB8 ; 184
1cc: 48 df rcall .-368 ; 0x5e <rf12_trans>
rf12_ready();
1ce: e2 df rcall .-60 ; 0x194 <rf12_ready>
rf12_trans(0xB8D4);
1d0: 84 ed ldi r24, 0xD4 ; 212
1d2: 98 eb ldi r25, 0xB8 ; 184
1d4: 44 df rcall .-376 ; 0x5e <rf12_trans>
for (i=0; i<number; i++)
1d6: cc 23 and r28, r28
1d8: 89 f0 breq .+34 ; 0x1fc <rf12_txdata+0x60>
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)
1da: c8 01 movw r24, r16
1dc: 01 96 adiw r24, 0x01 ; 1
1de: c1 50 subi r28, 0x01 ; 1
1e0: 9c 01 movw r18, r24
1e2: 2c 0f add r18, r28
1e4: 31 1d adc r19, r1
1e6: e9 01 movw r28, r18
rf12_ready();
rf12_trans(0xB82D);
rf12_ready();
rf12_trans(0xB8D4);
for (i=0; i<number; i++)
{ rf12_ready();
1e8: d5 df rcall .-86 ; 0x194 <rf12_ready>
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>
rf12_trans(0xB8AA);
rf12_ready();
rf12_trans(0xB82D);
rf12_ready();
rf12_trans(0xB8D4);
for (i=0; i<number; i++)
1f6: 0c 17 cp r16, r28
1f8: 1d 07 cpc r17, r29
1fa: b1 f7 brne .-20 ; 0x1e8 <rf12_txdata+0x4c>
{ rf12_ready();
rf12_trans(0xB800|(*data++));
}
rf12_ready();
1fc: cb df rcall .-106 ; 0x194 <rf12_ready>
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 <rf12_trans>
}
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 <rf12_rxdata>:
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>
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>
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 <rf12_trans>
for (i=0; i<number; i++)
22c: dd 23 and r29, r29
22e: 89 f0 breq .+34 ; 0x252 <rf12_rxdata+0x44>
}
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<number; i++)
{ rf12_ready();
23e: aa df rcall .-172 ; 0x194 <rf12_ready>
*data++=rf12_trans(0xB000);
240: 80 e0 ldi r24, 0x00 ; 0
242: 90 eb ldi r25, 0xB0 ; 176
244: 0c df rcall .-488 ; 0x5e <rf12_trans>
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<number; i++)
24c: ec 17 cp r30, r28
24e: fd 07 cpc r31, r29
250: b1 f7 brne .-20 ; 0x23e <rf12_rxdata+0x30>
{ 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 <rf12_trans>
}
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 <rf12_txpacket>:
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_trans>
rf12_ready();
270: 91 df rcall .-222 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
272: 8a ea ldi r24, 0xAA ; 170
274: 98 eb ldi r25, 0xB8 ; 184
276: f3 de rcall .-538 ; 0x5e <rf12_trans>
rf12_ready();
278: 8d df rcall .-230 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
27a: 8a ea ldi r24, 0xAA ; 170
27c: 98 eb ldi r25, 0xB8 ; 184
27e: ef de rcall .-546 ; 0x5e <rf12_trans>
rf12_ready();
280: 89 df rcall .-238 ; 0x194 <rf12_ready>
rf12_trans(0xB8AA);
282: 8a ea ldi r24, 0xAA ; 170
284: 98 eb ldi r25, 0xB8 ; 184
286: eb de rcall .-554 ; 0x5e <rf12_trans>
rf12_ready();
288: 85 df rcall .-246 ; 0x194 <rf12_ready>
rf12_trans(0xB82D);
28a: 8d e2 ldi r24, 0x2D ; 45
28c: 98 eb ldi r25, 0xB8 ; 184
28e: e7 de rcall .-562 ; 0x5e <rf12_trans>
rf12_ready();
290: 81 df rcall .-254 ; 0x194 <rf12_ready>
rf12_trans(0xB8D4);
292: 84 ed ldi r24, 0xD4 ; 212
294: 98 eb ldi r25, 0xB8 ; 184
296: e3 de rcall .-570 ; 0x5e <rf12_trans>
rf12_ready();
298: 7d df rcall .-262 ; 0x194 <rf12_ready>
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_trans>
rf12_ready();
2a2: 78 df rcall .-272 ; 0x194 <rf12_ready>
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_trans>
rf12_ready();
2ac: 73 df rcall .-282 ; 0x194 <rf12_ready>
rf12_trans(0xB800);
2ae: 80 e0 ldi r24, 0x00 ; 0
2b0: 98 eb ldi r25, 0xB8 ; 184
2b2: d5 de rcall .-598 ; 0x5e <rf12_trans>
rf12_ready();
2b4: 6f df rcall .-290 ; 0x194 <rf12_ready>
rf12_trans(0x8208);
2b6: 88 e0 ldi r24, 0x08 ; 8
2b8: 92 e8 ldi r25, 0x82 ; 130
2ba: d1 de rcall .-606 ; 0x5e <rf12_trans>
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 <rf12_txpacket+0x5e>
2c4: 00 c0 rjmp .+0 ; 0x2c6 <rf12_txpacket+0x64>
2c6: 00 00 nop
_delay_ms(10);
2c8: df 91 pop r29
2ca: cf 91 pop r28
2cc: 08 95 ret
000002ce <send>:
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 <rf12_txpacket>
}
2d8: 08 95 ret
000002da <main>:
int main(void)
{
rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz)
2da: da de rcall .-588 ; 0x90 <rf12_init>
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_setfreq>
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_setbandwidth>
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_setbaud>
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 <rf12_setpower>
DDRC |= (1<<PC5);
2f6: a5 9a sbi 0x14, 5 ; 20
while(1)
{
PORTC |= (1<<PC5);
2f8: ad 9a sbi 0x15, 5 ; 21
send();
2fa: e9 df rcall .-46 ; 0x2ce <send>
PORTC &= ~(1<<PC5);
2fc: ad 98 cbi 0x15, 5 ; 21
2fe: 8f ef ldi r24, 0xFF ; 255
300: 94 e3 ldi r25, 0x34 ; 52
302: ac e0 ldi r26, 0x0C ; 12
304: 81 50 subi r24, 0x01 ; 1
306: 90 40 sbci r25, 0x00 ; 0
308: a0 40 sbci r26, 0x00 ; 0
30a: e1 f7 brne .-8 ; 0x304 <main+0x2a>
30c: 00 c0 rjmp .+0 ; 0x30e <main+0x34>
30e: 00 00 nop
310: f3 cf rjmp .-26 ; 0x2f8 <main+0x1e>
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>

View File

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

View File

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

View File

@ -0,0 +1,8 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
rf12.c
Sender.c

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

37
Sender/Sender/Sender.c Normal file
View File

@ -0,0 +1,37 @@
/*
* Sender.c
*
* Created: 24.03.2013 17:10:24
* Author: netz
*/
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#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<<PC5);
while(1)
{
PORTC |= (1<<PC5);
send();
PORTC &= ~(1<<PC5);
_delay_ms(500);
}
}

114
Sender/Sender/Sender.cproj Normal file
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>{94f7c1f8-043f-4c56-a743-1d31cdca3c2e}</ProjectGuid>
<avrdevice>ATmega8A</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>Sender</AssemblyName>
<Name>Sender</Name>
<RootNamespace>Sender</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>51623</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="rf12.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="rf12.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Sender.c">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>

13
Sender/Sender/global.h Normal file
View File

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

150
Sender/Sender/rf12.c Normal file
View File

@ -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 <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
}
void rf12_txpacket(uint8_t addr, uint8_t data) {
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);
rf12_ready();
rf12_trans(0xB800|addr);
rf12_ready();
rf12_trans(0xB800|data);
rf12_ready();
rf12_trans(0xB800);
rf12_ready();
rf12_trans(0x8208);
_delay_ms(10);
}

25
Sender/Sender/rf12.h Normal file
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_ */