Error con un PIC

Hola, weno para empezar decir que hablo desde unos conocimientos escasos, por si luego digo una burrada. El caso es que he hecho un circuito electronico con un Pic16F84 que ya había utilizado muchas veces y siempre sin problemas.
En base, el sistema es rollo bomba, pero en vez de explotar, se enciende un LED. Está programado para contar un numero de minutos, y tener que desactivarlo y eso. Teoricamente es sencillo.
Pero a la hora de la verdad, el circuito no funciona como es debido. Es decir, en ocasiones va perfecto, y hace todo lo que debe hacer. Pero desenchufo, vuelvo a enchufar, y ya no funciona. Sólo funciona una de cada 10 veces o asi. El programa ensamblado está bien, porque está testeado mil veces con el MPLAB y ya subsané los errores. y el circuito es muy simple, y no parece que tenga ningun fallo, y si lo tuviera, iría mal siempre no? no iria a veces bien a veces mal.

Mi pregunta es si existe alguna razón que pueda haber pasado por alto para que esto funcione de éste modo. Perdon por la extensión de la pregunta pero me es dificil explicarlo :)

Gracias de antemano
 
Pienso que debe ser un problema del programa, en alguna oportunidad diseñe un programa muy extenso y los errores del programa no se veian conado efectuaba las operaciones basicas sino cuando lo probaba y al tiempo depues sin quitarle la alimentacion se presentaban las fallas. Otra posible causa(mas cercana atu caso) es que al iniciar el microcontrolador las rutinas iniciales so decisivas para el funcionamiento del micro, entonces esprobable que por efectos de la una mala fuente de alimentación no se le suministre toda la tension o corirente necesaria, afectando dichos ciclos de reloj que son importantes. normalmente para evitar cosas de ese tipo creo un retardo inicial (1ms) y despues configuro los registros, asi prevengo dicho problema. Escucho mas experiencias
 
Bien tengo que recuperar el original, que lo dejé en el ordenador donde ensablé el PIC. Ésta misma noche tendré los originales y los colgaré aquí. Dios llevo desde verano enganchado con éste proyecto! si consigo solucionarlo me muero
 
Bien aquí tengo el código. es un poco lioso pero weno, a lo mejor las anotaciones del lado os ayudan a entenderlo. Además todos los puertos estan definidos con nombres, que así será mas facil de entender. Por si acaso, os hago una pequeña explicación:

Weno esta vez lo explicare bien. El tema es que es como una mina, que tendrás que desactivar. tendrás 30 minutos para llegar hasta la mina, y abrir la tapa de ésta. en ese momento, el PIC comienza a contar 30 segundos, que es el tiempo que tienes para desactivarla. Tendras un monton de cables, pero en realidad, solo seran dos circuitos de cables, haciendo zigzag. Si por alguna casualidad, desconectas un cable del circuito que no tenias que tocar, suena la alarma. Tu objetivo será reordenar el otro circuito, para que se complete y conduzca una señal alta al pic. pero claro, podrías haberlo hecho sin querer, entonces para saber si lo has hecho adrede, he puesto un pulsador. Si es pulsado, el pic comprueba si la has desactivado. si es asi, se apaga, y si no, suena la alarma. Eso es todo ejje


PUERTOS A:

PORTA,0: Hay un led que indica que el bicho éste a empezado a contar 30 minutos, que es el tiempo que tienes para abrir la tapa.
PORTA,1: Una vez abierta la tapa, se enciende este led.
PORTA,2: Es un led verde, que indica que la mina ha sido desactivada.
PORTA,3: Lleva hasta un led, que simula la alarma que pondré.

PUERTOS B:

PORTB,0: De los dos circuitos de cableado de los que hable antes, éste es el que tienes que completar para desactivarla. (0=nada,1=desactivado)
PORTB,1: El detector de la tapa abierta. (Abierta=0,Cerrada=1)
PORTB,2: No hay nada conectado
PORTB,3: El segundo circuito, el que si lo cortas, suena la alarma (0=alarma,1=todo normal)
PORTB,4: El pulsador que pulsas cuando "crees" que ya la has desactivado.
PORTB,5: Esto es un detector de movimiento, pero como vereis en el codigo, esta deshabilitado, xke como no funcionaba el codigo, pense que el problema podia estar ahi y lo quite (aunke fallaba iwal )
PORTB,6: Otro detector deshabilitado, este para que no lo levanten del suelo.


Bueno espero que no sea demasiado caotico y alguien me pueda decri donde puede estar el fallo. Gracias! (PD: alguien podria asustarse y pensar que soy un terrorista o algo jaja pero tranquilos, esto es para Airsoft, un deporte tipo Paintball)
 

Adjuntos

  • minaairsoft04_240.asm
    5.7 KB · Visitas: 19
Puede que tu problema no sea el programa, no lo he leido y no lo voy a descargar, porque tu mismo dices que simuldo funciona bien, quizas se deba a un herror en el hardware, haz la prueba siguiente, enchufalo todo pero no coloques el cristal, cuando lo hagas, y lo tengas todo alimentado, coloca el cristal, comprueba lo que te sale, si te sale bien, entonces haz caso al consejo de retardar el programa un par de milisegundos o a activa el POR.

Espero que te sirva
 
nada... lo intenté y sigue igual... lo que aré será comprobar de nuevo el codigo, y copiaré el circuito en una plakita de pruebas, haber si lo soluciono... gracias a todos! :)
 
Hola. Tienes un error bastante grave. Cuando vas a la rutina FIN, se llama a la sub-rutina apagartodo, cuando finaliza esta sub-rutina vuelve a la rutina FIN, pero aquí ya no hay nada y el CP empieza a recorrer cualquier parte de su memoria, para solucionar esto pon esta rutina

loop goto loop

Esto obliga al CP quedarce aquí.

Prueba esto y nos dice como te fué.
 
Vaya es verdad! no me había dado cuenta... :s Muchas gracias Leon Elec, ahora lo he vuelto a escribir desde cero, y sin cometer ésta vez ese error, he puesto al final lo de apagartodo, y luego e puesto SLEEP, y así que se quede hasta que alguien desconecte el aparato. Ahora que lo e vuelto a hacer si funciona, asi que tal vez fuera eso. Así que muchas gracias de nuevo Leon Elec :)
PD: Cuando consiga acabar éste proyectillo, colgaré algún video en youtube (allí me llamo NEOROGERTUBE)

Weno gracias a todos! :)
 
Atrás
Arriba