rs 232 ile i2c yi beraber kullanmak

Başlatan yunusdursun, 04 Eylül 2013, 08:32:52

yunusdursun

Merhabalar ,

Picte daha yeniyim öğrenmek için kafamdan birşey uydurdum fakat altından kalkamadım.Yardımcı olursanız çok sevinirim.

İLK olarak 1.master pice rs232 ile veri gönderip 2.slave pice i2c ile veriyi aktarıp oradan da yine rs232 ile başka bir bilgisayardan 1. bilgisayardan gönderdiğim veriyi görmek istiyorum.Fakat işin içinden çıkamadım.


Master >>>




#include <16F877A.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(crystal=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
#use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3,force_hw)

byte veri;
void main()
{
   
   
   while(TRUE)
   {
    i2c_start();
    printf("Gonderilecek veriyi giriniz =");
    veri=getc();
    delay_us(10);
    i2c_write(0x00);
    i2c_write(10);
    i2c_write(veri);
    i2c_stop();
   }

}



slave  >>>


#include <16F877A.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#use delay(crystal=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_D6,rcv=PIN_C7,bits=8,stream=PORT1)
#use i2c(Slave,Slow,sda=PIN_C4,scl=PIN_C3,address=0x0)

#include <2402.c>
byte data;
i2c_start();
void main()
{

   while(TRUE)
   {
   data=i2c_read(0);
   i2c_stop();
   delay_us(50);
   printf("alinan data = %c",data);
   }

}




yunusdursun

Profesyoneller üyeler deneyimli üyeler şu işe bir el atında bizimde işimiz görülsün ;)

esensoy

1- bu gibi durumlarda devre şeması olmadan yorum yapmak çok zor, belki de i2c pullup dirençlerini koymadınız, ondan çalışmıyor, şema görmeden kimse bu kısma yorum yapmaz,
2- CCS genelde bunu yapıyor, problem çıkarıyor mu bilmiyorum ama en üstten 2. satır ADC 8  olmalı,
3- Slave pic yazılımında i2c_start ı main fonksiyonu dışında işletmişsiniz,
En tehlikeli an "zafer" anıdır.

yunusdursun


Klein

http://www.hizliresim.com/

Bu siteye gir. resmi yükle.
forumlar için verilen linki kopyala. mesajına yapıştır.

yunusdursun

Şuan internetin baglı alduğu yerden verdiğiniz adrese erişim yasak ama ben size sorunumu daha basit bir şekilde aktarayım iki pic arasında i2c iletişimi nasıl yapılar.