/*********************************************************************
 *
 *                  Power API definitions
 *
 *********************************************************************
 * FileName:        power.h
 * Dependencies:
 * Processor:     PIC32
 *
 *
 * Compiler:        MPLAB XC32
 *                  MPLAB IDE
 * Company:         Microchip Technology Inc.
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the Company) for its PIC Microcontroller is intended
 * and supplied to you, the Companys customer, for use solely and
 * exclusively on Microchip PIC Microcontroller products.
 * The software is owned by the Company and/or its supplier, and is
 * protected under applicable copyright laws. All rights are reserved.
 * Any use in violation of the foregoing restrictions may subject the
 * user to criminal sanctions under applicable laws, as well as to
 * civil liability for the breach of the terms and conditions of this
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *
 * $Id: OSC.h,v 1.6 2006/10/13 21:24:31 C12532 Exp $
 *
 * $Name:  $
 ********************************************************************/

#include <p32xxxx.h>
#include <plib.h>
#include <peripheral/osc.h>

/*********************************************************************
 * Function:        void OSCREFConfig(unsigned long int source, OSCREFConfigFlags config, unsigned long int div);
 *
 * Description:     Sets Reference Oscillator options and ref clock source
 *
 * PreCondition:    Interrupts must be disabled
 *
 * Inputs:          Clock source, PLL multiplier, PLL postscaler, FRC divisor
 *
 * Output:          None
 *
 * Example:         OSCREFConfig(OSC_REFOCON_PBCLK, OSC_REFOCON_OE, 2);
 *
 * Note:            None
 ********************************************************************/
#if ((__PIC32_FEATURE_SET__ >= 100) && (__PIC32_FEATURE_SET__ <= 299))
void OSCREFConfig(unsigned long int source, OSCREFConfigFlags config, unsigned long int div)
{
    int intStat;
    int dmaSusp;

    mSYSTEMUnlock(intStat, dmaSusp);

    REFOCONCLR = 0xffffffff;
    REFOCONSET = (source | config | (div << _REFOCON_RODIV_POSITION));

    mSYSTEMLock(intStat, dmaSusp);  // restore status
}
#else
    //Do nothing
#endif

