Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/09/2011 #1


74ls47 y contador con PIC16f84
Buen día:

me tomo el atrevimiento de venir a molestar ya que no tengo mejor referencia en internet que el foro de electrónica acerca de esta clase de proyectos.

Mi caso es que estoy haciendo una práctica de un contador BCD usando un programita de 16f84 para mostrar valores de 0 a 15 (claro teniendo en cuenta los valores mostrados por el integrado BCD desde el 10 al 15) pero no me funciona en protoboard.

Realicé la simulación usando MPLAB y proteus (cosa que si quieren puedo explicar para los que no saben) y supuestamente el código funciona.

No se que puedo tener mal armado o si de pronto algun componente esta dañado (ya tuve la mala experiencia con un CRISTAL que funcionaba solo cuando le ponía el dedo encima :P)

Adjunto dejo el diseño en proteus del circuito y el proyecto ya compilado de MPLAB. Tamién dejo adjunto el video de la simulación de proteus en YOUTUBE para los que no saben como usarlo (cosa que dudo) para que vean que presuntamente funciona xD.


Les agradezco cualquier ayudita. (Si el video de youtube no funciona, por favor esperar un poco que lo acabo de subir, cuando estaba creando este hilo)

PDTA: Antes que me pregunten sobre las resistencias que lleva el display, puedo decir que tengo una resistencia de 330 a VCC, en vez de poner una por cada linea del display. También probé el 74ls47 usando un dipswitch, y también estube leyendo sobre si debo usar en vez del 74ls47 el 74ls48 y efectivamente el primero es para ánodo común.
23/09/2011 #2

Avatar de Gudino Roberto duberlin

Hola Amigo, que valor de cristal usas?, los valores de los condensadores del oscilador son los correctos?
Esto ultimo que menciono no tiene influencia en el problema pero, debes colocar una R por cada segmento del display.
23/09/2011 #3


respuesta
Buen día:

Gracias por la respuesta. En cuanto a las preguntas el cristal que uso es de 4 MHz como el que recomiendan en todos los tutos de pic. Los condensadores del cristal son cerámicos No 22 (la verdad en este momento no recuerdo que valor son).

y como ya había dicho, he probado el BCD usando un dipswitch enviado los correspondientes valores para cada número, por lo que he comprobado que usando una sola resistencia con la salida a VCC del display de anodo común debería funcionar. Claro que puedo hacer la prueba para verficar que esta pudiera ser el problema aunque ciertamente tengo mis dudas.

Salu2 y de nuevo gracias por responder.
23/09/2011 #4
Moderador

Avatar de Chico3001

Pero que es lo que hace (o no hace)?... simplemente no se ve nada?

Si en la simulacion funciona entonces es un problema con el cristal, algunos cristales ya traen los capacitores integrados y no es necesario colocarlos, y de echo si los colocas el cristal no funciona, intentaste retirarlos?

Si esto no funciona entonces es un problema con el PIC, o esta mal grabado o se murio de paro cardiaco.. intenta grabando uno nuevo, tambien puedes hacer un programa simple que encienda y apague un led para probar si el PIC esta funcionando...
23/09/2011 #5

Avatar de norikatzu

elimina el IC de la serie 74 y conectalo directo a las salidas del PIC. asi te simplificaras el diseño
24/09/2011 #6


Gracias por las respuestas:

norikatzu dijo:
elimina el IC de la serie 74 y conectalo directo a las salidas del PIC. asi te simplificaras el diseño
Lo siento pero la idea es usar este integrado para hacer circuitos mas complejos mas adelante, por ejemplo un reloj digital

