Frequently Asked Questions

Why doesn't my chip run with INTRC fuse?

Most chips with internal oscillators, especially in the 12CXXX family, have an oscillator calibration constant that are set by Microchip in the factory to make sure each chip in the fab line provides approximately the same frequency. This calibration constant is provided as a RETLW instruction at the last program address, which the W returned is the calibration constant. The CCS C compiler will call the last program address to get this calibration constant, and then load it appropriately.

However, if you have U/V erased a part with a calibration constant than the calibration constant will be erased as well. This causes the RETLW at the last program address to be erased. Many people then see the compiler jumping to the last program address, and not realizing that there is a calibration constant there, and think that the compiler is in error for jumping to an odd location.

If you have erased the calibration constant and want to use the CCS C compiler to add a new calibration constant then see this FAQ.

C-Aware IDE Demo
Embedded C Learners Kit
C Workshop Compiler