Summary:
Debe configurar OSCF
(bit 3) en 0
en el registro PCON
en su código (es decir, durante el tiempo de ejecución) cuando desee que el PIC INTOSC (Oscilador interno) se ejecute a una velocidad nominal de 48 kHz ( en realidad en cualquier lugar entre 31.4 kHz y 78.62 kHz) en lugar de la frecuencia predeterminada de encendido de INTOSC de 4 MHz.
Detalles :
Elegí configurar el oscilador interno a la frecuencia mínima posible (48 khz) para disminuir el consumo de energía y especifiqué que en el asistente y el archivo .h tienen la línea #uso retardo (interno = 48 kHz).
El problema es que ninguna de las cosas que usted enumera realmente configura el hardware de INTOSC a 48 kHz. Según lo que dijiste, parece que tu software asume que la CPU funcionará a 48 kHz, pero tu hardware seguirá funcionando a la frecuencia INTOSC de 4 MHz predeterminada.
el programa funcionó como estaba previsto en Proteus, pero fue aproximadamente 85 veces más rápido que cuando lo probé en el tablero.
Sí, eso es lo que espero.
85 más rápido x 48 kHz = 4 MHz (aprox.)
Este resultado sugiere que su MCU en realidad aún se está ejecutando a la frecuencia INTOSC predeterminada de 4 MHz.
El punto importante es que no puede configurar ese PIC para que se ejecute a 48 kHz desde el encendido . Si configura CONFIG BITS (a.k.a. Fuses) en una de las dos variantes de configuración de INTOSC, la MCU utilizará la frecuencia interna de 4 MHz en el encendido.
Luego, cuando desee cambiarlo a 48 kHz (tal vez al comienzo de su main()
pero quizás en otra parte de su código (usted puede elegir) luego configure OSCF
(bit 3) a 0
en el registro PCON
- ese bit es lo que cambia la frecuencia INTOSC de 4 MHz a 48 kHz (después de una corta transición de conmutación).
Consultelasección14.2.8"FUNCIÓN ESPECIAL: MODOS DE OSCILADOR DE VELOCIDAD DUAL" en la página 101 de PIC16F628A hoja de datos para más detalles.
Tambiéntengaencuentaquelahojadedatosnoespecificalaprecisióndelrelojde48kHz(soloseespecificalaprecisióndelrelojde4MHz).Sinembargo,la PIC16F628A errata muestra que el reloj de 48 kHz puede variar entre 31.4 kHz y 78.62 kHz.