Chico3001 dijo:
Pero que es lo que hace (o no hace)?... simplemente no se ve nada? ...
En cuanto a tus recomendaciones, tengo varios programitas ya hechos con el pic (de hecho tengo dos uno de hace como 5 años y otro que acabo de comprar. Con ambos he hecho pruebas con un programa que enciende y apaga un led repetidamente y con ambos pic funciona. En cuanto a los condensadores, pues como he dicho tengo cristales de este tipo:



Y según entiendo deben ser usados con los condensadores que tengo, igualmente los programas que ya tengo los probé usando estos mismos, por lo que suspuestamente el cristal (de hecho tengo 3 de los mismos pensando que se habían dañado también).

Lo de grabar el pic, pues lo he intentado varias veces, he grabado varios programas, el del led, otro que enciende varios led con un dipswitch, etc.

COmento que ami parecer el problema podría estar en el pulsador que uso como señal para habilitar la interrupción del pic. Como se poco o nada de electrónica, no se como se debe armar el pulsador. Tengo dos pulsadores, uno que envia la señal de habilitar RB0, y otro para el MCLR del pic, este ultimo si funciona haciendo parecer que el problema efectivamente puede ser el cristal.

En el proximo post voy a dejar mi codigo por aquello de que habrán algunos que les da flojera descargar el archivo del primer menasaje xD.

PDTA: Dejo unos links de videos en youtube que hice para unos compañeros de curso.

Código PHP:
ZONA DE DATOS

    __CONFIG _CP_OFF 
_WDT_OFF _PWRTE_ON _XT_OSC            ;Configuracion del programador

    
LIST P=16F84A                                ;Selección del microcontrolador
    
#INCLUDE<P16F84A.INC>                        ;Set de comandos y variables del microcontrolador


;Configuracion de puertos
    org     0x00                                
;Origen del programa
    
goto     INICIO                        ;Ir al inicio de programa
    org        0x04                            
;Vector de interrupcion
    
goto    ISR                                ;Subrutina de interrupcion
    org        0x05

INICIO bsf STATUS
,RP0                        ;Pasar a banco 1
    movlw    
b'11111111'                    ;Cargar 1 en W
    movwf    TRISB                        
;Configurar RB0 como entrada
    clrf            TRISA                        
;Puerto A como salida
    bcf        OPTION_REG
,6                    ;Flanco descendente
    bcf        STATUS
,RP0                    ;Pasar a banco 0
    clrf    PORTA                            
;Limpiar puerto apuerto b
    clrf    PORTB

;Habilitar interrupciones
    bsf        INTCON
,GIE                    ;Habilitar todas las interrupciones
    bsf        INTCON
,INTE                    ;Que sean externas

SUENIO    SLEEP
    
goto    SUENIO                            ;A dormir

ISR    btfsc    PORTB
,0                            ;Verificar que se suelte el pulsador
    
goto    ISR                                ;Volver hasta que lo suelten
    call    LED                                
;Ir al contador
    bcf        INTCON
,INTF                    ;Borra la bandera
    retfie                                
;Volver de la interrupcion

LED incf     PORTA
,1                            ;Incrementar en 1 PORTA
    btfsc    STATUS
,DC                        ;Si DC esta en 1
    call     CONT0                            
;SI Ir a CONT0
    
RETURN                                ;NO Volver a ISR

CONT0    clrf PORTA                            
;Poner a 0 PORTA
    
return                                ;Volver a LED

    END 
Imágenes Adjuntas
Tipo de Archivo: jpg 2011-09-24_07-20-10_557.jpg (192,7 KB (Kilobytes), 19 visitas)
Tipo de Archivo: jpg 2011-09-24_07-20-20_359.jpg (200,7 KB (Kilobytes), 15 visitas)
24/09/2011 #7


Oolle que programa utilizaste para la programacion y me puedes pasar un pdf con instrucciones de como programar :nuevo:. Saludos desde Guatemala
24/09/2011 #8


MPLAB => Sirve para desarrollar programas en asembler para la familia PIC.
Proteus => Sirve para hacer los esquemas de los circuitos y simularlos.

El tuto que estoy estudiando junto con un libro que compré (cuyo nombre es desarrollo de proyectos con pic16f84) lo puede encontrar en:

http://perso.wanadoo.es/luis_ju/soft/desc_tut.html

Es de los mejores documentos que he encontrado sobre programación en PIC. Le escribí al dueño de la página pero me imagino que no esta disponible.

Para desarrollar los ejemplos nada como hacerlos en la vida real, por lo que sería necesario un programador de PIC. hace un tiempo pude hacer un JDM en protoboard pero cuando lo hice en PCB no me sirvió :S Hay cientos de programadores caseros en GOOGLE USB, Serial, etc.

Es bueno recordar que GOOGLE es tu amigo XD
24/09/2011 #9


Starex tienes toda la razon ahorita trato de buscar la manera de como crear un programador de EEPROMS que manejen las lineas de 27cxxx y los PIC Z80 :antiguos: pero sinceramente no he encontrado nada que me pueda servir y te agradesco tu aporte!!!
24/09/2011 #10


Siempre existe la posibilidad de comprar uno. Ami me tocó esta opción y me salió mas barata aunque no es tan gratifcante como tener un programador hecho por uno mismo (:
24/09/2011 #11

Avatar de Gudino Roberto duberlin

Hola Amigo, prueba utilizar el oscilador interno.
25/09/2011 #12
Moderador

Avatar de D@rkbytes

Gudino Roberto duberlin dijo: Ver Mensaje
Hola Amigo, prueba utilizar el oscilador interno.
Oscilador interno en un 16F84
25/09/2011 #13


Darkbytes dijo:
Oscilador interno en un 16F84
DX

http://ww1.microchip.com/downloads/e...doc/35007b.pdf
25/09/2011 #14

Avatar de Gudino Roberto duberlin

Darkbytes dijo: Ver Mensaje
Oscilador interno en un 16F84
Hola Amigo, me referia al modo RC, la idea era probarlo sin cristal.
26/09/2011 #15
Moderador

Avatar de D@rkbytes

Gudino Roberto duberlin dijo: Ver Mensaje
Hola Amigo, me referia al modo RC, la idea era probarlo sin cristal.
Si, eso si a RC o con las posibilidades extras del 16F84, pero no es interno aunque oscile internamente es configurable externamente.
OK solo que hasta me regrese para ver si ya habia cambiado el colega de PIC por otro
con oscilador interno, y como el titulo es 74ls47 y contador con PIC16f84 pues
me extraño eso de usar el oscilador interno.
Y pues retomando el tema del problema con el Micro del amigo, les comento que
yo tube un problema similar con un 16F84 el cual no respondia un Bit del Puerto B
Todo funcionaba muy bien solo ese pin no respondia.
Resulto ser que fue el protoboard el que estaba dañado en una de sus líneas.
27/09/2011 #16

Avatar de Gudino Roberto duberlin

Hola Colega Darkbytes, bueno como comentario que no es util al otro colega, pero en fin, cuando me inicie en el mundo PIC, no podia dar con el correcto funcionamiento del puerto RA4 del 16F628, sustitui varios PICs, con la sospecha que tenian un problema de Hard, hasta que averigüe, que este puerto posee salida a "drenador abierto". Gracias SAludos.-
27/09/2011 #17
Moderador

Avatar de D@rkbytes

Gudino Roberto duberlin dijo: Ver Mensaje
Hola Colega Darkbytes, bueno como comentario que no es util al otro colega, pero en fin, cuando me inicie en el mundo PIC, no podia dar con el correcto funcionamiento del puerto RA4 del 16F628, sustitui varios PICs, con la sospecha que tenian un problema de Hard, hasta que averigüe, que este puerto posee salida a "drenador abierto". Gracias SAludos.-
Saludos, púes si, efectivamente, pero también en el 16F84
Por eso hay que colocar resistencia pullup externa en ese bit.
28/09/2011 #18


Darkbytes dijo: Ver Mensaje
yo tube un problema similar con un 16F84 el cual no respondia un Bit del Puerto B Todo funcionaba muy bien solo ese pin no respondia. Resulto ser que fue el protoboard el que estaba dañado en una de sus líneas.
Pues yo también habia pensado en eso, sin embargo la protoboard ya la compré (me robaron :( ) y sigue sin funcionar. Me tocaría probar en la otra que tengo :S O cambiar los integrados de posición.

GUDINO dijo:
Hola Colega Darkbytes, bueno como comentario que no es util al otro colega, pero en fin, cuando me inicie en el mundo PIC, no podia dar con el correcto funcionamiento del puerto RA4 del 16F628, sustitui varios PICs, con la sospecha que tenian un problema de Hard, hasta que averigüe, que este puerto posee salida a "drenador abierto". Gracias SAludos.-
No entendí, voy a buscar datos sobre este pin.

Gracias por las respuestas, espero conseguir algo ya que ahora mismo tengo que hacer la prueba con un display LCD y un asignador de turnos.
18/10/2011 #19


Revivo el tema ya que al parecer mi problema podría estar en la forma en la que estoy leyendo el pulsador que debería iniciar la interrupción en el pic.

Resulta pues que buscando, en mis ratos de ocio, encuentro algo que se llama rebotes (que creo que como estudiantes de electrónica mas avanzados deben conocer) y se supone que hay que tener en cuenta esto antes de poder recibir algún pulso desde cualquier elemento mecánico.

Encuentro que hay dos formas de hacerlo, por software y por hardware. E intentado hacerlo usando un condensador de 100nf pero no hay modo. Igualmente en la rutina de atención a la interrupción aparece esta parte.

Código PHP:
ISR    btfsc    PORTB,0                            ;Verificar que se suelte el pulsador
    
goto    ISR 
Pero al parecer no es suficiente para que funcione. En el tuto que estoy siguiendo hablan de usar dos resistencias una de 5K después del pulsador que esta conectado a 5v y una de 100 a tierra, desde allí se debería obtener el 0/1 lógico para hacer que la interrupción responda. Pero sigue sin funcionar.

Qué es lo que tengo mal? La verdad no se :S
19/10/2011 #20

Avatar de clocko

para el rebote puedes utilizar una resistencia en serie con el pulsador y a su vez un capacitor en paralelo, intenta con el siguiente circuito siu no te funciona prueba valores mas grandes de capacitor verifica que el tiempo de carga del capacitor no sea muy grande si no te funciona aun, busca por internet hay muchos circuitos eliminadores de rebote. saludos.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

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