Autor Tema: Porque no resetea??  (Leído 3733 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado zden

  • PIC10
  • *
  • Mensajes: 13
Porque no resetea??
« en: 06 de Marzo de 2004, 10:55:00 »
Tengo el siguiente programa para un 16f84, pero no resetea al intentarlo, creo que se hace añadiendo las primeras lineas del programa, pero no me funciona, esta correctamente añadida???

Gracias de antemano.


Asm
ORG     0X00    
                GOTO    INICIO
Endasm
DEFINE OSC 4
TRISA=1
TRISB=0
T VAR WORD
poten var byte
contador var byte
contado var byte
tiempo var word
LOOP:
TRISB=0
pot porta.2,255,poten
if poten < 10 then contado = 0
if poten > 20 and poten < 50 then contado = 1
if poten > 65 and poten < 95 then contado = 2
if poten > 110 and poten < 140 then contado = 3
if poten > 155 and poten < 185 then contado = 4
if poten > 200 then contado = 5
if contado <> contador then t = 0
contador = contado
TIEMPO = CONTADOR * 49
CODIGO1:
LOOKUP CONTADOR,[%11101110,%10000010,%11011100,%11011010,%10110010,_
%01111010],PORTB
if t < tiempo and contador > 0 then
low porta.1
low porta.3
high porta.0
pause 199
t = t + 1
endif
if t >= tiempo and t < 343 then
high porta.1
high porta.3
low porta.0
pause 199
t = t + 1
endif
if t >= 343 then t = 0
goto loop
CODIGO:
PAUSE 20
GOTO CODIGO1



Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Porque no resetea??
« Respuesta #1 en: 06 de Marzo de 2004, 16:03:00 »
hola zden...
El programa seguro que funciona? No se de aseembler pero el ``goto inicio´´ me parece que no va. No lo se......
Si lo que quieres es resetear el pic con el mclr no necesitas ponerle nada en el programa, esto lo hace el compilador.
Solo conecta el mcrl a vcc con una R = 4k7 y para resetear mandas este pin a masa y listo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Porque no resetea??
« Respuesta #2 en: 06 de Marzo de 2004, 17:16:00 »
Yo lo que no se es de basic. Suponiendo que se puedan hacer llamadas a funciones de basic desde porciones de código en asembler... donde está la función INICIO llamada al principio del programa.
Has compilado el programa y no te ha dado error??

Otra cosa, exactamente que es lo que quieres hacer? Que al hacer un reset externo (fácil y rápido) o un reset por soft.
En ambos casos tu programa va a empezar por la primera línea de código, la 00h, luego si en esa tienes un salto pues lo hace y así con el resto, como lo haría la primera vez que lo alimentas. Vamos que es lo mismo.
Saludos desde Huelva (ESPAÑA)

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #3 en: 06 de Marzo de 2004, 17:29:00 »


Porque no resetea??

Tengo el siguiente programa para un 16f84, pero no resetea al intentarlo, creo que se hace añadiendo las primeras lineas del programa, pero no me funciona, esta correctamente añadida???

Gracias de antemano.

*********************************

Lo que no entiendo que es esta parte del codigo
en assembler para mi esta en lugar equivocado

Asm
ORG 0X00
GOTO INICIO
Endasm

DEFINE OSC 4
TRISA=1
TRISB=0
T VAR WORD
poten var byte
contador var byte
contado var byte
tiempo var word
LOOP:
TRISB=0
pot porta.2,255,poten
if poten < 10 then contado = 0
if poten > 20 and poten < 50 then contado = 1
if poten > 65 and poten < 95 then contado = 2
if poten > 110 and poten < 140 then contado = 3
if poten > 155 and poten < 185 then contado = 4
if poten > 200 then contado = 5
if contado <> contador then t = 0
contador = contado
TIEMPO = CONTADOR * 49
CODIGO1:
LOOKUP CONTADOR,[%11101110,%10000010,%11011100,%11011010,%10110010,_
%01111010],PORTB
if t < tiempo and contador > 0 then
low porta.1
low porta.3
high porta.0
pause 199
t = t + 1
endif
if t >= tiempo and t < 343 then
high porta.1
high porta.3
low porta.0
pause 199
t = t + 1
endif
if t >= 343 then t = 0
goto loop
CODIGO:
PAUSE 20
GOTO CODIGO1

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #4 en: 06 de Marzo de 2004, 22:46:00 »
Hola
lo he compilado para 16F84 y da error en las dos primeras lineas
lo que dice cuca es verdad ademas la instruccion en asm  esta en el lugar incorrecto ya que debe ir despues de las declaraciones
y supuestamente direccionar en otro lugar despues de alguna de las comparaciones o bucles
saludos
Luis

Desconectado zden

  • PIC10
  • *
  • Mensajes: 13
RE: Porque no resetea??
« Respuesta #5 en: 07 de Marzo de 2004, 15:31:00 »
Cierto que faltaba la etiqueta inicio,la puse, pero en que parte del programa le indico que cuando se resete, empiece el programa desde el principio y no se me quede colgado.
por que el problema que tengo es que cuando reseteo por pulsador el programa sigue y en ocasiones se cuelga.

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #6 en: 07 de Marzo de 2004, 15:38:00 »
Eso es lo mas importante
yo creo que la instruccion para que comience de nuevo
se debe insertar en el lugar donde ya el Pic realizo la tarea
lo que no entiendo para que queres resetear
si con limpiar el registro y dejarlo en blanco
y un simple goto al inicio ya deja al micro en condiciones de empezar de cero
espero que me entiendas
saludos

Desconectado zden

  • PIC10
  • *
  • Mensajes: 13
RE: Porque no resetea??
« Respuesta #7 en: 07 de Marzo de 2004, 15:43:00 »
Antes lo tenia sin las primeras lineas de asm, y el programa funcionaba, pero al hacer el reset con el punsador a negativo, el programa sigue y no se inicia, y angunas veces se cuelga.
Como puedo hacer que al resetear se ponga a rular desde el principio de programa??

Saludos y gracias.....

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #8 en: 07 de Marzo de 2004, 15:44:00 »
a me olvide si el micro al ser reseteado arranca mal es porque hay  tal vez un error de programacion
las primeras lineas de codico son sobre configuracion de fusibles
Luego  las declaraciones
luego el inicio
despues las instrucciones
no se pueden poner las cosas en cualquier lugar todo tiene un orden
saludos
Luis

Desconectado zden

  • PIC10
  • *
  • Mensajes: 13
RE: Porque no resetea??
« Respuesta #9 en: 07 de Marzo de 2004, 15:51:00 »
No tengo mucha idea, pero realmente creo que es asi como lo tengo ordenado,sabes que es lo que esta mal... aparte de las primeras linas de asamble...

saludos

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #10 en: 07 de Marzo de 2004, 17:43:00 »
hola
primero no se que quieres hacer con el programa
segundo para que micro???
pasame esos datos y veo que podemos hacer
lo que me llama la atencion es que si eres capaz de escribir ese codigo no entiedo como no puedes ubicarte en como programar
ojo este comentario es una duda solamente
si es un codigo incompleto bajado de internet
tambien por favor aclaramelo para saber en que me meto

ademas te recomiendo que despues de cada linea siempre cuelgues alguna explicacion asi se puede seguir mas facil y no se pierde tanto tiempo
Luis


Desconectado ejmc

  • PIC18
  • ****
  • Mensajes: 311
RE: Porque no resetea??
« Respuesta #11 en: 07 de Marzo de 2004, 18:31:00 »
La verdad no entiendo nada
Si solo es resetear el pic (que dice ser un 16f84) para que eso que esta en asm. Por lo menos en el F84 no se necesita. O estoy errado?

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #12 en: 07 de Marzo de 2004, 19:25:00 »
yo tampoco entiendo nada per vamos a ver en que se puede ayudar  cuando nos entermos de que se trata
Luis

Desconectado zden

  • PIC10
  • *
  • Mensajes: 13
RE: Porque no resetea??
« Respuesta #13 en: 08 de Marzo de 2004, 05:06:00 »
OK:::OK

Por fin ... el problema estaba en que no inicializaba las variables a cero despues de definirlas, y entonces al resetear las variables seguian con los valores anteriores o se hacia un lio, ya esta OK

Gracias a todos por hacerme pensar.

Desconectado LuisFrino

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 140
    • Electronica Microcontroladores Ilumunacion Decorativa
RE: Porque no resetea??
« Respuesta #14 en: 08 de Marzo de 2004, 05:25:00 »
Bueno me alegro que el problema este resuelto
suponia que era un timer controlado por un pote
les recuerdo lo de los comentarios en cada linea
porque es muy util para depurar un programa con problemas
leyendo el fuente la instruccion de reinicio (GOTO)  despues de limpiar  el registro debe debe apuntar a la primera etiqueta
que en este caso es LOOP:
de esa forma el micro se reinicia con todo limpio en la primera
instruccion
ya ,e parecia que algo de idea tenias ya que si bien el codigo no
parecia estar escrito por un principiante en programacion
salvo los detalles del comienzo
no lo he leido muy detenidamente todo el codigo salvo las primeras lineas
tambien hay que llevar un control de lo que se esta escribiendo para no volver loco al Pic, el solo intenta hacer lo que le pedimos
pero en ciertas ocaciones le complicamos la tarea.Ja ja
suerte
Luis