Autor Tema: Problemas con I2C en PIC16F877  (Leído 2845 veces)

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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Problemas con I2C en PIC16F877
« 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
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Problemas con I2C en PIC16F877
« Respuesta #1 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Problemas con I2C en PIC16F877
« Respuesta #2 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.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado GDM

  • PIC10
  • *
  • Mensajes: 13
Re: Problemas con I2C en PIC16F877
« Respuesta #3 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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Problemas con I2C en PIC16F877
« Respuesta #4 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.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything