Autor Tema: Problema I2C y SPI  (Leído 2098 veces)

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

Desconectado pfc_18f4550

  • PIC10
  • *
  • Mensajes: 16
Problema I2C y SPI
« en: 13 de Marzo de 2013, 13:04:22 »
Buenas!!

Tengo un pequeño problema y creo que algo estoy haciendo mal. Tengo que utilizar el SPI y el I2C del pic 18f25k22 que estan en el mismo puerto. Por defecto tengo que programado los pines del SPI. Pero cada segundo leo un RTC que va por I2C.

El problema es que cuando los pruebo por juntos, cuando lo hago por sepaprado solo las funciones de leer del I2C y envio por SPI todo va bien.

Cada 100ms envio por el SPI, y cada segundo leo el RTC  ( cada vez que entro a la funcion I2C preprogramo el port como I2c y cuando salgo lo dejo como SPI)

No se si estoy haciendo algo mal al reprogramar los registros  o algo.

No estoy usando las librerias del microchip.

/*Rutina envio Backlight*/
void envio_BK (unsigned char cuentas)
{
   b1=b1 | ((cuentas&0xF0)>>4);
   b2=(cuentas&0x0F)<<4;
   /*habilitar integrado*/
   /*Programamos el SPI2*/   
   
   ptrenableSPI2=1;
   prtCS_BK=0;
   
   /*envio cuentas*/
   flagint_SPI2=0;
   SSP2BUF=b1;
   while(flagint_SPI2!=1)
   {
   }
   vaciar=SSP2BUF;
   flagint_SPI2=0;
   SSP2BUF=b2;
   while(flagint_SPI2!=1)
   {
   }
   
   /*deshabilitar el integrado*/
   prtCS_BK=1;   
      
}

el programa se queda pillado en el while que espera que se haya completado la transmision del byte. Tambien decir que no es simpre igual, a veces realiza 2 envios otras veces realiza mas.

Gracias!!
« Última modificación: 13 de Marzo de 2013, 13:06:26 por pfc_18f4550 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Problema I2C y SPI
« Respuesta #1 en: 13 de Marzo de 2013, 13:47:02 »


No conviene que hagas eso, el dispositivo SPI está a salvo porque solo atenderá las comunicaciones cuando actives su CS, pero el dispositivo I2C estará constantemente recibiendo datos incongruentes, que pueden "confundirlo".


Esta es la recomendación que hace Microchip al respecto:

You can have I2C and SPI connections to a PIC if the lines are not shared.If you share the bus lines with the I2C bus as with the SPI bus, then the I2C devices will become confused when you transmit SPI data. The SS line prevents the SPI devices from getting I2C data, but the I2C devices have no such protection. As long as one of these is done in software and the buses are not merged together, this sort of thing usually works fine.



Si no tienes más remedio que compartir el mismo puerto con SPI e I2C, puedes añadir un chip CP2120.






Desconectado pfc_18f4550

  • PIC10
  • *
  • Mensajes: 16
Re: Problema I2C y SPI
« Respuesta #2 en: 13 de Marzo de 2013, 14:18:50 »
Gracias planeta9999

Me podrias decir donde puedo mirar esta información? Esta en el datasheet del pic?

Gracias.

Desconectado pfc_18f4550

  • PIC10
  • *
  • Mensajes: 16
Re: Problema I2C y SPI
« Respuesta #3 en: 14 de Marzo de 2013, 04:07:26 »
Perdón el modelo del Pic no lo he puesto bien es el 18f46k22.