www.pudn.com > CC2420_TRX.rar > hal_rf_wait_for_crystal_oscillator.c


/******************************************************************************************************* 
 *                                                                                                     * 
 *        **********                                                                                   * 
 *       ************                                                                                  * 
 *      ***        ***                                                                                 * 
 *      ***   +++   ***                                                                                * 
 *      ***   + +   ***                                                                                * 
 *      ***   +                        CHIPCON HARDWARE ABSTRACTION LIBRARY FOR THE CC2420             * 
 *      ***   + +   ***                      CC2420 crystal oscillator stabilization                   * 
 *      ***   +++   ***                                                                                * 
 *      ***        ***                                                                                 * 
 *       ************                                                                                  * 
 *        **********                                                                                   * 
 *                                                                                                     * 
 ******************************************************************************************************* 
 * The Chipcon Hardware Abstraction Library is a collection of functions, macros and constants, which  * 
 * can be used to ease access to the hardware on the CC2420 and the target microcontroller.            * 
 *                                                                                                     * 
 * This file contains a function that ensures that the CC2420 crystal oscillator is stable.            * 
 *                                                                                                     * 
 * EXAMPLE OF USAGE:                                                                                   * 
 *     // Turn the crystal oscillator on and wait for it to become stable                              * 
 *     DISBALE_GLOBAL_INT();                                                                           * 
 *     FASTSPI_STROBE(CC2420_SXOSCON);                                                                 * 
 *     ENABLE_GLOBAL_INT();                                                                            * 
 *     halRfWaitForCrystalOscillator();                                                                * 
 ******************************************************************************************************* 
 * Compiler: AVR-GCC                                                                                   * 
 * Target platform: CC2420DB, CC2420 + any MCU with very few modifications required                    * 
 ******************************************************************************************************* 
 * Revision history:                                                                                   * 
 * $Log: hal_rf_wait_for_crystal_oscillator.c,v $ 
 * Revision 1.3  2004/03/30 14:59:35  mbr 
 * Release for web 
 *  
 * 
 * 
 *******************************************************************************************************/ 
#include  
 
 
 
 
//------------------------------------------------------------------------------------------------------- 
//	void rfWaitForCrystalOscillator(void) 
// 
//	DESCRIPTION: 
//		Waits for the crystal oscillator to become stable. The flag is polled via the SPI status byte. 
//       
//      Note that this function will lock up if the SXOSCON command strobe has not been given before the 
//      function call. Also note that global interrupts will always be enabled when this function  
//      returns. 
//------------------------------------------------------------------------------------------------------- 
void halRfWaitForCrystalOscillator(void) { 
    BYTE spiStatusByte; 
    // Poll the SPI status byte until the crystal oscillator is stable 
    do  
	{ 
		DISABLE_GLOBAL_INT();	     
	    FASTSPI_UPD_STATUS(spiStatusByte); 
		ENABLE_GLOBAL_INT(); 
    } while (!(spiStatusByte & (BM(CC2420_XOSC16M_STABLE)))); 
 
} // halRfWaitForCrystalOscillator