Autor Tema: PROBLEMA CON TRISAbits.TRISA1 = 1 (INPUT) en programa usando pic USB  (Leído 2661 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado joakinubeda

  • PIC10
  • *
  • Mensajes: 37
Hola! tengo el siguiente programa:

void main(void)
{
   TRISAbits.TRISA1=1;//INPUT
   TRISDbits.TRISD4=0;// OUTPUT
while(1)
{
   if(PORTAbits.RA1 == 0)// si ese pin está a 0
   {
   PORTDbits.RD4 =0;
    }
    else //Ese pin se pondria a 1 cuando se conecta el conector usb, y por tanto en ese momento deberia ejecutar esta rama.
   {

   PORTDbits.RD4=1;
   }
}
Mi objetivo con esto es que cuando el pin A1 detecte que le llega un 0 o 1 ( Por ejemplo en el PICDEM USB , RA1 esta definido como el USB_BUS_SENSE, que se pone a 1 cuando se conecta el conector usb, y a 0 cuando no esta conectado), se meta en una rama u otra. RD4 me sirve de testeo para ver si se introduce en una u otra.

De la forma que lo tengo puesta, no me funciona y no se por que.

Saludos y muchas gracias!

Desconectado joakinubeda

  • PIC10
  • *
  • Mensajes: 37
Re: PROBLEMA CON TRISAbits.TRISA1 = 1 (INPUT) en programa usando pic USB
« Respuesta #1 en: 05 de Agosto de 2009, 10:39:06 »
Hola!, ya he resuelto el problema . Debia configurar el registro ADCON1.

Ahora tengo una duda.por ejemplo,si uso un pin C3, que no es un pin analogico, ¿no puedo usar ese pin como entrada (TRISC3=1)???

Para poder usasr un pin como entrada (TRISXX=1) debe ser un pin analógico???

Gracias!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PROBLEMA CON TRISAbits.TRISA1 = 1 (INPUT) en programa usando pic USB
« Respuesta #2 en: 05 de Agosto de 2009, 11:55:06 »
Siempre y cuando ese pin pueda comportarse como entrada digital, no tendrías que tener ningún problema en configurarlo como entrada y leer su estado digital.Tal vez ese pin esté asociado a algún módulo que está interifriendo con tus intenciones. Lee el datasheet y asegurate de que ese pin no este siendo utilizado o obstaculizado por otro modulo del uC.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado joakinubeda

  • PIC10
  • *
  • Mensajes: 37
Re: PROBLEMA CON TRISAbits.TRISA1 = 1 (INPUT) en programa usando pic USB
« Respuesta #3 en: 06 de Agosto de 2009, 14:14:28 »
Holaaa!!, como dije antes, resolvi el problema pero me he dado cuenta (mirando el datasheet) que en algunos pines de algunos puertos, que no son definidos como analógicos, sino digitales y ttl, no haria falta configurar ningun registro (tipo ADCON1) para configurarlos como entrada .Solo bastaria poner la sentencia TRISDbits.TRISD1= 1 (por ejemplo).
He probado a realizar eso con el siguiente codigo :

//Para pic18f4550
   TRISDbits.TRISD7=1;//Definimos D7 como entrada (Ojoo en el pic18f4550 este pin no es analogico)!!
        TRISCbits.TRISC6=0;//Definimos como salida, para testear en que rama se introduce.
while(1)
{
if(PORTDbits.RD7 == 0)//valor 0 en RD7
PORTCbits.RC6 =0;//PARA TESTEO;
if(PORTDbits.RD7 ==1)//Valor 1 (5v) en Rd7
PORTCbits.RC6 =1;//PARA TESTEO;
}

Sin embargo , no obtengo el comportamiento esperado. y cuando pongo 5v en RD7, RC6 vale 1, pero cuando los quito sigue Rc6 valiendo 1 ( cuando deberia valer 0)

Alguien sabe que se puede hacer para que funcione esto en los pines no definidos como analogicos ( ya que en los definidos como analogicos , he comprobado que esto funciona correctamente siempre que se configure bien el ADCON1 (Ver datasheet).
Yo creo que esto puede hacerse correctamente en estos pines , ya que en el datasheet pone que si pones el TRis = 1 debe poner ser definido como entrada (input)

Saludos y muchas gracias!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PROBLEMA CON TRISAbits.TRISA1 = 1 (INPUT) en programa usando pic USB
« Respuesta #4 en: 06 de Agosto de 2009, 18:04:21 »
Cuando hablas de que le "quitas" los 5v, imagino que no dejarás el pin al aire, no? Sino que lo conectarás a 0V...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything