typedef unsigned short WORD;
typedef unsigned char BYTE;
#define elemof(x) (sizeof(x)/sizeof(*(x)))
#include "Wireless_ID.h"
typedef union{
struct{
BYTE type_len; // Bit 5 = NeedAck (BULK), Bit 4 = IsAck, Bit 3:0 = Länge Daten
BYTE sendrecv; // Bit 7:4 = Sender, Bit 3:0 = Empfänger
BYTE data[15]; // max. 15 Bytes Daten
};
BYTE all[17];
}rf12dat;
extern WORD rf12_xfer(WORD wert); // transfer 1 word to/from module
extern void rf12_init(void); // initialize module
// (3) macro for calculating frequency value out of frequency in MHz
#define RF12FREQ(freq) (0xA000|((freq)-430.0)*4000)
// (4) macro for calculating baudrate (only high baud rates)
#define RF12BAUD(baud) (0xC600+344828UL/(baud)-1)
// (10) macro for calculating transmission settings (misleading name!)
#define RF12POWER(power,mod) (0x9800|(power)&7|(mod)<<4)
// (5) macro for calculating receiver settings
#define RF12BW(bandwidth,gain,drssi) (0x9400|(bandwidth)<<5|(gain)<<3|(drssi))
// transmit number of bytes from array
// Fehlerkodes: -1 = TimeOut am Anfang (kann nicht senden)
// -17 = TimeOut beim ACK
// -18 = Abriss des Datenstroms während ACK
// -19 = CRC-Fehler im ACK-Paket
// -20 = empfangenes (gültiges) Paket ist kein ACK-Paket
extern void rf12_txdata(const BYTE *data);
// receive number of bytes into array
// Fehlerkodes: -1 = TimeOut am Anfang (kein Header {2DD4} erkannt)
// -2 = Abriss des Datenstroms
// -3 = CRC-Fehler
// Der Adressat wird hier nicht ausgewertet!
extern BYTE rf12_rxdata(BYTE *data);
extern void rf12_startrx();
// für USB-Standby oder Batteriebetrieb 10-MHz-Quarz abschalten
#define rf12_powerdown() rf12_xfer(0x8201) // (2)
// Oszillator UND Synthesizer für schnelleres RX/TX-Umschalten
// Einschaltzeit maximal 5 ms
#define rf12_powerup() rf12_xfer(0x8219), _delay_ms(5)
// Empfangsmodus: TX aus, RX ein, Umschaltzeit 425 µs, Mustersuche EIN
#define rf12_rxmode() rf12_xfer(0x82D9), rf12_startrx()
// Sendemodus: RX aus, TX ein, Umschaltzeit 300 µs
// Zum Debuggen Quarzausgang aktivieren
#define rf12_txmode() rf12_xfer(0x8278)
// ein verwendbarer Puffer (intern für rf12_poll())
extern rf12dat rf12buf;
extern BYTE rf12_channel; // 1..12
extern void rf12_setfreq();
// liefert TRUE wenn etwas gültiges empfangen wurde, sonst FALSE
extern BYTE rf12_poll();
Vorgefundene Kodierung: UTF-8 | 0
|