-         

Ergebnis 1 bis 2 von 2

Thema: RFM12 auf 868Mhz konfigurieren und betreiben

  1. #1

    RFM12 auf 868Mhz konfigurieren und betreiben

    Anzeige

    Hallo,

    Steck immoment bei dem Funkmodul RFM12 fest, da ich dieses gerne mit 868Mhz betreiben möchte! Empfängerseite ist das Funkmodul hier von dieser Seite:http://www.ulrichradig.de/home/index.php/avr/usb-funk
    mit folgendem Code:

    Code:
    #include <avr/interrupt.h>
    
    #include <avr/io.h>
    #include "usart.h"
    
    #include "rf12.h"
    
    //------------------------------------------------------------------------------
    
    
    
    int main (void) 
    
    {
    
    	unsigned char test[100]="test hallo\n";
    
    	usart_init(9600); // Serielle Schnittstelle initialisieren
    
    	DDRD |= (1<<6);
    
    
    
    	PORTD |= (1<<6);
    
    	
    
    	usart_write("USB TEST\r\n"); 
    
    
    
    	rf12_init();					// ein paar Register setzen (z.B. CLK auf 10MHz)
    
    	rf12_setfreq(RF12FREQ(868,3));	// Sende/Empfangsfrequenz auf 433,92MHz einstellen
    
    	rf12_setbandwidth(5, 1, 4);		// 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm 
    
    	rf12_setbaud(9600);				// 19200 baud
    
    	rf12_setpower(0, 6);			// 1mW Ausgangangsleistung, 120k
    
    	
    
      while(1)
    
      { 
    
    	
    
    	while(!(rf12_rxdata(test)));
    
    	
    
    	usart_write("%s",(char*)test);
    
    	usart_write("\r\n");
    
    	
    
      }
    
    }
    und auf der Senderseite habe ich einen Atmel Mega 8 mit Grundbeschaltung (ein 10k Widerstand von Reset nach VCC und nen 100nF Kondensator zwischen VCC und GND ) und internem 8Mhz Quarz. Hier wurde folgender Code verwendet:

    Code:
    #include <avr/interrupt.h>
    
    #include <avr/io.h>
    #include "usart.h"
    
    #include "rf12.h"
    
    //------------------------------------------------------------------------------
    
    
    
    int main (void) 
    
    {
    
    	unsigned char test[100]="test hallo\n";
    
    	usart_init(9600); // Serielle Schnittstelle initialisieren
    
    	
    
    	DDRB = (1<<3);
    
    	PORTB = (1<<3);
    
    	
    
    	rf12_init();					// ein paar Register setzen (z.B. CLK auf 10MHz)
    
    	rf12_setfreq(RF12FREQ(868.3));	// Sende/Empfangsfrequenz auf 433,92MHz einstellen
    
    	rf12_setbandwidth(5, 1, 4);		// 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm 
    
    	rf12_setbaud(9600);				// 19200 baud
    
    	rf12_setpower(0, 6);			// 1mW Ausgangangsleistung, 120k
    
    	
    
      	while(1)
    
      	{ 
    
    	
    
    	rf12_txdata(test,13);
    
    	for(long a = 0;a<100000;a++){asm("nop");};
    
    	
    
    	}
    
    }
    Außerdem habe ich noch folgende Stellen in RF12.c angepasst(angepasste stellen sind in Klammern gekennzeichnet) :

    Code:
    	for (i=0; i<10; i++)
    
    		_delay_ms(10);			// wait until POR done
    
    
    
    	rf12_trans(0xC0E0);			// AVR CLK: 10MHz
    
    	rf12_trans(0x80"E"7);			// 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
    
    	rf12_trans(0x0000);
    Und in RF12.h:
    Code:
    "//Mega 8 defines werden direkt gesetzt und nicht mehr der Controller erfragt!
    "
    	#define RF_PORT	PORTB
    	#define RF_DDR	DDRB
    	#define RF_PIN	PINB
    	#define SDI		3
    	#define SCK		5
    	#define CS		2
    	#define SDO		4
    und:
    Code:
    // macro for calculating frequency value out of frequency in MHz
    #define RF12FREQ(freq)	("(freq-860.0)/0.005)	"
    Den Original Code kann man hier runterladen:

    http://www.ulrichradig.de/home/uploa...E/USB_FUNK.zip

    Leider funktioniert die Übertragung nicht ich habe beide Funkmodule voneinander in 10cm Abstand liegen! Allerdings auch noch an keinem eine Antenne (brauchen diese auch für so eine kurze Distanz eine ?).

    Fällt vielleicht jemanden von euch so auf anhieb ein Fehler auf?

    Freue mich auf eure Antworten

    gruß Tobias

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Hast du auch ein Modul das für 868MHz ausgelegt ist, es steht auf dem Modul drauf.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •