NOTPIC PIC 16F628A configurado como puertas logicas NOT

Buenas
Necesito saber que estoy haciendo mal con el codigo de este PIC pues quiero que se comporte como el Integrado 7404=74LS04 y lo que me pasa es que al iniciar el PIC en la Simulación de Proteus Observo que las Salidas ya tienen un 1 sin habler aplicado todavia un 0.

Si añades este Integrado 7404 en Proteus se puede observar en reposo que la salida es 0.

Esta es la configuración que tengo hecha de momento solo he puesto entrada por RA0 y Salida RB0 pero no me funciona como quiero.

De hecho necesito hacerlo porque no existe en el mercado integrado con más de seis inversores y necesito ocho inversores. Adjunto Imagen de como quedaria el Llamado NOTPIC

Device = 16F628A
Reminders Off
Config LVP_OFF, MCLRE_OFF, BODEN_OFF, CP_OFF, PWRTE_ON, WDT_OFF, INTOSC_OSC_NOCLKOUT
Reminders On

Xtal 4

All_Digital = True

TRISA=%00000001
TRISB=%00000000

CMCON=7

PORTA=0
PORTB=0

COMIENZA:

If PORTA.0=0 Then PORTB.0=1
If PORTA.0=1 Then PORTB.0=0

Goto COMIENZA

END
 

Adjuntos

  • NOTPIC16F628A.jpg
    NOTPIC16F628A.jpg
    61.4 KB · Visitas: 25
Buenas
Gracias por responder
La Entrada esta tal como te indico en la siguiente imagen para poder añadir los niveles alto y bajo por medio
del pulsador sin resistencia.
 

Adjuntos

  • Entrada de Nivel.jpg
    Entrada de Nivel.jpg
    27.8 KB · Visitas: 19
Esta bien, pero asi cuando no apretas ningún botón la entrada esta en el aire, en forma flotante, y asi cualquier ruido puede hacer que tome valores erróneos en la salida, si o si tenes que asignarle un estado lógico por medio de una resistencia pull, o cero o uno

 
Las TTL al usar transistores bipolares típicamente llevan el emisor de un transistor o el cátodo de un diodo en la entrada así que sin polarizarse están en H por las pull-up internas, pero los CMOS y MCU sobre todo por la MUX de los periféricos tienden a tener entradas de alta impedancia y deben ser polarizadas forzadamente.

Proteus asume 0V en entradas no conectadas, y dado a que es lógica NOT, esta es llevada a H por el PIC, mientras que una entrada no conectada en TTL es igual a H en la mayoría de casos lo que lleva a L en la salida, el programa está funcionando exactamente como quieres.

PD: en lugar de hacer doble verificación, si puedes usa ELSE
IF PORTA.0=0 THEN PORTB.0=1
ELSE PORTB.0=0
ENDIF
 
Última edición:
Buenas
Gracias por responder
La Entrada esta tal como te indico en la siguiente imagen para poder añadir los niveles alto y bajo por medio
del pulsador sin resistencia.

Ese circuito es peor que malo; infame++++

Caro, muy peligroso y generador de ruido.
Usa la resistencia interna de pullup y un solo pulsador, así te ahorras de reinventar la rueda, porque además las ruedas cuadradas no son buenas.


La mayoría de los microcontroladores o microprocesadores sacan nivel alto hasta que el programa empieza a funcionar, si no te gusta pon una resistencia pull down a las salidas.
 
Caro, muy peligroso y generador de ruido.

Con lo de caro concuerdo, si por dos salidas hablamos un transistor y el pull-up en la salida tiene el mismo efecto de NOT, además el costo de 2 de los 7404 es mucho más barato que el PIC, eso sin contar de que el PIC no responde inmediatamente, sino con su propio reloj, y donde el proceso no se sincronice puede pasar datos erróneos.
 
La Rueda es para tu Scooter.
Gracias á Juanma y á Nuyel, voy asimilando no todos somos tan infames como tu porque tu mismo ya que sabes tanto deberias saber que las resistencias Pull-up internas solo afetan al puerto B y si hubieras observado la Imagen Inicial de que he realizado y llamado NOTPIC, utilizada las Puertas A.
De tal manera que tengo claro en utilizar a mi configuración la imagen siguiente que acabo de colocar.



No se vosotros pero uno lleva su historia y sacais conclusiones fuera de contexto, primero nadie sabe a como me cuesta los 16F628A, segundo para poder simular en las entradas un cero ó uno he usado dos pulsadores, los cuales no se van a colocar en el PCB, sola ha sido para Probar con Proteus, el PIC Recibe niveles logicos TTL de 5V y 0V, tercero voy a usar 16F628A SMD por cuestiones de espacio y si encima de que quiero reducir no voy a poner dos 7404 aunque los regalen. y tampoco necesito altas velocidades.
 

Adjuntos

  • pull_up_pull_down_01.gif
    pull_up_pull_down_01.gif
    5.3 KB · Visitas: 13
Última edición:
Creo que proteus tiene un terminal de estado lógico, una especie de botón que envía un estado lógico 0 o 1, su usas eso no tendrás el estado indeterminado y los componentes se comportarán como deben.

Pd: No uso proteus
 
Si queres hacerlo con pic no soy quien para cuestionarlo pero, miraste el integrado ULN2801 ? Ahi hay 8 inversores open collector, lo que no se es el precio en relacion al pic pero con averiguar no se pierde nada.

Eso si, te asegurarias minimo consumo, maxima confiabilidad, cero ruido.

PD: Vale decir que con el pic propuesto no dispones de 8 entradas y 8 salidas. Si mal no recuerdo el puerto A no eran los 8 bits completos. Como complicacion extra, hay pines del pic en puerto A que si los usas como salida son open collector tambien.
 
Última edición:
Buenos Dias
Gracias Gudino por el LOGICSTATE y a ti Seaarg por lo del Integrado desconocia la existencia del mencionado ULN2801 ó ULN2803. Mira que busque en google y ponia Integrado con Ocho Inversores NOT y nada. Nuevamente gracias. Puedo ir depurando el proyecto con vuestra ayuda aunque ese integrado ya lo probado con el impulso LOGICSTATE y si me da la funcion Not pero solo una vez que quiero decir que si le aplicas un 1 a la entrada te entrega un 0 a la salida haciendo la función NOT, pero si le aplicas un 0 no me entrega un 1 a la salida por lo tanto no es valido por quedarse el PIN 11 8C Nulo osea ni es 0 ni es 1 entoces no es una función NOT.
 

Adjuntos

  • Estado de Ambos Integrados.jpg
    Estado de Ambos Integrados.jpg
    51 KB · Visitas: 10
Si es una función not, lo que pasa es que la salida es open colector, y por lo tanto lleva una resistencia de pull up, sin eso no te va a andar nunca, ponela y vas a ver que funciona.

 
En realidad ese integrado son 8 transistores darlington NPN de "alta" capacidad de corriente (para manejar reles, etc)

Escencialmente, un transistor NPN en modo digital no es mas que un inversor open collector. Ponele resistencias de unos 4K7 desde cada salida a VCC y listo, tenes 8 compuertas NOT.

Lo mismo te sucederia en algunos pines del PIC, que son open collector.

Como tu preocupacion principal es tamaño, aca van unas sugerencias:

1- Conseguilo en SMD
2- De placas de PC, memorias de PC etc busca packs de resistores para hacer los pull up. Vienen de a 4 y de a 8. Un pack de 4 en un DIMM de PC tiene casi el tamaño de una resistencia SMD normal y solo necesitarias 2 de esos.
3- Entre el integrado (ya sea el que te dije o pic) y 2x 74LS04 en SMD vas a terminar teniendo el mismo tamaño fisico en la placa. Evalualo. Un 16F628 tiene el tamaño fisico de 2 integrados serie 74x en SMD.
 
Última edición:
Seaarg y Juanma tomar vuestra resistencia Pull Up eso no vale, se queda el ULN2803 con el colector abierto no hay un 1 en la salida.
Lo que si esta claro desde siempre que donde no hay no se puede sacar. Como han comentado los compañeros ese integrado de 8 Invesores es con colector abierto y solo cambia de estado con un 1 pasando 0 solo hace esa negación, por lo tanto no vale.

Fiajete que lo que hace el ULN2803 me lo hiciera en PIC en reposo osea al alimentarlo la primera vez y para mi ya estaria todo solucionado por que al quedarse las salidas con el colector abierto con las instrucciones desde el software de proton cuando le ponga un 0 me dara un 1 y cuando le ponga un 1 me dara un 0.

Si si si si ya se que le ponga al PIC a todas sus entradas resistencias Pull Up, pero eso es mucha circuiteria en el PCB, si si si ya se que le ponga array red de resistencias para que no ocupe pero lo que hace falta es que entre por el PIN1---> y salga por el PIN18---> como el que coloca un switch dip-8.

Lo que hace falta es saber que instrucciones hay que darle al NOTPIC para que al iniciarse las entradas y salidas se comportaran con si estuvieran en colector abierto.
 

Adjuntos

  • Pull up.jpg
    Pull up.jpg
    27.9 KB · Visitas: 12
Bueno, al final de cuentas no sabemos que estas intentando hacer, si es por cuestiones de espacio, si llegase a tener que meter un MCU, entonces mejor sustituyo todo lo posible del circuito por el MCU en lugar de solo una compuerta lógica, pero como no sabemos para que lo quieres, entonces toma la opción que desees.
 
La Rueda es para tu Scooter.
Gracias á Juanma y á Nuyel, voy asimilando no todos somos tan infames como tu porque tu mismo ya que sabes tanto deberias saber que las resistencias Pull-up internas solo afetan al puerto B y si hubieras observado la Imagen Inicial de que he realizado y llamado NOTPIC, utilizada las Puertas A.
De tal manera que tengo claro en utilizar a mi configuración la imagen siguiente que acabo de colocar.



No se vosotros pero uno lleva su historia y sacais conclusiones fuera de contexto, primero nadie sabe a como me cuesta los 16F628A, segundo para poder simular en las entradas un cero ó uno he usado dos pulsadores, los cuales no se van a colocar en el PCB, sola ha sido para Probar con Proteus, el PIC Recibe niveles logicos TTL de 5V y 0V, tercero voy a usar 16F628A SMD por cuestiones de espacio y si encima de que quiero reducir no voy a poner dos 7404 aunque los regalen. y tampoco necesito altas velocidades.

No he usado prácticamente nunca los pics porque no me gustan nada, pero eso es solo una opinión personal. En cualquier caso, nunca me aprendo de memoria los datasheets, si ese puerto no tiene R interna, obviamente hay que poner una externa.
El circuito era malo (si no te gusta infame, pon la palabra que prefieras) perdón muy muy malo, porque si alguien se puede equivocar, no dudes que se equivocará si o si, y si pulsas los dos pulsadores haces un corto y puedes dañar la fuente, los pulsadores y resetear el sistema, además es el doble de caro que usar un solo pulsador y una resistencia; la resistencia es "gratis", si tu micro tiene interna de pullup, la activas y ya está y si no la tiene es muy económico poner una externa. Y para rematar mientras no se pulsaba nada la entrada quedaba a estado indeterminado, así que era muy malo, pésimo, infame... no se, el que mas te guste.
"Para probar con proteus" ahí está la cosa, los simuladores van muy bien porque se ahorra mucho tiempo y dinero en material pero enseñan malos hábitos; en el simulador no se rompe la fuente por cortocircuitarla, no se pegan los contactos de los pulsadores por cortocircuitarlos, son gratis, no ocupan, no entra ruido al pin por dejarlo al aire y un largo etcétera. Tras probarlo en el simulador puedes pensar que tu circuito es bueno, cuando en la realidad no funcionaría.



No acabo de entender el problema principal, si solo necesitas "unos cuantos" inversores, si que parece poco útil poner un microcontrolador.
Si explicas para que y por qué quieres hacer esto a lo mejor te podemos ayudar mejor.

Explicar la naturaleza del "sensor" o lo que genera los ceros y unos; si es un pulsador simple necesitarás pullup o pulldown interno o externo... pero si ya es una salida "totem-pole" de algún circuito lógico no lo necesitas.
Explicar la naturaleza de la "carga" que va a la salida; si por ejemplo es un led o un relé, es perfectamente válido un circuito que de cero-aire o que de uno-aire, no hace falta uno que de cero-uno, porque esas cargas "no se activan con el aire". Si lo que tienes como carga es otro circuito lógico, pues también depende de que sea porque poe ejemplo los TTL "a secas" cuando tienen aire a la entrada es un 1, así que bastaría con una salida cero-aire porque el circuito ya toma el aire como 1.

Y tras todo este discurso, es probable que tu circuito baste el no-circuito porque conectando habilmente sensor y carga puede que funcione directamente.

Resumiendo, cuéntanos que estás haciendo y te daremos una posible solución.
 
Última edición:
De hecho necesito hacerlo porque no existe en el mercado integrado con más de seis inversores y necesito ocho inversores.

Envío gratis 10 unids/lote 74HC540D 74HC540 Tampones y Controladores de Línea Chip SOP-20 nuevos y originales

Envío Gratis 10 unids/lote 74HC240D Octal Buffer/Line Driver SOP-20 de fuselaje ancho 7.2 74HC240 nueva original

Ahora me pregunto la razón que vas a dar para justificar que ninguno de estos dos integrados de la serie 74 te sirva y sigas queriendo hacerlo con un PIC.
 
Atrás
Arriba