TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kzxm300 en 17 de Diciembre de 2011, 09:48:52

Título: Problema al usar i2c ccs con pcf8574a y pcf8574
Publicado por: kzxm300 en 17 de Diciembre de 2011, 09:48:52
Buen día tengan todos ustedes integrantes y visitantes de este gran foro, bueno es la primera vez que expongo un problema y ver si ustedes me pueden ayudar.

Sucede que ando usando el bus i2c  :mrgreen:  jaja una maravilla de bus, pero tengo un problema,  se trata de que estoy usando dos pcf8574 y un pcf8574a(maravilla de integrados  :mrgreen:) en el mismo bus y le conecté las resistencias pullup (puse unas de valor de 10k) también la dirección de esclavo para cada uno pero a la hora de correrlo solo me funciona un pcf8574 no se cual sea el problema, les dejo el código fuente y la simulación en proteus, espero y me puedan ayudar, estoy usando el pic 16f877a.

Código: [Seleccionar]
#include <16F877A.h>
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#use delay(clock=20000000)
#use i2c(master,sda=PIN_C4,scl=PIN_C3,FORCE_HW)

void PCF8574_SendData(char writeaddress,char data)
{
   i2c_start();
   i2c_write(writeaddress);
   i2c_write(data);
   i2c_stop();
}

unsigned char PCF8574_GetData(char readaddress)
{
char data;
   i2c_start();
   i2c_write(readaddress);
   data=i2c_read(0);
   i2c_stop();
return data;
}

void main()
{
char i;

   do{
   for(i=1;i<=255;i++)
   {  
   PCF8574_SendData(0x70,i);
   delay_ms(100);
   PCF8574_SendData(0x40,i);
   delay_ms(100);
   PCF8574_SendData(0x41,i);
   delay_ms(100);
   }                  
      
   }while(TRUE);
    
}
Título: Re: Problema al usar i2c ccs con pcf8574a y pcf8574
Publicado por: JuanEZWon en 07 de Enero de 2012, 16:58:46
Revisando el circuito, tienes un error y es que en el proteus tienes configurado el microcontrolador para funcionar a 4MHZ siendo que en el CCS lo defines a 20MHZ
Título: Re: Problema al usar i2c ccs con pcf8574a y pcf8574
Publicado por: kzxm300 en 08 de Enero de 2012, 01:58:37
Revisando el circuito, tienes un error y es que en el proteus tienes configurado el microcontrolador para funcionar a 4MHZ siendo que en el CCS lo defines a 20MHZ

Si pues aunque de todas formas lo simula si lo cambio o no pero aunque lo corrija poniendo ya sea en el ccs 4000000 en vez de 20000000 o cambiando la configuracion en proteus sigo teniendo el mismo problema que les menciono
Título: Re: Problema al usar i2c ccs con pcf8574a y pcf8574
Publicado por: AngelGris en 08 de Enero de 2012, 11:05:45
  Ten en cuenta que para que funcione bien el bus I2C en proteus las resistencias que utilices deben ser del tipo pullup. Alguna vez utilicé el componente de resistencias genéricas y no funcionaba bien. Busca el componente tipo pullup.
Título: Re: Problema al usar i2c ccs con pcf8574a y pcf8574
Publicado por: gustavosinbandera en 22 de Mayo de 2013, 14:41:03
el error es muy evidente, tienes que observar que la dirección del tercer dispositivo esta mal, yo la corregí y funciona muy bien, en realidad me sirvio de mucho este post, gracias amigo por compartir, la dirección del tercer dispositivo debe ser 0x42 y no 0x41


do{
   for(i=1;i<=255;i++)
   { 
   PCF8574_SendData(0x70,i);
   delay_ms(100);
   PCF8574_SendData(0x40,i);
   delay_ms(100);
   PCF8574_SendData(0x42,i);
   delay_ms(100);
   }                 
     
   }while(TRUE);