75 #elif !USE_CLOCK_TIMEOUT    77 void checkClockTimeout(
void) {
    86 # define CLOCKTIMEOUT_MAX 200000L    87 # if   ( defined(__PIC24H__) || defined(__dsPIC33F__) ||  \    88          defined(__PIC24E__) || defined(__dsPIC33E__) )    89 #   define FRC_FCY 3685000L    90 # elif ( defined(__PIC24F__) || defined(__PIC24FK__) )    91 #   define FRC_FCY 4000000L    93 #   error "Unknown processor."   107 #   define SET_HB_LED(x) (HB_LED = x)   109 #   define SET_HB_LED(x) (void) x   119 # define FRC_CYCLE_PER_MS (FRC_FCY*0.001)   120 # define DOT_CYCLES (FRC_CYCLE_PER_MS*100)   121 # define DASH_CYCLES (DOT_CYCLES*3)   123 static void morse_blink(
const char* sz_morse_code) {
   124   for (; *sz_morse_code; ++sz_morse_code) {
   125     switch (*sz_morse_code) {
   128         __delay32(DOT_CYCLES);
   133         __delay32(DASH_CYCLES);
   139         __delay32(DOT_CYCLES*2);
   144     __delay32(DOT_CYCLES);
   149   __delay32(DOT_CYCLES*6);
   153 static void configFrcUART(
void) {
   159 # if (DEFAULT_UART == 1)   161   U1MODEbits.BRGH = FRC_BRGH;
   162 # elif (DEFAULT_UART == 2)   164   U2MODEbits.BRGH = FRC_BRGH;
   165 # elif (DEFAULT_UART == 3)   167   U3MODEbits.BRGH = FRC_BRGH;
   168 # elif (DEFAULT_UART == 4)   170   U4MODEbits.BRGH = FRC_BRGH;
   172 #   error "Invalid DEFAULT_UART."   176 static uint32_t u32_timeoutCount;
   177 static void checkClockTimeout(
void) {
   181   if (u32_timeoutCount < CLOCKTIMEOUT_MAX) {
   202     outString(
"\n\nYour clock choice failed to initialize. See " __FILE__
   203               " line " TOSTRING(__LINE__) 
" for more details.");
   206     morse_blink(
"... --- ...");
   215   OSCCONBITS OSCCONBITS_copy;
   228   OSCCONBITS_copy = OSCCONbits;      
   229   OSCCONBITS_copy.NOSC = u8_source;  
   230   OSCCONBITS_copy.CLKLOCK = 0;       
   231   OSCCONBITS_copy.OSWEN = 1;         
   233   __builtin_write_OSCCONH(
BITS2BYTEH(OSCCONBITS_copy));
   235   __builtin_write_OSCCONL(
BITS2BYTEL(OSCCONBITS_copy));
   243 # if USE_CLOCK_TIMEOUT   244   u32_timeoutCount = 0;
   246   while (_OSWEN == 1) {
   260   while (_COSC != u8_source) checkClockTimeout();
   264 #if IS_CLOCK_CONFIG(SIM_CLOCK)   265 # warning "Clock configured for simulation, FCY = 1 Mhz."   267 #if (GET_IS_SUPPORTED(SIM_CLOCK) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(SIM_CLOCK)   268 void configClockSim(
void) {
   273 #if IS_CLOCK_CONFIG(FRCPLL_FCY16MHz)   274 # warning "Clock configured for FRCPLL, FCY = 16 MHz."   276 #if (GET_IS_SUPPORTED(FRCPLL_FCY16MHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRCPLL_FCY16MHz)   277 void configClockFRCPLL_FCY16MHz(
void) {
   301 # elif defined(PLLDIV_NODIV)   302 #   warning "Ensure that the PLLDIV value is set to divide by 2 in the configuration bits for FRCPLL_FCY16MHz clock option!!"   306 # warning "PLL Enabled."   313 #if IS_CLOCK_CONFIG(FRC_FCY4MHz)   314 # warning "Clock configured for FRC, FCY = 4 MHz."   315 # warning "Baud rates of 19200 or lower recommended for this clock choice."   317 #if (GET_IS_SUPPORTED(FRC_FCY4MHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRC_FCY4MHz)   318 void configClockFRC_FCY4MHz(
void) {
   326 #if IS_CLOCK_CONFIG(PRI_NO_PLL_7372KHzCrystal)   327 # warning "Clock configured for a 7.372 MHz crystal primary oscillator, no PLL."   329 #if (GET_IS_SUPPORTED(PRI_NO_PLL_7372KHzCrystal) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(PRI_NO_PLL_7372KHzCrystal)   330 void configClockPRI_NO_PLL_7372KHzCrystal(
void) {
   336 #if IS_CLOCK_CONFIG(FRC_FCY3685KHz)   337 # warning "Clock configured for FRC, FCY = 3.685 MHz."   339 #if (GET_IS_SUPPORTED(FRC_FCY3685KHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRC_FCY3685KHz)   340 void configClockFRC_FCY3685KHz(
void) {
   351 #if IS_CLOCK_CONFIG(FRCPLL_FCY40MHz)   352 # warning "Clock configured for FRCPLL, FCY = 40 MHz."   354 #if (GET_IS_SUPPORTED(FRCPLL_FCY40MHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRCPLL_FCY40MHz)   355 void configClockFRCPLL_FCY40MHz(
void) {
   383 #if IS_CLOCK_CONFIG(FRCPLL_FCY60MHz)   384 # warning "Clock configured for FRCPLL, FCY = 60 MHz."   386 #if (GET_IS_SUPPORTED(FRCPLL_FCY60MHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRCPLL_FCY60MHz)   387 void configClockFRCPLL_FCY60MHz(
void) {
   411 #if IS_CLOCK_CONFIG(FRCPLL_FCY70MHz)   412 # warning "Clock configured for FRCPLL, FCY = 70 MHz."   414 #if (GET_IS_SUPPORTED(FRCPLL_FCY70MHz) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(FRCPLL_FCY70MHz)   415 void configClockFRCPLL_FCY70MHz(
void) {
   441 #if IS_CLOCK_CONFIG(PRIPLL_7372KHzCrystal_40MHzFCY)   442 # warning "Clock configured for PRIPLL using a 7.3727 Mhz primary oscillator, FCY = 40 MHz."   444 #if (GET_IS_SUPPORTED(PRIPLL_7372KHzCrystal_40MHzFCY) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(PRIPLL_7372KHzCrystal_40MHzFCY)   445 void configClockPRIPLL_7372KHzCrystal_40MHzFCY(
void) {
   458 #if IS_CLOCK_CONFIG(PRIPLL_8MHzCrystal_40MHzFCY)   459 # warning "Clock configured for PRIPLL using an 8.0 Mhz primary oscillator, FCY = 40 MHz."   461 #if (GET_IS_SUPPORTED(PRIPLL_8MHzCrystal_40MHzFCY) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(PRIPLL_8MHzCrystal_40MHzFCY)   462 void configClockPRIPLL_8MHzCrystal_40MHzFCY(
void) {
   479 #if IS_CLOCK_CONFIG(PRIPLL_8MHzCrystal_16MHzFCY)   480 # warning "Clock configured for PRIPLL using a 8.0 Mhz primary oscillator, FCY = 16 MHz."   482 #if (GET_IS_SUPPORTED(PRIPLL_8MHzCrystal_16MHzFCY) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(PRIPLL_8MHzCrystal_16MHzFCY)   483 void configClockPRIPLL_8MHzCrystal_16MHzFCY(
void) {
   507 # elif defined(PLLDIV_NODIV)   508 #   warning "Ensure that the PLLDIV value is set to divide by 2 in the configuration bits for PRIPLL_8MHzCrystal_16MHzFCY clock option!!"   512 #   warning "PLL Enabled."   519 #if IS_CLOCK_CONFIG(PRI_8MHzCrystal_4MHzFCY)   520 # warning "Clock configured for PRI using a 8.0 Mhz primary oscillator, FCY = 4 MHz."   521 # warning "Baud rates of 19200 or lower recommended for this clock choice."   523 #if (GET_IS_SUPPORTED(PRI_8MHzCrystal_4MHzFCY) && !defined(BOOTLOADER)) || IS_CLOCK_CONFIG(PRI_8MHzCrystal_4MHzFCY)   524 void configClockPRI_8MHzCrystal_4MHzFCY(
void) {
 
void configHeartbeat(void)
Configures the system clock. 
#define BITS2BYTEL(sfrBitfield)
Return the low byte (as a uint8_t) of a bitfield. 
void configDefaultUART(uint32_t u32_baudRate)
void outString(const char *psz_s)
void switchClock(uint8_t u8_source)
uint16_t compute_brg(uint32_t u32_fcy, uint16_t u16_brgh, uint32_t u32_baudrate)
#define BITS2BYTEH(sfrBitfield)
Return the high byte (as a uint8_t) of a bitfield. 
#define GET_OSC_SEL_BITS(bits)
unsigned char uint8_t
An abbreviation for an 8-bit unsigned integer.