Salida RA4 comportamiento erroneo

Hola
he estado comprobando la salida RA4 en varios pic 16f628.
Como sabran ustedes solo puede funcionar en modo drenador.

Despues de comprobar que dicho pin me estaba fallando, decidi realizar un pequeño programa en ensamblador para verificar este error.

Problema:
- Si el pin RA4 lo configuro en estado alto (bsf porta,4) y en ese pin no hay conectado ningun dispositivo, en el momento que conecte algun led, esta salida habra cambiado automaticamente a tension de Vss. Para que me de este error despues de actuar sobre esta puerta tengo que actuar sobre cualquier otra puerta del puerto A.
- Si el led esta conectado continuamente al pin RA4 no hay ningun problema. Actua correctamente. Led apagado
-Si solamente actuo sobre RA4 y no actuo sobre ninguna otra salida, no hay ningun problema. El mosfet asociado a RA4 no conduce, por lo tanto no enciende el led, pero si actuo sobre otra salida me provoca que dicho mosfet me conduzca.

REPITO: el problema solo ocurre cuando el pin RA4 esta sin conectar al diodo led, y en el programa actuo sobre cualquier pin del puerto A despues de hber puesto a 1 RA4.

Lo mas estraño de todo esto es que incluso simulando este fallo con PROTEUS tambien me ocurre.

Por lo visto al dejar este pin libre entra alguna inteferencia que provoca la activacion del mosfet.

Os puedo asegurar que me he tirado mas de 2 horas haciendo pruebas, tanto con el simulador del Proteus como en la practica.
 
Que tal pepechip,

Jeje si...., yo tube ese problema hace poco. La solucion es muy sencilla, ese pin RA4 en particular de el Pic16f628 y varios mas que he visto de la gama de PIC16F, son especiales por la segunda funcion que tiene ese pin y te explicare como es que funciona. Segun el datasheet de este pic, este pin, puede ser configurado como entrada o salida digital. Cuando esta como entrada no hay problema, pero cuando esta configurado como salida, la salida es en COLECTOR ABIERTO, (i no es que este gritando si no que lo puse asi pa que lo recuerdes ) y esto quiere decir que en el pin tu tienes el colector de un transitor NPN.

Ahora registro de salida PORTA,4, cuando le envias un 1 o un 0, este dato digital es enviado a la base de dicho transistor, y recordemo que un transistor NPN se satura con un voltaje positivo (+5v), que equivale a un 1, y si tu conectas tu led, anodo al pin RA4 y catodo a GND, no funcionara amm, creo que pondre imagenes pa que me entiendas.

Ahora tienes que ver este pin como un transistor asi:

Esto es a lo se refiere como colector abierto:
col%20ab.bmp



Ahora por lo que dices, me parece que tu estas conectando tu led algo asi (chance y no):

asi%20no.bmp


Si es asi, pues asi no es, cuando se satura el transistor con un 1, es para que haya un flujo de corriente, y ahi no hay ninguno, pues todo esta conectado a GND, ahora mirate este:

asi%20si.bmp



Ahi puedes ver que si saturas el transistor con un 1, dejaras pasar un flujo de corriente, que viene desde Vcc, pasa por la resistencia del led, prende al led, y se va a GND, ahi hay Dif de potencial, o lo que se dice, Voltaje.

Ahora ya prendiste un led, pero que tal si quisieras una salida digital normal, como para activar otra cosa, no se digamos un servo, o lo que se te ocurra...:

asi%20tmb.bmp



Y asi conviertes esa salida de colector abierto a una normal.

Espero que te sirva esto, y espero tambien tener razon (creo que si era asi ) y ya no te la pases gastando tanto tiempo en estas cosillas, Ya es VIERNES!, :LOL:
 
El fallo me esta ocurriendo con el proteus, y en la practica ya lo he probado con 2 pic.

ivch, ya veo que no leiste que especifique que la salida era a modo drenador, ya que me imaginaba que alguien me haria el mismo comentario que tu hiciste. De dodas formas te agradezco tu interes.

En el archivo que adjuntado RA4.rar esta el esquema en proteus, el ASM y el HEX.
Asi que si lo decargais solo teneis que darle al play para ver lo que ocurre.

Segun la forma de conectar el Led, y de acuerdo a la programacion que realice, el led nunca debe de prender.
Pero ocurre que si comenzais a realizar la simulacion con el pulsador abierto y despues lo cerrais el led si prende.
Sin embargo si la simulacion la realizais con el pulsador cerrado, el led no prende.

Me ha llevado muchas Horas de trabajo encontrar una averia que tenia en un trabajo devido a este comportamiento anormal.

Código:
 __CONFIG _LVP_OFF & _MCLRE_OFF & _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_ON & _INTOSC_OSC_NOCLKOUT 
      
      LIST	   P=16f628A       ;Procesador utilizado.
       INCLUDE   <P16F628A.INC>         
                   
             


Inicio  
  
       bsf      STATUS,RP0   ;BANCO 1
       clrf     TRISB        ;puerto B como salidas
       clrf     TRISA        ;Puerto A como salidas
       bcf      STATUS,RP0   ;Banco 0 
 

        clrf PORTA           ;todas las salidas puestas a 0
        clrf PORTB           ;todas las salidas puestas a 0


        bsf  PORTA,4        ;lo pongo a 1, por lo tanto el led no tiene que encender

      ;    bsf  PORTA,0    ;SI ACTIVO ALGUNA DE ESTOS PINES, RA4 SE PONE A TENSION DE Vss
        bsf  PORTA,1  
      ;    bsf  PORTA,2
      ;    bsf  PORTA,3 
      ;    bsf  PORTA,5  
      ;    bsf  PORTA,6
      ;    bsf  PORTA,7  

        bsf  PORTB,0
        bsf  PORTB,1  
        bsf  PORTB,2
        bsf  PORTB,3  
        bsf  PORTB,4
        bsf  PORTB,5  
        bsf  PORTB,6
        bsf  PORTB,7 

    sleep


   end
 

Adjuntos

  • ra4_187.jpg
    ra4_187.jpg
    41.1 KB · Visitas: 175
  • ra4_864.rar
    16.8 KB · Visitas: 53
Con la misma programacion anterior, he montado estre circuito, y el pin RA4 adquiere el valor que le adjudiquemos con alguno de los 2 pulsadores.
En el programa siempre esta aconfigurado RA4 como salida, sin embargo memoriza el estado del pulsador que accionemos.

Al simularloo con PROTEUS a los pocos segundos vuelve el led a apagarse, pero llevandolo a la practica el led permanece continuamente prendido tras una breve pulsacion del pulsador que proporciona GND.
Para apagar el led hay que actuar sobre el pulsador de Vdd
 

Adjuntos

  • ra4_176.jpg
    ra4_176.jpg
    46.6 KB · Visitas: 156
has probado con resistencias? de pull down o pull up?
aun no entiendo bien lo que quieras hacer, pero eso de que el led quede prendido hasta que presionas el push de vdd creo se puede evitar con una resistencia, aparte no te parece que eso del psuh que presionas de vdd para apagar no te parece que provocarias algo similar a un corto circuito?,

aun no checo bien los archivos que subiste pero en un momento
 
El pin RA4 tiene configuración de drenador abierto, es necesario un resistor de pull-up para que funcione correctamente como salida, no puedes usarlo como salida sin el pull-up, por eso el comportaiento erratico...
 
Atrás
Arriba