Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

20/05/2010 #1


Fallo con un 16F628
Cual es el error: Lo poco que se ve no ayuda a descartar posibles origenes. El pic se queda inactivo, ni siquiera tiene un funcionamiento aleatorio. Simplemente no se inicia.

Cual es la proyecto donde me aparece el problema: Estoy metiendo un programa relativamente sencillo en un 16F628. Sin temporizadores, ni interrupciones. He configurado los puertos A y B como 3 entradas y 13 salidas, para controlar 9 displays 7seg con tres pulsadores.

Estoy seguro (realmente no, si no no estaría escribiendo este mensaje) que todo está escrito bien, todo el programa está probado por partes, y he mezclado las partes para estar seguro de que no se me escapase algún salto o llamada rara... pero nada.

Al final, probando probando, he llegado a reducir el fallo, al número de líneas de código que escribo... ¿como? poniendo ordenes "nop".

Primera pista (y realmente la única), el error aparece solo si los nop están en medio (incluso al inicio) del programa, si los pongo al final, no hay problema.

Segunda, los "goto $+n" no son el error, solo se me ocurre que el fallo esté en la linea "addwf PCL,1", tal vez se cargue en PCL algún dato incorrecto... pero creo que todas las variables que voy cargando están limpiadas en el encendido. Además como ya he dicho, todo está probado por partes y esa línea está siempre.

Alguna sugerencia? No tengo problemas en meter el código, pero es un tostón. Si alguien se interesa lo pongo, a ver que saca.

GRACIAS
21/05/2010 #2


Respuesta: Fallo con un 16F628


Solucionado... no se el porqué, pero está solucionado.

El problema me lo mete el comando "addwf PCL,1", cuando está despues de mucho codigo (antes estaba como subrutina 15, casi al final) .

Solución: Poner la tabla con la dichosa linea, como primera de las subrutinas... ¿por qué me funciona así? no lo se, suponía y supongo que el vector apuntaría a una dirección erronea, pero en el fondo, ahora tambien debería hacerlo... pero no lo hace.

SI ALGUIEN ENTIENDE EL PORQUE DE TODO ESTO, AQUI ESPERO. GRACIAS

pero ya puedo seguir
21/05/2010 #3

Avatar de ByAxel

Respuesta: Fallo con un 16F628
Muestranos el código...
Si usas el MPLAB entonces ese no tiene errores en ASM, al menos nunca me ha sucedido y el 99% de los problemas es causado por el mismo usuario por falta de información; por eso publica parte o todo tu código para verlo...
21/05/2010 #4

Avatar de seaarg

Respuesta: Fallo con un 16F628
Esto se debe a que el (nro de linea donde esta el comando addwf PCL,1 sumado al valor que tengas en el registro W) es > 255

Resumiendo: (nro linea instruccion + W) < 255 = funciona, en otro caso el micro salta a cualquier lado.

Asumo que no estas usando watchdog. Te lo recomiendo.

Esa es la razon por la cual el programa funciona si pones dicha tabla al principio de todo. Su nro de linea es mucho menor. Se que hay tecnicas para trabajar con esto de una forma mejor pero no las recuerdo ni tengo idea donde podrias buscarlas.
21/05/2010 #5


Respuesta: Fallo con un 16F628
Tiene bastante lógica si, eso no lo había leído por ningún lado... muchas gracias.

Y tendré en cuenta lo del perro...

El código, ya con la subrutina en una posición anterior a la dirección FF, está aquí http://xantux.blogspot.com/2010/05/e...-de-blood.html

Pues nada un placer y hasta otra
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.