示例#1
0
/**
 * @fn void rfm12_init
 * @brief initializes the rfm12 radio module
 * @brief 868,3MHz,4,8kbps, 0db power
 * @param 
 */
void rfm12_init(void){
  unsigned int d;

  // set port direction
  nSEL_OUT();
  SDI_IN();
  SDO_OUT();
  SCK_OUT();
  nIRQ_IN();

  // default signals
  nSEL=1;
  SDO=1;
  SCK=0;

  d=rfm12_spi16(0x80e7);          // El, Ef, 11.5pF, 868MHz band
  d=rfm12_spi16(0x82d9);          // !er, !ebb, Et, Es, Ex, !eb, !ew, Dc
  d=rfm12_spi16(0xa67c);          // 434,15MHz/868,3MHz
  d=rfm12_spi16(0xc647);          // 4,8kbps
  d=rfm12_spi16(0x94a0);          // Vdi, fast, 134kHz, 0db,-103dbm
  d=rfm12_spi16(0xc2ac);          // Al, !ml, Dig, Dqd4
  d=rfm12_spi16(0xca80);          // fifo8, sync, !ff, Dr
  d=rfm12_spi16(0xca83);          // fifo8, sync, !ff, Dr
  d=rfm12_spi16(0xc483);          // @pwr, no restrict, !st, !fi, Oe, En
  
  d=rfm12_spi16(0x9850);          // 90kHz, power - 0db
  
  d=rfm12_spi16(0xe000);          // not used (wake-up timer cmd)
  d=rfm12_spi16(0xc800);          // not used (low duty-cycle cmd)
  
  d=rfm12_spi16(0xc000);          // 1MHz, 2.2V (low bat detector and clk div)
  d=rfm12_spi16(0x0000);          // read status word to clear fifos
}
示例#2
0
void init(void)
{
	//osccon = 0x70;				// 8Mhz internal OSC
	cmcon = 0x07;
	//ansel = 0;					// all is digital i/o on PortA
	option_reg.NOT_RBPU = 0;	// enable pullup resistors on PB
	option_reg.INTEDG = 0;		// falling edge interrupt	

	CONF_LED1_OUT();
	LED1=0;
	
	// setup SPI
	// outputs
	RFM12_CS_OUT();								// Module Chip Select 
	HI_SEL();									// RF CS is Active Low so set High
	
	SCK_OUT();									// SPI SCK as Output
	LOW_SCK();
	
	SDO_OUT();									// SPI SDO as Output
	LOW_SDO();
		
	// inputs
	RFM12_nIRQ_IN();							// nIRQ
	SDI_IN();									// SPI SDI
	
	delay_ms(500);								// Wait for RFM12 POR 

	
	WriteCMD(0x80F7);	// 915 EL, EF, 12.0pf
	WriteCMD(0xA7D0);	// 915=A7D0 904.50MHZ = A258	
	
	WriteCMD(0xC623);	// c608=38400 c611=19200 c623= 9600bps	
	
	WriteCMD(0xC22C);	// Data Filter: AL, !ML, digital filter,  4 dqd	
	WriteCMD(0xC4F7);	// AFC Autotune, -10khz..+7.5Khz, !st, !fi, OE, EN	
	WriteCMD(0x96A0);	// P16, VDI, FAST, 65khz, 0dBm, -103dBm
	WriteCMD(0xCA81);	// FIFO8, SYNC, !ff, DR
	
	//TX Config
	//WriteCMD(0x9850);	// !mp, 9810=30Khz, MAX out
	
	
	WriteCMD(0xE000);	// NOT USE
	WriteCMD(0xC80E);	// NOT USE
	WriteCMD(0xC000);	// CLK 1mhz, 2.2v 
	
	WriteCMD(0x8280);	// ER, EBB, !ET, ES, EX, !EB, !EW, !DC	


}