37,17 → 37,11 |
#define RF_DDR DDRB |
#define RF_PIN PINB |
|
#define LED_PORT PORTD |
#define LED_DDR DDRD |
#define LED_PIN PIND |
|
#define LED0 4 -- PD4 |
#define LED1 2 -- PD2 |
|
#define SDI 0 // SDI, -> RF02 Atmega PB0 Arduino 8 |
#define SCK 1 // SCK, -> RF02 Atmega PB1 Arduino 9 |
#define CS 2 // nSEL, -> RF02 Atmega PB2 Arduino 10 |
#define IRQ 4 // nIRQ, <- RF02 Atmega PB4 Arduino 12 |
#define FSK 3 // FSK, <- RF02 Atmega PB3 Arduino ??? |
//------------------// FSK: Pullupto VCC |
|
#ifndef cbi |
57,25 → 51,11 |
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) |
#endif |
|
#ifndef cLED0 |
#define cLED0() (LED_PORT &= ~(1<<LED0)) |
#endif |
#ifndef sLED0 |
#define sLED0() (LED_PORT |= (1<<LED0) ) |
#endif |
|
#ifndef cLED1 |
#define cLED1() (LED_PORT &= ~(1<<LED1)) |
#endif |
#ifndef sLED1 |
#define sLED1() (LED_PORT |= (1<<LED1) ) |
#endif |
|
|
|
unsigned char test[32]=" 55555 \n"; |
|
void rf02_changeText( unsigned char* ptr, uint8_t number){ |
void rf02_changeText( unsigned char* ptr, uint8_t number) |
{ |
|
if (number> 32)number = 32; |
memcpy( test, ptr, number); |
82,43 → 62,50 |
|
} |
|
void rf02_prepAll434(){ |
void rf02_prepAll() |
{ |
RF_PORT=(1<<CS); |
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS); |
|
rf02_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) |
rf02_setfreq(RF02FREQ(434)); // 433,92MHz |
rf02_setpower(1); // -12dBm Ausgangangsleistung |
rf02_setmodfreq(3); // 120kHz Frequenzshift |
rf02_setbaud(19200); // 19200 Baud |
sbi(RF_PORT, FSK); |
|
}// |
|
void rf02_prepAll(unsigned short freq, uint8_t setPower,uint8_t modFreq,unsigned short baudRate){ |
|
rf02_init(); // ein paar Register setzen (z.B. CLK auf 10MHz) |
rf02_setfreq( RF02FREQ(freq) ); // Sende/Empfangsfrequenz auf 433,92MHz einstellen |
for (unsigned char i=0; i<15; i++) _delay_ms(10); // wait until POR done |
|
if ( setPower < 0 ) setPower = 0; |
if ( setPower > 4 ) setPower = 4; |
rf02_setpower(setPower); // -12dBm Ausgangangsleistung |
|
if ( modFreq < 0 ) modFreq = 0; |
if ( modFreq > 8 ) modFreq = 8; |
rf02_setmodfreq(modFreq); // 120kHz Frequenzshift |
|
rf02_setbaud(baudRate); // 19200 Baud |
|
}// |
rf02_trans(0xCC00); //*// |
|
// rf02_trans(0x8B61); //*// |
rf02_trans(0x8000|0x1000|0x70|0x02); //*// |
rf02_trans(0xA000|0x640); //*// |
// rf02_trans(0xA640); ///= 434 MHz |
|
void rf02_sendData(){ |
// rf02_trans(0xD2C0); // 33% PLL current |
// rf02_trans(0xC823); // 9600 Bd |
rf02_trans(0xD040); // RATE/2 |
rf02_trans(0xC811); // 19200 => 9600 Bd |
|
rf02_txdata( test, sizeof test); |
rf02_trans(0xC0E0); // power settings |
|
rf02_trans(0xC220); //0xC2A0 |
// rf02_trans(0xB100); |
// rf02_trans(0x8F83); |
//!!! |
// rf02_trans(0xC001); |
|
|
} |
|
void rf02_sendData() |
{ |
|
//!!! rf02_txdata( test, sizeof test); |
rf02_txdata( test, 23); |
} |
|
void rf02_trans(unsigned short value) |
{ uint8_t i; |
{ |
uint8_t i; |
|
cbi(RF_PORT, CS); |
|
137,60 → 124,6 |
} |
|
|
|
void rf02_init(void) |
{ |
RF_PORT=(1<<CS); |
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS); |
|
for (unsigned char i=0; i<15; i++) |
_delay_ms(10); // wait until POR done |
rf02_trans(0xC0E0); // power settings |
rf02_trans(0x8A75);// fsk in rfm02 = afc in rf12 |
// rf02_trans(0x80C7); |
rf02_trans(0xC2A0); // enable tx sync bit, disable low bat detector |
|
//LED_DDR= 0xFF; |
} |
|
void rf02_setmodfreq(uint8_t bandwidth) |
{ |
rf02_trans(0x8F80|(bandwidth&7)); |
//rf02_trans(0x8F70); |
} |
|
void rf02_setfreq(unsigned short freq) |
{ if (freq<96) // 430,2400MHz |
freq=96; |
else if (freq>3903) // 439,7575MHz |
freq=3903; |
rf02_trans(0xA000|freq); |
|
//rf02_trans(0xA640); //= 434 MHz |
} |
|
void rf02_setpower(uint8_t power) |
{ |
rf02_trans(0xB000|((power&7)<<8)); |
} |
|
void rf02_setbaud(unsigned short baud) |
{ |
|
if (baud<1345) |
baud=1345; |
if (baud<19000) |
rf02_trans(0xD240); // 25% PLL current |
else if (baud<37000) |
rf02_trans(0xD2C0); // 33% PLL current |
else |
rf02_trans(0xD200); // 50% PLL current |
|
//rf02_trans(0xC800|((344828UL/baud)-1)); // Baudrate= 344827,59/(R+1) |
|
rf02_trans(0xC806); |
} |
|
void rf02_txdata( unsigned char * data, uint8_t number) |
{ |
uint8_t i,value; |
197,6 → 130,10 |
value=0xC6; //1100 0110 |
cbi(RF_PORT, CS); //nSel |
|
//!!!! |
// rf02_trans(0xC039); // TX start |
|
|
for (i=0; i<8; i++) |
{ if (value&0x80) //1000 0000 = 80 |
sbi(RF_PORT, SDI); |
223,7 → 160,8 |
sbi(RF_PORT, CS); |
while(RF_PIN&(1<<IRQ)); // wait until transfer done |
rf02_trans(0xC464); // TX off after 10us |
|
//rf02_trans(0xC001); // TX close |
_delay_ms(10); |
} |
|
void rf02_shiftout(unsigned char value) |
233,9 → 171,13 |
while(!(RF_PIN&(1<<IRQ))); |
|
if (value&128) //100101000 |
sbi(RF_PORT, SDI); |
{ |
sbi(RF_PORT, SDI); |
} |
else |
{ |
cbi(RF_PORT, SDI); |
} |
value<<=1; |
} |
} |