20130326-182550

This commit is contained in:
2013-03-26 17:24:35 +00:00
parent 215867c80e
commit 201aa084d7
34 changed files with 3771 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Atmel Studio Solution File, Format Version 11.00
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "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
Binary file not shown.
+130
View File
@@ -0,0 +1,130 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../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"
+46
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:
+1
View File
@@ -0,0 +1 @@
:00000001FF
Binary file not shown.
+58
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
+758
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>
+421
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
+59
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
+8
View File
@@ -0,0 +1,8 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
rf12.c
Sender.c
+48
View File
@@ -0,0 +1,48 @@
rf12.d rf12.o: .././rf12.c \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/io.h \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/sfr_defs.h \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/inttypes.h \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/include/stdint.h \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/stdint.h \
e:\programme\atmel\atmel\ studio\ 6.0\extensions\atmel\avrgcc\3.4.1.95\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/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
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
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
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
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
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_ */