TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Leon Pic en 01 de Marzo de 2010, 09:27:42

Título: Problemas con I2C en PIC16F877
Publicado por: Leon Pic en 01 de Marzo de 2010, 09:27:42
Estoy programando el PIC16F877 usando el módulo MSSP configurado como I2C.
Al momento de simularlo en el MPLAB, la condición de START, el bit SSPIF del registro PIR1, jamás se coloca a 1.
Esta es la configuración del I2C que estoy utilizando:

         MOVLW      B'10000000'
         MOVWF      SSPSTAT         ;SELECCIONO VELOCIDAD CON NIVELES I2C
         MOVLW      .9
         MOVWF      SSPADD          ;VELOCIDAD DEL BUS 12C 100KHZ
         BCF        STATUS,RP0      ;BANCO 0
         MOVLW      B'00101000'
         MOVWF      SSPCON          ;MÓDULO MSSP EN ON


Y esta es la rutina del envío de la secuencia de Start. Lo que me pasa es que queda el CP en las líneas btfss   pir1,sspif. Este bit jamás se coloca a 1.

START_I2C      bcf         PIR1,SSPIF
               bsf         STATUS,RP0      ;Selecciona página 1
               bsf         SSPCON2,SEN     ;Activa secuencia de inicio
               bcf         STATUS,RP0      ;Selecciona página 0
Espera_Start   btfss       PIR1,SSPIF      ;¿Fin de secuencia de tranmisión?
               goto        Espera_Start   ;Espera fin de transmision
               return


Al momento de llamar a la rutina START_I2C estoy en el banco 0
Título: Re: Problemas con I2C en PIC16F877
Publicado por: Suky en 01 de Marzo de 2010, 09:47:29
Yo he implementado exactamente la misma configuración en un 877A, sin ningun inconveniente  :( Revisa que los registros se carguen correctamente  :undecided:

Saludos!
Título: Re: Problemas con I2C en PIC16F877
Publicado por: Leon Pic en 01 de Marzo de 2010, 10:03:12
Si, todos los registros se cargan correctamente.
Debe ser un error del MPLAB

Buscaré la solución por ahí. Ahora se que la rutina y la configuración del I2C está bien.
Título: Re: Problemas con I2C en PIC16F877
Publicado por: GDM en 13 de Marzo de 2010, 12:09:55
Leon Pic,

No se que versión de MPLAB tenes. Hay versiones que tienen errores. Hasta donde se la v8.3 tiene varios errores. Yo trabajo con la 8.0, es media viejita pero funciona bien.

Saludos,

Gustavo
Título: Re: Problemas con I2C en PIC16F877
Publicado por: Leon Pic en 13 de Marzo de 2010, 19:29:04
Perdón a todos los usuarios. Juraría que había publicado la solución a este inconveniente.

El problema es que el MPLAB no simula el I2C
La única manera de solucionarlo es modificar el bit SSPIF del registro PIR1 por medio de estímulos. En mi caso coloco a 1 este bit cada 32 ciclos de reloj.