Guten Tag,
ich versuche hier verzweifelt seit tagen einen string bzw. ein byte mit
einem rfm12b zu senden bzw. empfangen.
Verkablung:
1 SDO -> MISO
2 NIRQ -> frei
3 FSK/DATA/NFFS -> VCC 3,3V
4 DCLK/CFIL/FFIT -> frei
5 CLK -> frei
6 NRES -> frei
7 GND -> GND
8 ANT -> Antenne 7,5cm
9 VCC -> VCC 3,3V
10 GND -> GND
11 NINT/VDI -> frei
12 SDI -> MOSI
13 SCK -> SCK
14 NSEL -> SS
Ist die Verdrahtung so korrekt?
Fragen:
-NRES kann freigelassen werden?
So nun zu der Software:
Sender:
1
#include"rfm12b.h"
2
#include<inttypes.h>
3
#ifndef F_CPU
4
#define F_CPU 1000000L
5
#endif
6
#include<util/delay.h>
7
#define SCL_CLOCK 100000L
8
9
10
intmain()
11
{
12
inti;
13
uint8_tdata[]="test";
14
15
DDRB=0xff;
16
DDRD=0xff;
17
DDRC=0xff;
18
19
for(i=0;i<4;i++)
20
{
21
PORTB=(1<<PB1);
22
_delay_ms(500);
23
PORTB=!(1<<PB1);
24
_delay_ms(500);
25
}
26
27
SPCR=(1<<SPE)|(1<<MSTR);
28
SPSR=(1<<SPI2X);
29
30
RFM12B_init_hard();
31
RFM12B_init_soft();
32
33
while(1)
34
{
35
RFM12B_transmit(data,5);
36
_delay_ms(500);
37
38
}
39
}
Hier gibt es glaub ich keine Probleme (stromaufnahme in 500ms abständen
auf Netzteilanzeige).
Nun der Empfänger:
1
#include"rfm12b.h"
2
#ifndef F_CPU
3
#define F_CPU 1000000L
4
#endif
5
#include<util/delay.h>
6
#define SCL_CLOCK 100000L
7
8
intmain()
9
{
10
inti;
11
uint8_tdata[5];
12
DDRB=0xff;
13
DDRD=0xff;
14
DDRC=0xff;
15
16
for(i=0;i<4;i++)
17
{
18
PORTB=(1<<PB1);
19
_delay_ms(500);
20
PORTB=!(1<<PB1);
21
_delay_ms(500);
22
}
23
24
25
SPCR=(1<<SPE)|(1<<MSTR);
26
SPSR=(1<<SPI2X);
27
28
RFM12B_init_hard();
29
RFM12B_init_soft();
30
31
while(1)
32
{
33
RFM12B_receive(data,5);
34
if(data[0]=='t')
35
PORTD=(1<<PD0);
36
else
37
PORTD=!(1<<PD0);
38
_delay_ms(500);
39
}
40
}
Fragen:
- code vom prinzip überhaupt richtig?
- if(data[0]=='t') kann das gehen?
kann mir wer helfen?
bitte keine links auf andere threads im forum, die hab ich schon durch
;P
achja die rfm12b.h bzw. die zugehörige rf12b.c noch:
Hat wirklich keiner eine Lösung für das Problem? Ich habe auch dieses
Problem und komme garnicht weiter. Wäre schön, wenn sich jemand
bereiterklären würde zu helfen!
MfG
Sören
> ... (die Reichweite beträgt etwa 50 cm) ...> Der Code scheint doch nicht so gut zu sein.
Entweder das oder er hat vergessen, eine (bzw. zwei :-) Antenne(n)
anzubauen..