82 # define PIC24F_DEFINED 1    84 # define PIC24F_DEFINED 0    88 # define PIC24H_DEFINED 1    90 # define PIC24H_DEFINED 0    94 # define dsPIC33F_DEFINED 1    96 # define dsPIC33F_DEFINED 0   100 # define PIC24FK_DEFINED 1   102 # define PIC24FK_DEFINED 0   106 # define PIC24E_DEFINED 1   108 # define PIC24E_DEFINED 0   112 # define dsPIC33E_DEFINED 1   114 # define dsPIC33E_DEFINED 0   155 #define SIM_CLOCK                       0,     -1,            1000000L, POSCMD_NONE,       -1,  configClockSim,                             1,                                     498   156 #define FRCPLL_FCY16MHz                 1,     FNOSC_FRCPLL, 16000000L, POSCMD_NONE,       -1,  configClockFRCPLL_FCY16MHz,                 (PIC24F_DEFINED || PIC24FK_DEFINED),   498   157 #define FRC_FCY4MHz                     2,     FNOSC_FRC,     4000000L, POSCMD_NONE,       -1,  configClockFRC_FCY4MHz,                     (PIC24F_DEFINED || PIC24FK_DEFINED),   498   158 #define PRI_NO_PLL_7372KHzCrystal       3,     FNOSC_PRI,     3686400L, POSCMD_XT,   7372800L,  configClockPRI_NO_PLL_7372KHzCrystal,       (PIC24F_DEFINED || PIC24FK_DEFINED || PIC24H_DEFINED || dsPIC33F_DEFINED), 498   159 #define FRC_FCY3685KHz                  4,     FNOSC_FRC,     3685000L, POSCMD_NONE,       -1,  configClockFRC_FCY3685KHz,                  (PIC24E_DEFINED || dsPIC33E_DEFINED || PIC24H_DEFINED || dsPIC33F_DEFINED), 498   160 #define FRCPLL_FCY40MHz                 5,     FNOSC_FRCPLL, 40000000L, POSCMD_NONE,       -1,  configClockFRCPLL_FCY40MHz,                 (PIC24E_DEFINED || dsPIC33E_DEFINED || PIC24H_DEFINED || dsPIC33F_DEFINED), 498   161 #define PRIPLL_7372KHzCrystal_40MHzFCY  6,     FNOSC_PRIPLL, 39920833L, POSCMD_XT,   7372800L,  configClockPRIPLL_7372KHzCrystal_40MHzFCY,  (PIC24H_DEFINED || dsPIC33F_DEFINED),  498   162 #define PRIPLL_8MHzCrystal_40MHzFCY     7,     FNOSC_PRIPLL, 40000000L, POSCMD_XT,   8000000L,  configClockPRIPLL_8MHzCrystal_40MHzFCY,     (PIC24H_DEFINED || dsPIC33F_DEFINED || PIC24E_DEFINED || dsPIC33E_DEFINED), 498   163 #define PRIPLL_8MHzCrystal_16MHzFCY     8,     FNOSC_PRIPLL, 16000000L, POSCMD_XT,   8000000L,  configClockPRIPLL_8MHzCrystal_16MHzFCY,     (PIC24F_DEFINED || PIC24FK_DEFINED),   498   164 #define PRI_8MHzCrystal_4MHzFCY         9,     FNOSC_PRI,     4000000L, POSCMD_XT,   8000000L,  configClockPRI_8MHzCrystal_4MHzFCY,         (PIC24F_DEFINED || PIC24FK_DEFINED || PIC24H_DEFINED || dsPIC33F_DEFINED || PIC24E_DEFINED || dsPIC33E_DEFINED), 498   165 #define FRCPLL_FCY60MHz                 10,    FNOSC_FRCPLL, 59881250L, POSCMD_NONE,       -1,  configClockFRCPLL_FCY60MHz,                 (PIC24E_DEFINED || dsPIC33E_DEFINED),  498   166 #define FRCPLL_FCY70MHz                 11,    FNOSC_FRCPLL, 70015000L, POSCMD_NONE,       -1,  configClockFRCPLL_FCY70MHz,                 (PIC24E_DEFINED || dsPIC33E_DEFINED),  498   176 # define POSCMD_EC   POSCMOD_EC   177 # define POSCMD_XT   POSCMOD_XT   178 # define POSCMD_HS   POSCMOD_HS   179 # define POSCMD_NONE POSCMOD_NONE   188 #define GET_CLOCK_CONFIG_INDEX(params)    _GET_CLOCK_CONFIG_INDEX(params)   189 #define GET_FNOSC_SEL(params)             _GET_FNOSC_SEL(params)   190 #define GET_FCY(params)                   _GET_FCY(params)   191 #define GET_POSCMD_SEL(params)            _GET_POSCMD_SEL(params)   192 #define GET_POSC_FREQ(params)             _GET_POSC_FREQ(params)   193 #define GET_CONFIG_DEFAULT_CLOCK(params)  _GET_CONFIG_DEFAULT_CLOCK(params)   194 #define GET_IS_SUPPORTED(params)          _GET_IS_SUPPORTED(params)   195 #define GET_MAGIC(params)                 _GET_MAGIC(params)   199 #define _GET_CLOCK_CONFIG_INDEX(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)    ndx   200 #define _GET_FNOSC_SEL(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)             oscSel   201 #define _GET_FCY(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)                   Fcy   202 #define _GET_POSCMD_SEL(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)            posCmdSel   203 #define _GET_POSC_FREQ(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)             poscFreq   204 #define _GET_CONFIG_DEFAULT_CLOCK(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)  configClockFunc   205 #define _GET_IS_SUPPORTED(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)          isSupported   206 #define _GET_MAGIC(ndx, oscSel, Fcy, posCmdSel, poscFreq, configClockFunc, isSupported, magic)                 magic   211 # if GET_MAGIC(CLOCK_CONFIG) != 498   212 #   error "***********************************************************************"   213 #   error "* Value chosen for CLOCK_CONFIG does not exist or is not valid!       *"   214 #   error "* This produces very confusing compiler errors below.                 *"   215 #   error "***********************************************************************"   221 #define CLOCK_CONFIG_INDEX      (GET_CLOCK_CONFIG_INDEX(CLOCK_CONFIG))   222 #define FNOSC_SEL               (GET_FNOSC_SEL(CLOCK_CONFIG))   223 #define FCY                     (GET_FCY(CLOCK_CONFIG))   224 #define POSCMD_SEL              (GET_POSCMD_SEL(CLOCK_CONFIG))   225 #define POSC_FREQ               (GET_POSC_FREQ(CLOCK_CONFIG))   226 #define CONFIG_DEFAULT_CLOCK()  (GET_CONFIG_DEFAULT_CLOCK(CLOCK_CONFIG)())   229 #if !GET_IS_SUPPORTED(CLOCK_CONFIG)   230 # error "The clock configuration chosen is not supported by this processor."   234 #if !( (POSCMD_SEL == POSCMD_EC) || (POSCMD_SEL == POSCMD_XT) || \   235        (POSCMD_SEL == POSCMD_HS) || (POSCMD_SEL == POSCMD_NONE) )   236 # error "Unknown primary oscillator selection."   241 #if (POSCMD_SEL == POSCMD_XT) && ( (POSC_FREQ < 3500000L) || (POSC_FREQ > 10000000L) )   242 # error "The XT oscialltor chosen in POSCMD_SEL does not support this frequency!"   243 # error "Valid ranges are from 3.5 MHz to 10 MHz."   245 #if (POSCMD_SEL == POSCMD_HS) && ( (POSC_FREQ < 10000000L) || (POSC_FREQ > 32000000L) )   246 # error "The HS oscialltor chosen in POSCMD_SEL does not support this frequency!"   247 # error "Valid ranges are from 10 MHz to 32 MHz."   332 #define CYCLES_PER_MS ((uint32_t)(FCY * 0.001))   338 #define CYCLES_PER_US ((uint32_t)(FCY * 0.000001))   353 #define IS_CLOCK_CONFIG(clockConfig) (_GET_CLOCK_CONFIG_INDEX(clockConfig) == CLOCK_CONFIG_INDEX)   359 #define GET_OSC_SEL_BITS(bits) _GET_OSC_SEL_BITS(bits)   361 #if defined(__PIC24H__) || defined (__PIC24FK__) || defined(__dsPIC33F__) || defined(__PIC24E__) || defined(__dsPIC33E__) || defined(__DOXYGEN__)   362 # define _GET_OSC_SEL_BITS(bits) ((bits >> 0) & 0x07)   363 #elif defined (__PIC24F__)   364 # define _GET_OSC_SEL_BITS(bits) ((bits >> 8) & 0x07)   366 # error "Unknown processor."   372 #define OSC_SEL_BITS GET_OSC_SEL_BITS(FNOSC_SEL)   375 #if ( (OSC_SEL_BITS < 0) || (OSC_SEL_BITS > 7) )   376 # error "Invalid oscillator selection FNOSC_SEL."   384 #if GET_IS_SUPPORTED(SIM_CLOCK)   393 void configClockSim(
void);
   396 #if GET_IS_SUPPORTED(FRCPLL_FCY16MHz)   397 void configClockFRCPLL_FCY16MHz(
