Extract Code from Microprocessor SN8P2212

While using the INTOSC oscillator in Two-Speed Start-up, the device still obeys the normal command sequences for entering power managed modes, including multiple SLEEP instructions. In practice, this means that user code can change the SCS1:SCS0 bit settings or issue SLEEP instructions before the OST times out when Extract Code from Microprocessor SN8P2212.

Extract Code from Microprocessor SN8P2212
Extract Code from Microprocessor SN8P2212

This would allow an application to briefly wake-up, perform routine “housekeeping” tasks and return to Sleep before the device starts to operate from the primary oscillator. User code can also check if the primary clock source is currently providing the device clocking by checking the status of the OSTS bit (OSCCON<3>).

If the bit is set, the primary oscillator is providing the clock. Otherwise, the internal oscillator block is providing the clock during wake-up from Reset or Sleep mode.

The Fail-Safe Clock Monitor (FSCM) allows the microcontroller to continue operation in the event of an external oscillator failure by automatically switching the device clock to the internal oscillator block. The FSCM function is enabled by setting the FCMEN configuration bit.

When FSCM is enabled, the INTRC oscillator runs at all times to monitor clocks to peripherals and provide a backup clock in the event of a clock failure.

This allows ample time between FSCM sample clocks for a peripheral clock edge to occur. The peripheral device clock and the sample clock are presented as inputs to the Clock Monitor latch (CM) when Extract Code from Microprocessor SN8P2212. The CM is set on the falling edge of the device clock source, but cleared on the rising edge of the sample clock.

Clock failure is tested for on the falling edge of the sample clock. If a sample clock falling edge occurs while CM is still set, a clock failure has been detected. This causes the following:

  • the FSCM generates an oscillator fail interrupt by setting bit, OSCFIF (PIR2<7>);
  • the device clock source is switched to the internal oscillator block (OSCCON is not updated to show the current clock source – this is the fail-safe condition) and
  • the WDT is reset.

During switchover, the postscaler frequency from the internal oscillator block may not be sufficiently stable for timing sensitive applications. In these cases, it may be desirable to select another clock configuration and enter an alternate power managed mode. This can be done to attempt a partial recovery or execute a controlled shut-down.