18F Code Snippet,
Internal Oscillator

Developed with the Swordfish compiler

Please have a look at the PIC Transition Guide for more information on setting up other PIC's

    Using the internal oscillator that is available on many PIC's decreases the external component count by 3 (removing the crystal and two capacitors). Most 18F PIC's that end with 0 have an internal oscillator, such as the 18F4520, or the 18F2520.

    Most 18F PIC's with internal oscillators can run at 8Mhz, and with PLL enabled, that means its the equivalent of a 32Mhz crystal attached. PLL allows the PIC to execute a new command every oscillation of the crystal, instead of once every forth, effectively quadrupling the speed of the PIC. Now the speed of the PIC is the actual oscillator speed, in this case, 8 MIPS (Million Instructions Per Second).

    Ok, with that out of the way, this is how to enable the internal oscillator on both the 18F4520 and 18F2520.

Device = 18F4520
Clock = 32
Config OSC = INTIO67
OSCCON = %01111111  // Sets up the internal oscillator
OSCTUNE.6 = 1 // Enables PLL

Note - You must define the Clock speed to be 32 not 8! This will ensure the compiler generates the right delays for other functions/procedures

    From now on your PIC will be running at 8 MIPS (equiv to 32Mhz without PLL) with no external oscillator components attached. Something to keep in mind is that INTIO67 not only enables the internal OSC, but allows PORTA.6 and PORTA.7 to be used as normal I/O's.

    You might be wondering how the PIC can boot up without setting the OSC speed with OSCCON first. Well the answer is that the PIC's internal OSC defaults too 1Mhz on a reset, so long as the above code is right at the start of your program, it will be changed to 8Mhz with PLL enabled in no time.

    The internal oscillator does have one draw back, and that is that its not as accurate as an external crystal. This is not an issue for most applications, and the error is that small that you can still send/receive USART information accurately.

 Skip Navigation Links.

Collapse Site Tutorial IndexSite Tutorial Index
Expand 16F PIC Examples16F PIC Examples
Collapse 18F PIC Examples18F PIC Examples
LED's
Switches
Expand 7 Segment Displays7 Segment Displays
LCD's
Expand 7 Segment Displays7 Segment Displays
ADC
ADC (Another Example)
EEPROM's
DS1307
Expand RS232 and UARTRS232 and UART
DS18B20
External ADC
Hall Effect Sensor
Pulse Width Modulation (PWM)
Infrared UART
Swordfish Modules
Collapse Code SnippetsCode Snippets
SF Libraries
18F Transition Guide
Internal Oscillator
PLL
Structures
Multi Tasking
Expand Internal TimersInternal Timers
Expand InterruptsInterrupts
Expand Handy TipsHandy Tips