void);
   400 #if GET_IS_SUPPORTED(FRC_FCY4MHz)   401 void configClockFRC_FCY4MHz(
void);
   404 #if GET_IS_SUPPORTED(PRI_NO_PLL_7372KHzCrystal)   405 void configClockPRI_NO_PLL_7372KHzCrystal(
void);
   408 #if GET_IS_SUPPORTED(FRC_FCY3685KHz)   409 void configClockFRC_FCY3685KHz(
void);
   412 #if GET_IS_SUPPORTED(FRCPLL_FCY40MHz)   413 void configClockFRCPLL_FCY40MHz(
void);
   416 #if GET_IS_SUPPORTED(FRCPLL_FCY60MHz)   417 void configClockFRCPLL_FCY60MHz(
void);
   420 #if GET_IS_SUPPORTED(FRCPLL_FCY70MHz)   421 void configClockFRCPLL_FCY70MHz(
void);
   424 #if GET_IS_SUPPORTED(PRI_NO_PLL_7372KHzCrystal)   425 void configClockPRIPLL_7372KHzCrystal_40MHzFCY(
void);
   428 #if GET_IS_SUPPORTED(PRIPLL_8MHzCrystal_40MHzFCY)   429 void configClockPRIPLL_8MHzCrystal_40MHzFCY(
void);
   432 #if GET_IS_SUPPORTED(PRIPLL_8MHzCrystal_16MHzFCY)   433 void configClockPRIPLL_8MHzCrystal_16MHzFCY(
void);
   436 #if GET_IS_SUPPORTED(PRI_8MHzCrystal_4MHzFCY)   437 void configClockPRI_8MHzCrystal_4MHzFCY(
void);
 
static void configClock()
void switchClock(uint8_t u8_source)
#define CONFIG_DEFAULT_CLOCK()
unsigned char uint8_t
An abbreviation for an 8-bit unsigned integer.