Ejemplo n.º 1
0
Archivo: nRF_API.c Proyecto: CMon/dld
unsigned char nRFAPI_Init(
    unsigned char channel,
    const unsigned char *mac,
    unsigned char mac_size,
    unsigned char features
)
{
    unsigned char i;

    // init lower layer
    nRFCMD_Init();

    // check validity
    if(	mac_size<3 ||
            mac_size>5 ||
            !nRFAPI_DetectChip()
      )
        return 0;

    // update mac
    nRFAPI_SetSizeMac(mac_size);
    nRFAPI_SetTxMAC(mac,mac_size);

    // enables pipe
    nRFAPI_SetRxMAC(mac,mac_size,0);
    nRFAPI_PipesEnable(ERX_P0);
    nRFAPI_PipesAck(0);

    // set payload sizes
    for(i=0; i<=5; i++)
        nRFAPI_SetPipeSizeRX(i,2);

    // set TX retry count
    nRFAPI_TxRetries(0);

    // set selected channel
    nRFAPI_SetChannel(channel);

    // set Tx power
    nRFAPI_SetTxPower(3);

    // flush FIFOs
    nRFAPI_FlushRX();
    nRFAPI_FlushTX();

    nRFAPI_SetRxMode(0);

    if(features != 0)
        nRFAPI_SetFeatures(features);

    return 1;
}
Ejemplo n.º 2
0
uint8_t
nRFAPI_Init (uint8_t channel,
	     const uint8_t * mac, uint8_t mac_size, uint8_t features)
{
  uint8_t i;

  // init IO layer of nRF24L01
  nRFCMD_Init ();

  /* wait for nRF to boot */
  pmu_sleep_ms(10);

  // check validity
  if (mac_size < 3 || mac_size > 5 || !nRFAPI_DetectChip ())
    return 0;

  // update mac
  nRFAPI_SetSizeMac (mac_size);
  nRFAPI_SetTxMAC (mac, mac_size);

  // enables pipe
  nRFAPI_SetRxMAC (mac, mac_size, 0);
  nRFAPI_PipesEnable (ERX_P0);
  nRFAPI_PipesAck (0);

  // set payload sizes
  for (i = 0; i <= 5; i++)
    nRFAPI_SetPipeSizeRX (i, 16);

  // set TX retry count
  nRFAPI_TxRetries (0);

  // set selected channel
  nRFAPI_SetChannel (channel);

  // set Tx power
  nRFAPI_SetTxPower (3);

  // flush FIFOs
  nRFAPI_FlushRX ();
  nRFAPI_FlushTX ();

  if (features != 0)
    nRFAPI_SetFeatures (features);

  return 1;
}
Ejemplo n.º 3
0
void
main (void)
{
	uint8_t j;

	/* configure CPU peripherals */
	OSCCON = CONFIG_CPU_OSCCON_SLOW;
	OPTION_REG = CONFIG_CPU_OPTION;
	PORTA = CONFIG_CPU_PORTA;
	PORTC = CONFIG_CPU_PORTC;
	TRISA = CONFIG_CPU_TRISA;
	TRISC = CONFIG_CPU_TRISC;
	WPUA = CONFIG_CPU_WPUA;
	WPUC = CONFIG_CPU_WPUC;
	ANSELA = CONFIG_CPU_ANSELA;
	ANSELC = CONFIG_CPU_ANSELC;

	INTE = 0;
	CONFIG_PIN_SENSOR = 0;
	CONFIG_PIN_TX_POWER = 0;

	/* initalize hardware */
	timer_init ();

	/* verify RF chip */
	nRFCMD_Init ();
	while(1)
	{
		nRFCMD_Channel (23);
		if(nRFCMD_RegGet (NRF_REG_RF_CH)==23)
		{
			nRFCMD_Channel (42);
			if(nRFCMD_RegGet (NRF_REG_RF_CH)==42)
				break;
		}

		CONFIG_PIN_LED = 1;
		sleep_jiffies (JIFFIES_PER_MS (25));
		CONFIG_PIN_LED = 0;
		sleep_jiffies (JIFFIES_PER_MS (25));
	}

	/* blink to show readyiness */
	for (j = 0; j <= 10; j++)
	{
		CONFIG_PIN_LED = j & 1;
		sleep_jiffies (JIFFIES_PER_MS (25));
	}

	// switch to listening channel
	nRFCMD_Channel (CONFIG_TRACKER_CHANNEL);

	while (1)
	{
/*
		nRFCMD_Listen (JIFFIES_PER_MS (500));

		if (!CONFIG_PIN_IRQ)
		{
			while ((nRFCMD_RegGet (NRF_REG_FIFO_STATUS) &
					NRF_FIFO_RX_EMPTY) == 0)
			{
				// receive raw data
				nRFCMD_RegRead (RD_RX_PLOAD, pkt, sizeof (pkt));
				nRFCMD_RegPut (NRF_REG_STATUS | WRITE_REG,
							   NRF_CONFIG_MASK_RX_DR);

				CONFIG_PIN_LED = 1;
				sleep_jiffies (JIFFIES_PER_MS (100));
			}
		}

		CONFIG_PIN_LED = 1;

		// blink for 1ms
		sleep_jiffies (JIFFIES_PER_MS (1));

		// disable LED
		CONFIG_PIN_LED = 0;
*/

		for(j=0;j<200;j++)
			pwm(10);

		for(j=0;j<200;j++)
			pwm(30);
	}
}