i2c ile 2 pic i birleştirmek

Başlatan huskapukaya, 29 Nisan 2009, 13:14:40

huskapukaya

selamlar;
2 adet 16f877a pici i2c ile haberleştirmek istiyorum. Ama bir türlü bunu başaramadım. Proteus ta deniyorum vede virtual terminalden state i sürekli okuyorum. slave pic i2c kesmesine gidiyor ama state sürekli 0 da kalıyor. sorunun ne olduğunu anlayamadım. acaba yardımcı olabilirmisiniz?
yazdığım kodlar şöyle

main:
#include <16f877A.h>    


#fuses hs,noWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000) 


#use i2c(MASTER, sda=PIN_C4,scl=PIN_C3,force_hw) 


int8 x;





void main ()
{





   while(1)
   {


x=1;
i2c_start();

i2c_write(0x80);

i2c_write(0x80);

i2c_write(x);

i2c_stop();
delay_ms(10);


slave :
#include <16f877A.h>    


#fuses hs,noWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000) 

#use i2c(SLAVE,sda=PIN_C4,scl=PIN_C3,address=0x80, force_hw) 
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, parity=N, stop=1) 

BYTE  state,incoming;
BYTE address, buffer[0x10];
int8 x;


#INT_SSP
void ssp_interupt ()
{
   
  

   state = i2c_isr_state();
   printf("s1 %x \n\r", state); 
   if(state <= 0x80)                     
   {
    printf("s2 %x \n\r", state); 
      incoming = i2c_read();
      if(state == 1)                     
         address = incoming;
      if(state == 2)                     
         buffer[address] = incoming;
   }
   printf("s3 %x \n\r", state); 
   if(state == 0x80)                   
   {
      i2c_write(buffer[address]);
   }
}







void main ()
{


  



 

enable_interrupts(GLOBAL);
   enable_interrupts(INT_SSP);

  

   while(1)
   {


         
          output_b(x);

 

     delay_ms(10);
  

}

 
}

debi

selam CCS'den pek anlamam o sebepten kodları incelemedim, fakat i2c ile haberleştirilmek istendiğinden emin misin?

huskapukaya

ilgin için teşekür ederim. aslında daha önce rs232 ile picleri birleştirmiştim aslında sorun picleri birleştirmek değil. yani ben bunu zaten bir şekilde yapabilirim(yaptımda) ama derdim aslında öğrenmek. yani bir şekilde gelişmek. ondan kaynaklı biraz  yüklenmeye çalışıyorum :D