• Sábado 4 de Mayo de 2024, 19:12

Autor Tema:  I2c  (Leído 2043 veces)

borgo

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
I2c
« en: Martes 20 de Septiembre de 2005, 15:03 »
0
Hola Amigos

Tengo la siguiente consulta, en este código intento generar la condición de inicio en un bus I2C, notaran que subo un pin de control el bit 7 del puertoB  para bajarlo luego de que la secuencia se completó, pues ESO NUNCA SUCEDE y no se porqué no puedo generar la condición de inicio    :angry:
,---------------------------------------------------------------------------------------
Send_Start   bcf   PIR1,SSPIF
      bsf   STATUS,RP0   ;Seleciona página 1
      bsf   SSPCON2,SEN   ;Activa secuencia de inicio
      bsf   STATUS,RP0
      bsf PORTB,7   
Start_Wait   btfss   PIR1,SSPIF   ;Fin de secuencia de inicio ??
      goto   Start_Wait   ;No, esperar
      bcf   PORTB,7      
      return
;----------------------------------------------------------------------------------------
La configuración del bus la tengo así:

Inicio           clrf   PORTC      
      bsf   STATUS,RP0   ;Selecciona banco 1
      movlw   b'11111111'
      movwf   TRISC      ;RC3/SCL y RC4/SDA entradas (como salidas se comporta igual)
      movlw 0x00   
      movwf TRISB        ;puerto B como salida
      movlw   b'10000000'
      movwf   SSPSTAT      ;Velocidad estándar con niveles I2C
      movlw   .9
      movwf   SSPADD      ;Velocidad de 100KHz
      bcf   STATUS,RP0   ;Selecciona banco 0
      clrf PORTB
;Módulo MSSP en el modo Master I2C

      movlw   b'00101000'
      movwf   SSPCON      ;Módulo MSSP en On

                               etc etc
;-----------------------------------------------------------------------------------------

Si alguien tiene alguna sugerencia lo agradeceré porque realmente no se el motivo del NO FUNCIONAMIENTO.


   Gracias a todos por su tiempo.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: I2c
« Respuesta #1 en: Martes 20 de Septiembre de 2005, 16:12 »
0
Hola, intenta subir el bit 7 del puerto B antes de iniciar la secuencia, despues de terminada la bajas..

,---------------------------------------------------------------------------------------
bsf PORTB,7

Send_Start bcf PIR1,SSPIF
bsf STATUS,RP0 ;Seleciona página 1
bsf SSPCON2,SEN ;Activa secuencia de inicio
Start_Wait
btfss PIR1,SSPIF ;Fin de secuencia de inicio ??
goto Start_Wait ;No, esperar

bcf PORTB,7
return
;----------------------------------------------------------------------------------------

si no funciona asi me comentas.. solo por curiosidad, sin intentar activar este bit, la comunicacion funciona?. Saludos :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

borgo

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: I2c
« Respuesta #2 en: Martes 20 de Septiembre de 2005, 16:33 »
0
Hola Jonathan   :hola:

Pues mira la cuestión es que el programa nunca va mas allá de esta línea

btfss PIR1,SSPIF ;Fin de secuencia de inicio ??
goto Start_Wait ;No, esperar

Se queda esperando la confirmación del sspif, pero no entiendo el motivo, la condición de inicio nunca se genera y desde luego la comunicación no ocurre.


Gracias Jonathan y si se te ocurre algo bienvenido sea, no intento hacer nada en particular solo explorar las comunicaciónes para entender un poco mas.   :rolleyes:

   Saludos

borgo

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: I2c
« Respuesta #3 en: Martes 20 de Septiembre de 2005, 22:09 »
0
:whistling:  Opsssssss

Solucionado !!!!!!
  El problema estaba en que me faltaban las resistencias a + en los pines SDA y SCL .

   Gracias ... saludos para todos.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: I2c
« Respuesta #4 en: Miércoles 21 de Septiembre de 2005, 01:40 »
0
hU!! :ph34r:  .. BUENO, detalle importante el que pasaste por alto :P .. con esto se aprende que los errores que creemos estan en el codigo fuente aveces estan mas bien en el hardware .. Me alegro que hayas solucionado tu problema :) :lightsabre:

Saludos :) :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»