reloj interno PIC10F200

2

Estoy tratando de calibrar el reloj interno para encender una salida una vez por 3 segundos cada 7 días con una precisión de unos minutos. Pude lograr esto usando el registro OSCCAL en el chip. El problema en el que funciona funciona si lo configuro por chip. Estoy tratando de encontrar una manera de programarlo haciendo que compruebe y calibre su interno mientras programa. Tal vez haya una característica en el compilador que se calibre automáticamente?

Estoy usando:

MCU: PIC10F200

Programador: PICkit3

Software: MPLAB X IDE v3.26

Compilador: XC8 v1.37

    
pregunta Gabe

1 respuesta

4

El compilador no puede "calibrarse automáticamente" porque no tiene idea de la frecuencia con la que puede funcionar un chip individual. El programador / depurador de chips podría hacerlo descargando y ejecutando un programa en el PIC que produce una frecuencia en un pin de salida. Luego se podría medir esta frecuencia y calcular e insertar el valor de OSCCAL de calibración requerido en su código.

Normalmente no necesita hacer esto porque Microchip ya lo hizo en la fábrica. Un byte de calibración se almacena en la última ubicación de la ROM en una instrucción MOVLW (MOVe byte literal al registro de trabajo). Al encender o reiniciar, el PIC ejecuta esta instrucción, por lo que el registro W tiene el byte de calibración en el arranque. Su código de inicio solo tiene que guardar este valor ( antes de cualquier otro código que use el registro W) y escribirlo en el registro OSCCAL .

La calibración de fábrica probablemente no sea tan precisa como podría ser, porque se realiza rápidamente y no en el circuito exacto que tiene. Es posible que pueda obtener una precisión ligeramente mayor con un programa PIC que establece de manera incremental OSCCAL a diferentes valores hasta que se acerque lo más posible a la frecuencia requerida (tal vez al compararla con una frecuencia de referencia en un pin de entrada) y luego le dice qué Valor de calibración a utilizar. Aquí hay un ejemplo: -

Utilidad de recalibración del oscilador interno

(Nota: el proyecto en ese enlace solo funciona con el 12F629 y 675. El 10F200 no tiene EEPROM, por lo que tendría que usar algún otro método para extraer el valor de calibración, por ejemplo, envíelo como datos en serie en una salida pin.)

Pero 7 días son 10080 minutos. El PIC10F200 tiene una tolerancia de oscilador interno de + -1% a 3.5V, que corresponde a + -100 minutos en 7 días. Por lo tanto, incluso con la mejor calibración no puede garantizar obtener una precisión de 'unos minutos'.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas