byte OSCALL, ¿qué es esto?

1

Recientemente comencé a jugar con microcontroladores, y con una interfaz de PC y su software, cuando leía un programa desde un microcontrolador, obtuve un campo que decía el byte OSCALL y parece que cada vez me da un valor diferente, mi pregunta es, ¿qué es este byte? ¿Qué significa?

Por el nombre supongo que algo como OSScillator CALLibration, aunque tanto la S como la L se duplican, esto es lo que tiene más sentido para mí ...

Saludos cordiales

    
pregunta Antero Duarte

1 respuesta

3

Su pregunta relacionada dice que está usando un 12F629, así que me referiré a esta hoja de datos a lo largo.

Muchos microcontroladores modernos tienen osciladores incorporados. Estos son bastante precisos, pero la frecuencia exacta variará debido al proceso de fabricación. Debido a esto, la mayoría de estos microcontroladores tienen alguna forma de "afinar" o calibrar el oscilador mientras se está ejecutando.

Con el PIC 12F (y otras familias de PIC similares) hay un registro llamado OSCCAL . Puede leer sobre esto en la sección 9.2.5.1 "Calibración del oscilador interno" en la página 56 de la hoja de datos que vinculé anteriormente.

La hoja de datos dice:

  

Se programa una instrucción de calibración en la última ubicación de la memoria del programa. Esta instrucción es un RETLW XX , donde el literal es el valor de calibración. El literal se coloca en el registro OSCCAL para establecer la calibración del oscilador interno.

Este valor puede ser calculado y establecido por los programadores PICKit2 y PICKit3 de Microchip y probablemente por algunas de las mejores herramientas compatibles.

El

Ejemplo 9-1 en la página 56 muestra cómo se carga esto en el registro OSCCAL , que es volátil y, por lo tanto, debe configurarse en cada encendido.

BSF STATUS, RP0 ; Bank 1
CALL 3FFh       ; Get the cal value
MOVWF OSCCAL    ; Calibrate
BCF STATUS, RP0 ; Bank 0

Este es un simple fragmento de código que selecciona el banco correcto, llama a la última ubicación de memoria (0x3FF) y luego mueve el resultado al registro OSCCAL . Esto explica por qué el último byte en un archivo hexadecimal se desmonta a RETLW XX , simplemente devuelve el valor de calibración.

Si desea utilizar este valor que se almacena en el programa flash, debe incluir un código pequeño como el código anterior que se ejecuta cada vez que su dispositivo se reinicia. Algunos compiladores de PIC C lo incluirán automáticamente en los dispositivos relevantes.

Puedes leer más sobre OSCCAL en los siguientes enlaces:

respondido por el David

Lea otras preguntas en las etiquetas