PICKIT2 pierde valores de intervalo de banda

1

Soy nuevo en la programación de microcontroladores PIC. Intenté programar PIC12F629. Simulo mi programa en Proteus, y funciona bien. Pero cuando intenté programarlo con PICKIT2, el valor de calibración de intervalo de banda cambia de 1000 a 0000. He leído la hoja de datos donde dice que los valores de OSCCAL y los valores de calibración de intervalo de banda no deberían cambiar. ¿Cómo puedo restablecer los valores de intervalo de banda o hacer que PICKIT2 no los golpee?

    
pregunta Sonu

1 respuesta

2

Página 54 de la Hoja de datos :

Enlanota3especificaquetodalamemoriadelprograma,incluidoelvalorOSCCAL,seborradurantelaprogramación.Debodecirquepareceuncomportamientomuyextraño,peroMicrochiptendrásusrazones,estoyseguro.

Enlanota1dicequedebeleerelvaloractualyguardarloenalgúnlugarantesdeborrarelchiplistoparareprogramarlo.Porextensión,aunquenoseespecifiquelocontrario,debevolveraescribirelvalordespuésdeborrarelchip.

Estasnotastambiénserepitenenlapágina56,Sección9.2.5.1:

También da un ejemplo de cómo calibrar el oscilador, aunque no está del todo claro. Por lo que sé, todo lo que está haciendo el código es cargar algún valor almacenado en el programa y luego guardarlo en el registro OSCCAL. El equivalente de C será algo así como la primera línea en main() :

OSCCAL = <some value>;

Por supuesto, el valor será el valor de calibración que haga que el oscilador interno del reloj tenga la velocidad correcta. Sin embargo, si ha borrado este valor, deberá ver si está escrito en algún lugar o intentar experimentar con diferentes valores hasta encontrar el correcto.

Si la frecuencia del reloj no es crítica (es decir, no necesita una sincronización precisa), seleccione cualquier valor, digamos 0x80, ya que es el valor medio.

Si necesita una sincronización precisa, deberá probar diferentes valores y medir la frecuencia del reloj. La forma más sencilla de obtener una cifra aproximada es tener un código que espere exactamente 1 millón de ciclos de reloj de instrucción, luego encienda un LED. Luego, puede medir el tiempo que tarda el LED en parpadear (debería estar 1s encendido, 1s apagado) y luego probar diferentes valores OSCCAL de manera sistemática hasta que esté parpadeando a la velocidad correcta.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas