harici EEPROM(24C04WP)[ÇÖZÜLDÜ]
  • Selamlar,
    I2C protokolünü kullanarak harici eeproma veri yazıp okumak istiyorum.Araştırdığım kadarıyla I2C yolunda herbir bağlayacağımız ürün tekil bir numaraya sahip olmalı zaten tek başına olduğundan dolayı bir sorun yok).Wire kütüphanesini incelediğimde ise çoğu fonksiyon void yani ben işlemlerimi yaparken hangi aşamada olduğumu anlayamıyorum.Misal veriyorum,veriler eeproma yazıldı mı,bağlanmak istediğim eeprom çalışıyor mu bilemiyorum bu aşamalardan nasıl bilgi sahibi olurum.Aşağıda vermiş olduğum kodda okuma kısmında takılıyor.Lakin veriyi eeprom a yazıldı mı ondan da emin değilim.Yardımlarınız için şimdiden çok teşekkür ederim.


    bağlantı şekli:
    Arduino pin--------24C0wp pin
    4------------------>5
    5------------------>6
    5V.---------------->8
    Gnd--------------->1,2,3,4,7

    eepromun 5 ve 6.bacakları 1.5K dirençlerle 5V.a bağladım
    Kullanmış olduğum kod:


    #include Wire.h>
    #define eepromAdres 80

    void setup() {
    // put your setup code here, to run once:
    Wire.begin(); // join i2c bus (address optional for master)
    Serial.begin(9600); // start serial for output
    }

    void loop() {

    byte x=30;
    eepromaYaz(0,x);
    Serial.println("epromdaki bilgi :");
    byte a=eepromdanOku(0);
    Serial.print(a);



    }

    void eepromaYaz(byte veriAdres,byte veri){
    byte yazilacakVeri=veri;
    Wire.beginTransmission(eepromAdres);
    Wire.write(veriAdres);
    Wire.write(yazilacakVeri);
    Wire.endTransmission();
    }
    byte eepromdanOku(byte veriAdres){
    byte sonuc=0;
    //int i;
    Wire.beginTransmission(eepromAdres);
    Wire.write(veriAdres);
    Wire.endTransmission();
    Wire.beginTransmission(eepromAdres);
    Wire.requestFrom(eepromAdres,1);
    while(!Wire.available()){}
    sonuc=Wire.read();
    Wire.endTransmission();
    return sonuc;
    }






  • Teşekkürler,
    gönderdiğiniz linkteki kodlar kendinize ait zannedersem,benim aradığım zaten hazır fonksiyonlarının içeriğiydi(Mesela Wire.write() fonksiyonunun kodları)Neyse biraz daha ilerledim.
    wire.endTransmission() fonksiyonu pull up direnleri(1 Kohm,4.7K her ikisinide denedim ) takılı iken hiç bir sonuc dondurmezken,bu dirençleri çıkardığımda "2" hata kodunu(Adres gonderilmesinden sonra NACK) bu hatanın sebebi ne olabilir.
  • Sorun çözüldü.Muhtemelende "2 hata kodu" kablolardaki temassızlık yüzünden oluşuyormuş en sonunda endTransmission() fonksiyonunundan 0 dondurmeyi başardım.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.