Problema con pic y 555

Hola amigos,

Tengo un problema con un pic16f84 y un 555. Utilizo un 555 para medir un tiempo variable gracias a un potenciometro. Bien, el 555 se inicia a traves de un pulso enviado por el pic, y funciona bien. El problema es que tengo la salida del 555 conectada a un puerto configurado como entrada, y el pic no se entera de cuando varia. Si alguien me pudiera ayudar??
 
El PIC no es el que se debe enterar, eres tu quien le debe decir al PIC cuando leer el pin donde llego el pulso, ya sea mediante una interrupción o mediante muestreo cada cierto tiempo.
 
Hola amigos,

Tengo un problema con un pic16f84 y un 555. Utilizo un 555 para medir un tiempo variable gracias a un potenciometro. Bien, el 555 se inicia a traves de un pulso enviado por el pic, y funciona bien. El problema es que tengo la salida del 555 conectada a un puerto configurado como entrada, y el pic no se entera de cuando varia. Si alguien me pudiera ayudar??

Amigo, sube el esquematico, para interpretar mejor lo que planteas:)
 
Pongo un esquematico muy general del circuito. Su funcionamiento es el que sigue:
Espero a pulsar el interruptor para mandar una señal por RB0 al 555 para que se active y cuante durante un tiempo. Mientras está contando estoy dentro del bucle que puse anteriormente. El problema es que cuando acaba de contar, el PIC no detecta el cambio de 1 a 0 que se produce en la patilla RA1.

http://imageshack.us/photo/my-images/832/circuitoj.jpg/

 
Última edición:
Pongo un esquematico muy general del circuito. Su funcionamiento es el que sigue:
Espero a pulsar el interruptor para mandar una señal por RB0 al 555 para que se active y cuante durante un tiempo. Mientras está contando estoy dentro del bucle que puse anteriormente. El problema es que cuando acaba de contar, el PIC no detecta el cambio de 1 a 0 que se produce en la patilla RA1.

http://imageshack.us/photo/my-images/832/circuitoj.jpg/
Amigo, bueno, cerciorate pues en la mayoria de los PIC el puerto RA1 es analogo, si es asi, debes declararlo como DIGITAL, sino, utiliza algun otro terminal del puerto B.
Otra pregunta, por algun motivo especial utilizas el 555?, pues tienes el mismo controlador para eso...
 
Última edición:
Amigo, bueno, cerciorate pues en la mayoria de los PIC el puerto RA1 es analogo, si es asi, debes declararlo como DIGITAL, sino, utiliza algun otro terminal del puerto B.
Otra pregunta, por algun motivo especial utilizas el 555?, pues tienes el mismo controlador para eso...
Utilizo el 555 para poder cambiar el tiempo variando un potenciometro, que irá conectado a una ruleta selectora...

Edito para decir que he intentado cambiar al PORTB y sigo igual.....

Gracias por la info.
 
Última edición:
No creo que sea del programa en sí, será de configuración, pero yo pruebo con un pulsador y si que me detecta cuando está pulsado, pero con la salida del 555 no hay manera...
 
yo lo he programado así

ESPERA1 btfsc PORTA,2
goto ESPERA1
goto TIMER2

gracias por contestar;)
Me parece que ese es tu error, si tienes tu circuito como en el esquematico, la salida del 555 esta en A1 y tu lees A2.
Sera mejor si agregas el programa completo y ver si no tienes un error previo a la lectura del pin.
 
Con un potenciometro en una entrada analógica, puedes leer el valor de este y lo haces por software. y te ahorras el 555 que ademas no es barato.
 
Me parece que ese es tu error, si tienes tu circuito como en el esquematico, la salida del 555 esta en A1 y tu lees A2.
Sera mejor si agregas el programa completo y ver si no tienes un error previo a la lectura del pin.

El esquematico lo hice rápido y utilice esa entrada.
EL programa es el que sigue..

LIST p=16F84 ; PIC16F844 is the target processor

#include "P16F84.INC" ; Include header file

ESTADO EQU 0x03
PORTA EQU 0x05
PORTB EQU 0x06

org 0

bsf ESTADO,5
clrf PORTA
comf PORTA,1
clrf PORTB
bcf ESTADO,5
bsf PORTB,0 ;PORTB0=> disparo de 555

INICIO btfsc PORTA,0 ;espero a que se pulse el boton para arrancar 555.
goto INICIO

TIMER1 bcf PORTB,0 ;envio pulso a 555
bsf PORTB,1 ;enciendo un led
bsf PORTB,0

ESPERA1 btfsc PORTA,1 ;PORTA1=> conectado a salida 555
goto ESPERA1
goto ESPERA2

ESPERA2 bcf PORTB,1 ;Bucle que apaga un led y enciende otro.
bsf PORTB,2
goto ESPERA2

end
 
creo que te podria funcionar conectar la salida del 555 al pin 3 (ra4/t0cki), con este puedes contar la cantidad de pulsos que genera el 555, tienes que configurar el TMR0 como contador y colocar un retardo de no se, 200mS por ejemplo y en el registro del timer que no recuerdo como se llama tendras los pulsos contados en ese tiempo.

ó lo estoy entendiendo al reves y la otra solucion seria:

conectas la salida del 555 al pin 6 (rb0/int) y lo configuras con interrupciones y utilizas el timer 0 para determinar el tiempo, tienes que realizar calculos con el TMR0 para poder tener precision.
 
coloca un pequeño retardo en la siguiente linea, para que el ancho del pulso de disparo sea mayor y el 555 pueda reaccionar. (sugiero que lo pruebes)

TIMER1 bcf PORTB,0 ;envio pulso a 555
AQUI coloca un pequeño delay tal vez algunas 5 instrucciones NOP
bsf PORTB,1 ;enciendo un led
bsf PORTB,0
 
Atrás
Arriba