Hola, tengo realizado un codigo para un 16f628A, que dependiendo del estado de un pin y unas condiciones dadas me activa un relé por medio de un transistor BC337 durante 2 segundos.
En alguna ocasión muy de tarde en tarde el relé se queda clavado permanentemente aunque compruebo que el pin que excita el transistor si pasa a estado bajo.
La solucion que veo seria resetear automaticamente el pic una vez transcurridos esos 2 segundos de activacion del rele.
Lo primero que hice fué poner un pin en estado alto desde el inicio del codigo y conectado al pin de reset pensando en pasarlo a estado bajo una vez terminada la temporizacion del rele, torpe de mi que el pic al arrancar al estar aun en estado bajo se resetea continuamente.
Opté por poner un transistor BC337 con emisor a masa y colector al pin reset, la primera vez lo resetea y ya no arranca mas reseteandose constantemente, por lo que la unica opcion que veo es hacerlo por interrupcion interna por flanco descendente del pin que excita el relé y ahi es donde no se seguir.
¿Alguien es tan amable de indicarme el codigo para realizar ese reset?.
Un Saludo.
CMCON=7
TRISB=%10000000
TRISA=%1111
LED1 var PORTB.5
n var byte
@ device pic16F628A , INTRC_osc_NOCLKOUT , WDT_off, MCLR_on, PROTECT_off, CPD_off, BOD_on, PWRT_on
Goto inicio
inicio:
portb.6=0
portb.5=0
if portb.7=0 then
portb.6=1
pause 1000
goto activapin
endif
goto inicio
activapin:
if portb.7=1 then
goto pausa
endif
goto activapin
pausa:
for n=0 to 50
if portb.7=0 and portb.6=1 then
portb.5=1
pause 2000
portb.5=0
portb.6=0
portb.4=0
pause 200
goto inicio
endif
pause 200
next n
goto inicio