void nRFCMD_Execute (void) { nRFCMD_Config (NRF_CONFIG_BYTE | NRF_CONFIG_PWR_UP); sleep_jiffies (JIFFIES_PER_MS (1.5)); CONFIG_PIN_CE = 1; sleep_jiffies (JIFFIES_PER_MS (1)); CONFIG_PIN_CE = 0; nRFCMD_Config (NRF_CONFIG_BYTE); }
void pwm(uint16_t jiffies) { CONFIG_PIN_LED = 1; CONFIG_PIN_TX_POWER = 1; sleep_jiffies (jiffies); CONFIG_PIN_LED = 0; CONFIG_PIN_TX_POWER = 0; sleep_jiffies (JIFFIES_PER_MS (20)-jiffies); }
void nRFCMD_Init (void) { /* update CPU default pin settings */ CONFIG_PIN_CSN = 1; CONFIG_PIN_CE = 0; CONFIG_PIN_MOSI = 0; CONFIG_PIN_SCK = 0; sleep_jiffies (JIFFIES_PER_MS (2)); /* send initialization macro to RF chip */ nRFCMD_Macro (g_MacroInitialization); }
void nRFCMD_Listen (uint8_t jiffies) { nRFCMD_Config (NRF_CONFIG_BYTE | NRF_CONFIG_PWR_UP); sleep_jiffies (JIFFIES_PER_MS (1.5)); nRFCMD_Config (NRF_CONFIG_BYTE | NRF_CONFIG_PWR_UP | NRF_CONFIG_PRIM_RX); CONFIG_PIN_CE = 1; sleep_jiffies (jiffies); CONFIG_PIN_CE = 0; /* keep powered after IRQ */ nRFCMD_Config (CONFIG_PIN_IRQ ? NRF_CONFIG_BYTE : NRF_CONFIG_BYTE | NRF_CONFIG_PWR_UP); }
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); } }
void sleep_2ms (void) { sleep_jiffies (JIFFIES_PER_MS(2)); }
void nRFCMD_StartRX (void) { nRFCMD_Macro (g_MacroStartRX); sleep_jiffies ( JIFFIES_PER_MS(1) ); }