Hallo Grandalf,
ich habe mal irgendwo im Internet diese Datei gefunden (waren eigentlich mehere, hab sie aber zusammengefügt und noch ein bisschen bearbeitet):
RFM12.h
Die def.h Datei braucht man, wenn der Compiller die Makros sbi und cbi nicht kennt (zb. AVR-GCC). Sie werden in dieser Datei definiert.
Um das Modul nun zu initialisieren muss man folgende Funktionen aufrufen:Code:#include <avr/io.h> #ifdef _C_ #define true 1 #define false 0 #endif #ifndef cbi #define cbi(sfr, bit) sfr &= ~(1 << bit) #endif #ifndef sbi #define sbi(sfr, bit) sfr |= (1 << bit) #endif #ifndef bit_is_set #define bit_is_set(sfr, bit) sfr & (1 << bit) #endif #ifndef bit_is_clear #define bit_is_clear(sfr, bit) !(sfr & (1 << bit)) #endif #ifndef loop_until_bit_is_set #define loop_until_bit_is_set(sfr, bit) while(sfr & (1 << bit)) #endif #ifndef loop_until_bit_is_clear #define loop_until_bit_is_clear(sfr, bit) while(!(sfr & (1 << bit))) #endif #ifndef BV #define BV(bit) (1 << bit) #endif
(Vielleicht vor und nach den Funktionen noch ein paar ms warten.)Code:rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) rf12_setfreq(RF12FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen rf12_setbandwidth(4, 1, 4); // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm rf12_setbaud(19200); // 19200 baud rf12_setpower(0, 6); // 1mW Ausgangangsleistung, 120kHz Frequenzshift
Es stehen insgesamt folgende Funktionen zur Verfügung:
mfg _R2D2Code: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)







Zitieren

Lesezeichen