SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: borgo en Martes 20 de Septiembre de 2005, 15:03
-
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.
-
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 :)
-
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
-
:whistling: Opsssssss
Solucionado !!!!!!
El problema estaba en que me faltaban las resistencias a + en los pines SDA y SCL .
Gracias ... saludos para todos.
-
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: