¿Por qué el microcontrolador PIC pic16f683 se reinicia después de 2,4 segundos?

0

He escrito el programa de luz intermitente LED para un microcontrolador 16F683.

Esperaba que el LED tuviera una relación de espacio de marca de 50:50. es decir, exactamente en la mitad del tiempo. De hecho, está gastando más tiempo que fuera.

Conecté la salida al alcance del almacenamiento y puedo ver que hay un error exactamente 2,4 segundos después del primer encendido. Parece que la salida está bajando, luego, antes de llegar a 0v, se va a pasar de estado antes de volver a + Vcc.

He comprobado el #pragma config WDT = OFF que parece correcto. He intentado volver a compilar con WDT activado y desactivado y puedo ver una pequeña diferencia en el archivo HEX compilado.

Estoy usando un programador MiniPro TL866.

    
pregunta Nick Hill

2 respuestas

5

Gracias a todos. De hecho, era un problema de WDT, y los bits de desactivación de WDT no se estaban configurando. Ninguno de los bits de registro de configuración se estaban configurando.

El programador tiene una casilla de verificación separada para Con.FUSE Bit. Cuando programo con este conjunto, se produce un error de programación, por lo que pensé que estaba intentando programar una función no implementada en un bit, lo que no creía que afectara al WDT, etc.

Cuando programo con la casilla de verificación marcada, el programador dice que hay un error, pero la falla de restablecimiento ha desaparecido y el pin MCLR está deshabilitado como debería.

Investigaré por qué el programador está dando un error. Entonces, cualquiera que tenga el Minipro, asegúrese de que esté activado el bit CON.FUSE, e ignore el error que arroja, ya que en realidad se programa correctamente.

Actualizar: El compilador / ensamblador PIC XC8 está configurando los dos bits más significativos en el archivo HEX para el registro de configuración como binario 1.

El Minipro vuelve a leer todos los datos, incluido el registro de configuración como una verificación. Cuando lo hace, lee el cero binario de los 2 MSB. El error de verificación es lanzado por Minipro v6.50 con el programador TL866.

He intentado voltear todos los bits en los campos de configuración de pragma, parece que todos los bits de configuración están correctamente programados. Para corregir el error, programe un PIC ignorando el error. Lee el dispositivo, luego escribe en un archivo HEX. El nuevo archivo HEX no arrojará un error.

Quizás el registro de configuración tenga una longitud de 14 bits y los dos MSB en la palabra de 16 bits en el archivo HEX no estén implementados.

Si este es el caso, y el chip vuelve a leer los bits no implementados como cero, entonces quizás sea mejor que XC8 establezca los bits en el mismo valor que se leerá desde el chip. Sin duda, el programador PIC tiene una solución integrada.

    
respondido por el Nick Hill
1

No encontré un PIC16F683 como opción ... ¿podría ser un PIC12F683?

De cualquier manera, seguro que suena como un problema de WDT.

Para el 12F683, si se desactiva el temporizador de vigilancia (con el comando #pragma) aún se puede encender manualmente utilizando el bit SWDTEN (WDTCON < 0 >). Intenta borrar ese bit en el código.

    
respondido por el bitsmack

Lea otras preguntas en las etiquetas