Autor Tema: Las Pull-Ups locas atacan de nuevo.  (Leído 7289 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Las Pull-Ups locas atacan de nuevo.
« en: 07 de Junio de 2008, 08:49:51 »
Datos del problema.

PIC: 18F4550
PORTB: Pines de RB0 a RB5 de Entradas digitales.
Interrupciones: INT_EXT(en RB0) , INT_EXT1(en RB1), INT_EXT2(RB2), INT_CCP2(en RB3 usando el fuse CCP2B3), INT_RB (RB4 y RB5).
Comunicación Extra: I2C (por RB0-SDA y RB1-SCL) Multiplexado con las entradas mediante HEF4053B (Switch analógico)

-Al reset activo las Pull-Ups internas mediante port_b_pullups(true); y se conmuta el HEF4053B para conectar RB0 y RB1 a las señales externas.
-Comienza el ciclo de trabajo.
-Cuando se reciben ciertos datos por la USART se conmuta RB0 y RB1 al Bus I2C y se realizan las transacciones oportunas.
-Se conmuta de nuevo el HEF4053B para conectar RB0 y RB1 a las señales externas.
-En el bucle infinito principal del main() repito SIEMPRE en cada vuelta el port_b_pullups(true);

Y sin embargo midiendo entre GND y cada uno de estos Pines del PORTB resulta que las Pull-Ups tienen el siguiente estado:

RB0 No RB1 No RB2 Si RB3 No RB4 Si RB5 Si.

Y las necesito todas activadas.

Según el Datasheet del 18F4550:

Each of the PORTB pins has a weak internal pull-up. A single control bit can turn on all the pull-ups. This is performed by clearing bit RBPU (INTCON2<7>). The weak pull-up is automatically turned off when the port pin is configured as an output. The pull-ups are disabled on a Power-on Reset.

Por lo que entiendo si no reseteo el PIC ni pongo esos pines como salida deberían quedarse activadas todas las Pull-Ups.

Vale que al usar el I2C se me desactiven las RB0 y RB1 pero ... ¿y RB3?

Estoy confuso o confundido o ...  :shock:

¿A alguien se le ocurre algo?

P.D. No os pongo el fuente porque tiene 11.277 líneas de código y no es plan.

(Por favor, absténganse respuestas insustanciales, el Foro lo agradecerá)
« Última modificación: 07 de Junio de 2008, 09:05:11 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #1 en: 07 de Junio de 2008, 09:03:02 »
Hola Diego. Ante todo te voy a pedir disculpa si la pregunta que te voy a formular es estúpida, porque o de cominicaciones, se algo de teoría y muy poco, por lo que se puede decir que se 0+1

¿RB3, está configurado como análogo, o digital?

Si está colocado como análogo, ese es el problem, no acepta las pull up.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #2 en: 07 de Junio de 2008, 09:06:34 »
De RB0 a RB5 son siempre Entradas digitales.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #3 en: 07 de Junio de 2008, 09:25:13 »
Podría tener algo que ver con esto:

Citar
15.1.2 CCP2 PIN ASSIGNMENT
The pin assignment for CCP2 (Capture input, Compare
and PWM output) can change, based on device configuration.
The CCP2MX Configuration bit determines
which pin CCP2 is multiplexed to. By default, it is
assigned to RC1 (CCP2MX = 1). If the Configuration bit
is cleared, CCP2 is multiplexed with RB3.
Changing the pin assignment of CCP2 does not
automatically change any requirements for configuring
the port pin. Users must always verify that the appropriate
TRIS register is configured correctly for CCP2
operation, regardless of where it is located
.

Aunque imagino que no se te habrá pasado configurar el RB3 como entrada (si estuviera como salida se explicaría que su pull-up se dehabilitara). Lo siento, no se me ocurre otra cosa.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #4 en: 07 de Junio de 2008, 09:30:04 »
Lo que me extraña sobremanera es que por último mi main() es de la forma:

Código: C#
  1. main(){
  2. ....
  3.    While(true){
  4.       if(Condicion1){
  5.          Hago_lo_que_tenga_que_hacer_en_1();
  6.       }
  7.       if(Condicion2){
  8.          Hago_lo_que_tenga_que_hacer_en_2();
  9.       }
  10.       ...
  11.       if(CondicionN){
  12.          Hago_lo_que_tenga_que_hacer_en_N();
  13.       }
  14.       port_b_pullups(true);
  15.    }
  16. }
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #5 en: 07 de Junio de 2008, 09:37:01 »
Pues tengo 3 teorias de este comportamiento de rebeldia del PIC4550..

1 teoria:
Me gustaria ver algo de esquematico y asi ver si algo te esta afectando la Pull-UP.

2 teoria:
Cuando usas el MODULO CCP en modo PWM, se hace necesario colocar las Pull-Up externas, pues las internas "Parece" se deshabilitan automaticamente.

When the ECCP module is used in the PWM mode, the
application hardware must use the proper external pull-up
and/or pull-down resistors on the PWM output pins.


para verificar esto, pasa nuevamente el CCP2 a RC1 y dale a ver si efectivamente aparece la Pul-Up si aparece CARAMBOLA!!!! si no  :x Seguimos buscando solucion.


3 teoria:
Esta dañada esa PUll-UP.    No, no, no.. Es en serie no te rias. A mi me paso y creeme me saco canas verdes, rojas, azules. Sucede que confiaba de las Pull-Up de B4 hasta B7. Coloque el teclado 4x4 y listo a programar. despues de dias y dias de por que razon el bendito teclado no trabajaba, encontre que por mas que activaba las Pull-Up, nunca aparecian y me toco colocarselas externas.. Para no creer pero asi fue me hizo perder mas de 8 dias ese problemita.


Edito para colocarte la segunda teoria.
« Última modificación: 07 de Junio de 2008, 09:45:21 por PICmouse »

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #6 en: 07 de Junio de 2008, 10:00:46 »

Esta dañada esa PUll-UP.    No, no, no.. Es en serie no te rias. A mi me paso y creeme me saco canas verdes, rojas, azules. Sucede que confiaba de las Pull-Up de B4 hasta B7. Coloque el teclado 4x4 y listo a programar. despues de dias y dias de por que razon el bendito teclado no trabajaba, encontre que por mas que activaba las Pull-Up, nunca aparecian y me toco colocarselas externas.. Para no creer pero asi fue me hizo perder mas de 8 dias ese problemita.

¡Y la rep.. que los rem.. par...!  :x :x :x A mi me debe haber pasado lo mismo. Porque me es imposible hacer andar las benditas resistencias pull up internas, ya que a mi, el teclado no me andaba cuando desactivaba RBPU (habilitar resistencias internas) y con resistencias externa, el teclado anda de maravilla.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #7 en: 07 de Junio de 2008, 10:16:57 »
No, no creo que sean Pull-Ups dañadas.

He sacado otra unidad idéntica de la caja (aún tengo unas 25 mas) y se repite el mismo esquema de las que sí y las que no:

RB0 No RB1 No RB2 Si RB3 No RB4 Si RB5 Si.

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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #8 en: 07 de Junio de 2008, 10:21:57 »
¿Has probado la teoría 2 de Picmouse? A mi me parece que es ese el error.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #9 en: 07 de Junio de 2008, 10:30:23 »
El Pin RB3 lo uso como entrada digital configurada la Interrupción como Input-Capture para detectar el flanco de bajada, que es lo único que me interesa, como las INT_EXTn pero haciendo uso de este truco. No uso el PWM.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #10 en: 07 de Junio de 2008, 11:32:47 »
¿Tendrá algo que ver la configuración USB?
Según parece ese chip comparte la función VPO cuando funciona con transceptor externo. No parece muy lógico que sea eso porque el resto de pines no te funcionan mal, pero quizás convenga revisar el bit UTRDIS (UCFG, bit3) que debe estar a 0.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #11 en: 07 de Junio de 2008, 12:09:41 »
Revisando otro tema, me he topado de bruces con un fuse: CCP2C1/CCP2B3

He revisado el código de tu programa, ¿y a que no adivinas cuál de los dos tienes puesto?  :D

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #12 en: 07 de Junio de 2008, 12:33:14 »
vengan maestros queremos saber  :lol: :lol: para  que nos sirvas de experiencia  :D :D
  :-/ asi que pongan la causas  :-/ :-/

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #13 en: 07 de Junio de 2008, 19:01:16 »
Revisando otro tema, me he topado de bruces con un fuse: CCP2C1/CCP2B3

He revisado el código de tu programa, ¿y a que no adivinas cuál de los dos tienes puesto?  :D

He revisado el fuente y en fuses.h tengo CCP2B3 que es como debe ser  :shock::

Código: C#
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Fuses y ajuste de Clock
  4. //
  5. ///////////////////////////////////////////////////////////////////////////////////////////////////
  6.  
  7. #fuses HSPLL,NOMCLR,PUT,BROWNOUT,BORV43,WDT,WDT2048,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,CCP2B3
  8. #use delay(clock=48000000)
  9.  
  10. ///////////////////////////////////////////////////////////////////////////////////////////////////
  11. //
  12. // End of _fuses.h
  13. //
  14. ///////////////////////////////////////////////////////////////////////////////////////////////////

Y después en lib_heads.c configuro CCP2 para capturar el flanco de bajada (falling edge) y habilito la interrupción para saber cuando llega ese flanco:

Código: C#
  1. enable_interrupts(int_ccp2);
  2.       setup_ccp2(CCP_CAPTURE_FE);
« Última modificación: 07 de Junio de 2008, 19:04:41 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Las Pull-Ups locas atacan de nuevo.
« Respuesta #14 en: 07 de Junio de 2008, 19:34:08 »
Me parece que el dats sheet se contradice.



Si se fijan en la imagen anterior, dice que CCP2 para la captura entrada debe ser 1

Pero en la siguiente imagen dice que debe ser 0



¡Oh! ¿Qué es lo que entiendo mal?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.