PIC 16F887 y el misterioso bit de selección de reloj del sistema (SCS)

Estoy usando un PIC 16F887 y me gustaría usar el oscilador interno HFINTOSC. Para lograr esto, configuré los bits IRCF 2:0 en 110 (prescaler de 4 Mhz) y los bits de configuración FOSC 2:0 en INTOSC.

Ahora debo hacer algo que realmente no puedo entender: de acuerdo con la hoja de datos (ver pág. 61) debo configurar el bit SCS para usar la fuente de reloj interna (ver el MUX final en el diagrama de la pág. 61). Debido a que el bit SCS está en el registro OSCON, debería configurarlo mediante programación en mi código, ¡pero el código en sí necesita una fuente de reloj para ejecutarse! ¿Cómo puedo ejecutar un código para configurar un bit para usar un reloj si el código necesita una fuente de reloj en primer lugar?

Cito la hoja de datos para el bit SCS:

4.6.1 BIT DE SELECCIÓN DE RELOJ DEL SISTEMA (SCS) El bit de selección de reloj del sistema (SCS) del registro OSCCON selecciona la fuente de reloj del sistema que se utiliza para la CPU y los periféricos. • Cuando el bit SCS del registro OSCCON=0, la fuente del reloj del sistema se determina mediante la configuración de los bits FOSC<2:0> en el registro de palabra de configuración 1 (CONFIG1). • Cuando el bit SCS del registro OSCCON=1, la fuente de reloj del sistema es elegida por la frecuencia del oscilador interno seleccionada por los bits IRCF<2:0> del registro OSCCON. Después de un reinicio, el bit SCS del registro OSCCON siempre se borra.

Respuestas (1)

No necesita escribir también el bit SCS si ya seleccionó el oscilador interno en los bits de configuración.

bit 0 SCS: bit de selección de reloj del sistema

  • 1 = El oscilador interno se usa para el reloj del sistema
  • 0 = Fuente de reloj definida por FOSC<2:0> del registro CONFIG1

El bit SCS es 0 de forma predeterminada, por lo que el reloj del sistema se selecciona mediante los bits FOSC<2:0> CONFIG1.

Ni siquiera tiene que configurar los bits IRCF<2:0>, porque su valor de reinicio es 110 = 4 MHz.

Entonces, básicamente, para seleccionar el reloj interno a 4 MHz, ¿no tengo que tocar ninguno de los registros? (palabra de configuración excluida)
@G_G Esa es mi interpretación de la hoja de datos. Solo he usado el PIC16F887 con un oscilador externo.