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:
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 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"); } }
Außerdem habe ich noch folgende Stellen in RF12.c angepasst(angepasste stellen sind in Klammern gekennzeichnet) :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");}; } }
Und in RF12.h: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: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
Den Original Code kann man hier runterladen:Code:// macro for calculating frequency value out of frequency in MHz #define RF12FREQ(freq) ("(freq-860.0)/0.005) "
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







Zitieren
Lesezeichen