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.
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
Um das Modul nun zu initialisieren muss man folgende Funktionen aufrufen:
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
(Vielleicht vor und nach den Funktionen noch ein paar ms warten.)
Es stehen insgesamt folgende Funktionen zur Verfügung:
Code:
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)
mfg _R2D2
Lesezeichen