Autor Tema: Pullups LOCAS arggg  (Leído 11299 veces)

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

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Pullups LOCAS arggg
« en: 11 de Junio de 2008, 06:07:23 »
Buenas compañeros,

estoy programando con un pic18f4550 en CCS. Activo las resistencias de pull-up del puerto B con la función:

 port_b_pullups(TRUE);

El caso es que solamente necesito activar la resistencia de pull-up de la RB1 las demás las dejo sin activar. La función que empleo es la siguiente:

port_b_pullups(0b00000010);

Lo que ocurre es que me activa todas las resistencias de pull-up de aquellas entradas que previamente he definido. Os copio el código.

Código: C++
  1. void main()
  2. {
  3.  
  4. //   port_b_pullups(0b00000010);  
  5. //   port_b_pullups(pin_b1);
  6.    port_b_pullups(FAlSE);
  7. //   port_d_pullups(0b00000001);
  8.    
  9.    set_tris_B(0b10000011);   // RB0:1--> Entrada ; RB2:7-->Salidas
  10.  
  11.    setup_adc_ports( AN0_TO_AN2 || VSS_VDD ); // configuración del CAD
  12.    setup_adc( ADC_CLOCK_DIV_64 );

Gracias!
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Pullups LOCAS arggg
« Respuesta #1 en: 11 de Junio de 2008, 06:40:36 »
Acabo de ver que la función port_b_pullups(0b00000010) activa las resistencias de pullups del puerto b no como yo necesitaba (solamente la RB1):

Código: C++
  1. ....................    port_b_pullups(FAlSE);
  2. 2088:  BSF    FF1.7
  3. ....................    port_b_pullups(0b00000010);
  4. 208A:  BCF    FF1.7

Alguién se le ocurre como solucionarlo??

Saludos
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Pullups LOCAS arggg
« Respuesta #2 en: 11 de Junio de 2008, 09:38:27 »
Colocasela mejor externa, te eliminas el problema de raíz y no es que sea muy caro..Yo nunca confío en las internas, una vez las intente usar y también me fallaron.

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Pullups LOCAS arggg
« Respuesta #3 en: 11 de Junio de 2008, 09:56:15 »
Muchas gracias picmouse por responder, lo más seguro hága eso.

Pero me resulta raro que nadie se halla enfrentado a este problema o es que a lo mejor tiene su cosa.

Saludos
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Pullups LOCAS arggg
« Respuesta #4 en: 11 de Junio de 2008, 10:18:59 »
Ahora mismo esto yo también liado con este mismo tema en Las Pull-Ups locas atacan de nuevo.(1)

La conclusión a la que he llegado es la siguiente:

* Las pull-ups internas se activa TODAS con port_b_pullups(true);
* Las pull-ups internas se desactivan UNA a UNA cuando les da la gana: Por ejemplo al poner un tris del pin correspondiente como salida.

Por eso tu port_b_pullups(0b00000010); es siempre igual a port_b_pullups(true); de igual forma que port_b_pullups(0b00000000); sería igual a port_b_pullups(false);

Cualquier cosa que pongas distinto de 0 en el port_b_pullups(); te lo va a tomar como port_b_pullups(true);

Ten en cuenta que las pull-ups se activan con un solo bit. RBPU: PORTB Pull-up Enable bit Pero se desactivan dependiendo de qué función tenga después cada Pin.

Ahora hay que bucear en el Datasheet para ver cuando se desactivan las distintas pull-ups internas y ver de usar tris(es) ó ad(eses) ó ccp(eses) para dejar activas solo las que necesitemos.

Por ahí van los tiros de este tema.  :mrgreen:

(1) Casi hemos usado el mismo título.  :D
« Última modificación: 11 de Junio de 2008, 10:22:41 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Pullups LOCAS arggg
« Respuesta #5 en: 11 de Junio de 2008, 10:39:13 »
Muchas gracias por tu contestación Diego!!!

Yo voy a ver si puedo activarlas una a una como dices, buff me estoy armando un CACAO!!!

saludos

P.D. Si sacas algo en claro nuevo avísanos!
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Pullups LOCAS arggg
« Respuesta #6 en: 11 de Junio de 2008, 13:02:43 »
Hasta los webs!!!

Dejo las resistencias de pull-up internas del pic18f4550 no he podido activar unicamente la resistencia de pullup de la RB1. ASí que voy hacer lo que ha comentado picmouse, poner una resistencia de 10k externa y conectada a Vcc.

Si sacáis algún adelanto ya sabéis,

saludos
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado Juancar

  • PIC12
  • **
  • Mensajes: 79
Re: Pullups LOCAS arggg
« Respuesta #7 en: 16 de Marzo de 2009, 13:36:56 »
Podemos asumir que, como norma general, es preferible deshabilitar las pull up internas y usar resistencias externas?
Supongo que habrá aplicaciones en las que no se pueda o no se deba, pero si generalmente son fuente de problemas sería preferible prescindir de ellas no?

Un saludo.
"Las cosas se hacen bien, o no se hacen"

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Pullups LOCAS arggg
« Respuesta #8 en: 16 de Marzo de 2009, 14:40:53 »
Mira, yo cada vez que escucho pullup lo asocio con una palabra rumana "pula" , que significa "poll*" . Así que saca conclusiones  :mrgreen:
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: Pullups LOCAS arggg
« Respuesta #9 en: 16 de Marzo de 2009, 15:37:31 »
saludos a todos
yo también tengo un lio con pullups locas.
estoy usando un 16f886 y el el puerto b tengo unos  switch y cuando uso la instrucción  port_b_pullups(true);
solo se activa el rb0 y los demas quedan en nivel bajo
es asi que lo simulo en proteus y también en el circuito pcb y se comportan igual
y perdi mucho  tiempo buscando el error o un fallo del ccs  mejor las pongo externa de 10k
gracias



Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Pullups LOCAS arggg
« Respuesta #10 en: 16 de Marzo de 2009, 16:40:24 »
pues yo no he tenido problemas con la Pullups, por lo menos no cuando coloco un pulsador o un teclado, pero ojo yo programo mas en asm, asi que de posibles errores en compiladores C  poco se,  pero quiero decir un par de cosas a favor de las Pullups.

En el PIC18F4550 y en muchos otros PICs las resistencias de Pullups se activan todas , no puedes escoger cual esta activa y cual no, ese es el problema que tiene umalrovi

Hay otros PICs como el PIC16F886, que tienen un registro (WPUB) que permite seleccionar cual Pullup habilitamos  y cual no, miltonmc talvez el CCS no configura adecuadamente ese registro.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Pullups LOCAS arggg
« Respuesta #11 en: 16 de Marzo de 2009, 18:48:10 »
La mayor experiencia que tengo es con los 18F4550, llevo montados 600 de ellos, y puedo deciros que se me han dado todos los casos posibles, pero lo mas usual es que en un 10 ó 15% de ellos no se activen las pull-ups de RB3 ó RB4 ... o que según va funcionando se desactive una o otra pull-up quedando el resto activado.

Y no es cosa del CCS ya que la transcripción que éste hace de:

port_b_pullups(true);

es absolutamente directa:

BSF    FF1.7

o sea pone a 1 el bit 7 del registro INTCON2 que se encuentra en FF1h.

En fin, os cuento mi experiencia, y mi decisión de olvidarme de las pull-ups internas y ponerlas todas externas.


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: Pullups LOCAS arggg
« Respuesta #12 en: 16 de Marzo de 2009, 23:11:24 »
saludos a todos
hoy encontré como ponerlas a funcional cambie esta linea port_b_pullups(true);
por esta otra    port_B_pullups(0b11111111);   y con esta puedo definir en el pic 16f686
los pines que pongo en pullups  solo cambiando un 0 por un 1
ahi esta la incógnita de porque con  port_b_pullups(true); solo el pin rb0 se ponía en up y los otros no
gracias


Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Pullups LOCAS arggg
« Respuesta #13 en: 17 de Marzo de 2009, 00:43:22 »

Y no es cosa del CCS ya que la transcripción que éste hace de:

port_b_pullups(true);

es absolutamente directa:

BSF    FF1.7

o sea pone a 1 el bit 7 del registro INTCON2 que se encuentra en FF1h.


Eso hace? , segun la hoja de datos las pullpus se habilitan poniendo en 0 el bit 7 del registro INTCON2


Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Pullups LOCAS arggg
« Respuesta #14 en: 17 de Marzo de 2009, 03:51:54 »
No Sander, ha sido un error mio de transcripción.

Ahí te pego el trozo del programa tal como lo deja el CCS:

....................    // Activo pull-ups internas
....................    port_b_pullups(true);
13A2: BCF    FF1.7
....................    // Siempre habilitamos o rehabilitamos INT_EXT INT_EXT2 (¡NO! INT_RB)
....................    enable_interrupts(int_ext);
13A4:  BSF    FF2.4
....................    enable_interrupts(int_ext2);
13A6:  BSF    FF0.4
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania


 

anything