1 | SENDER
|
2 | void init_rfm12(void)
|
3 | {
|
4 | SPI_Config_CMD_16Bit(0x80E8);//80h 1110 1000; el=1=Sendepuffer EIN, ef=1= RX FIFO Buffer EIN ,
|
5 | //b1='10`= 868MHz Band, Lastkapazität =12,5pF
|
6 | SPI_Config_CMD_16Bit(0x8239);//Komponentenauswahl Sender 82h 0011 1000 er=0= Empfangstrakt AUS,ebb=0 et='1'=Sender EIN, es=1=synthesizer EIN
|
7 | // dc=1= Taktausgang AUS= '0' ausgeben;
|
8 | warten100ms();
|
9 | SPI_Config_CMD_16Bit(0xCC77);//PLL konfigurieren, nur RFM12B, siehe Artikel µC
|
10 | SPI_Config_CMD_16Bit(0xC040);//Batterieüberwachung:2,2V, Ausgangsfrequenz für µC=1,66MHz
|
11 | SPI_Config_CMD_16Bit(0xA76C);//Frequenz festlegen, 76C = 869.5MHz Berechnung:869,5-860 = 9,5 / 0,005 = 1900 oder 0x76C
|
12 | SPI_Config_CMD_16Bit(0xC647);//BIT-Rate: 4,8kbps
|
13 | SPI_Config_CMD_16Bit(0x94A0);//VDI Ausgang, Schnell, Basisbandbreite 134kHz, LNA Gewinn = 0dBm, DRSSI-Schwelle: -103dBm
|
14 | SPI_Config_CMD_16Bit(0xC2AC);//al, !ml, digitaler Filter, DQD-Schwellwert = 4
|
15 | SPI_Config_CMD_16Bit(0xCA81);//FIFO und Rücksetz-Betriebsart -->0xCA81 kein Erkennungsmuster auswerten, FIFO immer beschreiben
|
16 | SPI_Config_CMD_16Bit(0xC4F7);//AFC-Einstellung 1111 0011 --> unabhängig von VDI, +-20kHz delta f,
|
17 | SPI_Config_CMD_16Bit(0x9853);//Senderkonfiguration 5-->Frequenzhub +-90kHz, Leistung(yyyx) 0--> Maximalleistung x =3 =-21dB
|
18 | SPI_Config_CMD_16Bit(0xE000);//nicht verwendet, Überwachungszeitgeber
|
19 | SPI_Config_CMD_16Bit(0xC800);//nicht verwendet
|
20 | }
|
21 |
|
22 | void daten_senden(void)
|
23 | {
|
24 | P4OUT &= ~BIT1;//gelb();
|
25 | //SPI_Config_CMD_16Bit(0x0000); //liest Status und löscht Interruptanforderungen
|
26 | SPI_Config_CMD_16Bit(0xB8AA);
|
27 | SPI_Config_CMD_16Bit(0xB8AA);
|
28 | SPI_Config_CMD_16Bit(0xB8AA);
|
29 | //SPI_Config_CMD_16Bit(0xB82D);
|
30 | //SPI_Config_CMD_16Bit(0xB8D4);
|
31 | //SPI_Config_CMD_16Bit(0xCED4);//Synchronisationsmuster 2 Bytes
|
32 | SPI_Config_CMD_16Bit(0xB855);
|
33 | SPI_Config_CMD_16Bit(0xB855);
|
34 | SPI_Config_CMD_16Bit(0xB855);
|
35 | P4OUT |= BIT1;//_gelb();
|
36 | }
|
37 | ------------------------------------------------------------------------------------
|
38 | EMPFÄNGER
|
39 | void init_rfm12(void)
|
40 | {
|
41 | SPI_Config_CMD_16Bit(0x80E8);//80h 1110 1000; el=1=Sendepuffer EIN, ef=1= RX FIFO Buffer EIN ,
|
42 | //b1='10`= 868MHz Band, Lastkapazität =12,5pF
|
43 | // SPI_Config_CMD_16Bit(0x8238);//Komponentenauswahl Sender 82h 0011 1000 er=0= Empfangstrakt AUS,ebb=0 et='1'=Sender EIN, es=1=synthesizer EIN
|
44 | //dc=0= Taktausgang EIN;
|
45 | //SPI_Config_CMD_16Bit(0x8239);//Komponentenauswahl Sender 82h 0011 1000 er=0= Empfangstrakt AUS,ebb=0 et='1'=Sender EIN, es=1=synthesizer EIN
|
46 | // dc=1= Taktausgang AUS= '0' ausgeben;
|
47 | //SPI_Config_CMD_16Bit(0x82F8);//Komponentenauswahl: alles EIN
|
48 | SPI_Config_CMD_16Bit(0x82C8);//Komponentenauswahl Empfänger 82h 1100 1000 er=1= Empfänger EIN, et='0'=Sendertrakt AUS,es=0=synthesizer AUS
|
49 | warten100ms();
|
50 | SPI_Config_CMD_16Bit(0xCC77);//PLL konfigurieren, nur RFM12B, siehe Artikel µC
|
51 | SPI_Config_CMD_16Bit(0xC040);//Batterieüberwachung:2,2V, Ausgangsfrequenz für µC=1,66MHz
|
52 | SPI_Config_CMD_16Bit(0xA76C);//Frequenz festlegen, 76C = 869.5MHz Berechnung:869,5-860 = 9,5 / 0,005 = 1900 oder 0x76C
|
53 | SPI_Config_CMD_16Bit(0xC647);//BIT-Rate: 4,8kbps
|
54 | SPI_Config_CMD_16Bit(0x94A0);//VDI Ausgang, Schnell, Basisbandbreite 134kHz, LNA Gewinn = 0dBm, DRSSI-Schwelle: -103dBm
|
55 | SPI_Config_CMD_16Bit(0xC2AC);//al, !ml, digitaler Filter, DQD-Schwellwert = 4
|
56 | SPI_Config_CMD_16Bit(0xCA81);//FIFO und Rücksetz-Betriebsart -->0xCA81 kein Erkennungsmuster auswerten, FIFO immer beschreiben
|
57 | // SPI_Config_CMD_16Bit(0xCED4);//Synchronisationsmuster 2Bytes
|
58 | SPI_Config_CMD_16Bit(0xC4F7);//AFC-Einstellung 1111 0011 --> unabhängig von VDI, +-20kHz delta f,
|
59 | SPI_Config_CMD_16Bit(0x9853);//Senderkonfiguration 5-->Frequenzhub +-90kHz, Leistung(yyyx) 0--> Maximalleistung x =3 =-21dB
|
60 |
|
61 | SPI_Config_CMD_16Bit(0xE000);//nicht verwendet, Überwachungszeitgeber
|
62 | SPI_Config_CMD_16Bit(0xC800);//nicht verwendet
|
63 |
|
64 | }
|
65 |
|
66 | unsigned int empfangen_RFM12BP(void)
|
67 | {
|
68 | SPI_Config_CMD_16Bit(0x82C8);//Komponentenauswahl 82h 1100 1000 er=1= Empfänger EIN, et='0'=SenderAUS,es=0=synthesizer AUS
|
69 | warten100ms();
|
70 | warten100ms();
|
71 | statusRFM=SPI_Config_CMD_16Bit(0x0000);
|
72 | SPI_Config_CMD_16Bit(0xCA81); // setzen der FIFO Betriebsart
|
73 | SPI_Config_CMD_16Bit(0xCA83); // FIFO einschalten
|
74 | fifo=SPI_Config_CMD_16Bit(0xB000); // 0xB000 = lesen FIFO------- FIFO_data=
|
75 |
|
76 | }
|
77 | -------------------------------------------------------------------------------
|
78 | SOFTWARE-SPI
|
79 |
|
80 | unsigned int SPI_Config_CMD_16Bit ( unsigned int SPI_CMD_16Bit)
|
81 | {
|
82 | char i;//=16;
|
83 | SDI_low;
|
84 | nCS_low;
|
85 |
|
86 | for(i=0;i<16;i++)
|
87 | {
|
88 | if( SPI_CMD_16Bit & BITF ) // ...if most significant bit in SPI_CMD_16Bit = '1'
|
89 | {
|
90 | SDI_high; // set SDI-Port '1'
|
91 | }
|
92 | else
|
93 | {
|
94 | SDI_low; // set SDI-Port '0'
|
95 | }
|
96 | SCK_high; // Clock 0 -> 1, Datenübernahme
|
97 | datenin = datenin << 1;
|
98 | if (P5IN & BIT2 == BIT2)
|
99 | {
|
100 | datenin = datenin | 0x0001;
|
101 | }
|
102 | SCK_low; // Clock 1 -> 0
|
103 | SPI_CMD_16Bit <<= 1; // shift left ( next bit as most significant bit ...)
|
104 |
|
105 | }
|