Arduino 24C02 Eeprom'u Okuma ve Yazma
  • Sorum sizlere gayet basit gelebilir ama henüz başlangıç seviyesinde olduğum için işin içinden çıkamadım.

    Saatlerce (farklı günlere yayılı ) yaptığım araştırmaların sonucunda elde ettiğim en net bilgi aşağıdaki linkte ve ondan öteye gidemedim: ( Burdaki arduino modeli farklı bendeki r3 )

    http://www.haberocean.com/2015/01/read-and-write-data-to-24c02-using-arduino-mega-circuit-and-program-part-1/
    Anladığım kadarıyla bu eeprom la bağlantı kurmak için I2C protokolü denilen bağlantıyı yapmam lazım önce?

    Elimde Arduino Uno R3 var. Harici olarak başka bir yerden lehimlerini söktüğüm 24C02 eeprom var. Bu eepromdaki verileri bilgisayara bağlı Arduino Uno R3 te okumam için izlenecek adımlar nelerdir Bilale anlatır gibi anlatabilecek arkadaş varsa çok sevinirim?
    Özellikle hangi kabloyu nerelere bağlayacağım kısmını ( arduino breadboard - eepromun bacakları ilişkisi )
    reel olarak algılayabilirsem sorunu çözmeye de yaklaşacağım diye düşünüyorum.

    ( Not: Elektronik ve arduino konusunda çok tecrübem yok, karşılaştığım problem bu konulara da merak sardırdı zaten. Bir şekilde araştırıp deneyip yeni ufuklara yavaş yavaş yelken açarım diye tahmin ediyorum ama kopya çekerek de olsa bu eeprom okuma yazma problemini aşmam lazım çünkü eeprom olayı için çok zamanım kalmadı. )

    Olası Cevaplar için Şimdiden Teşekkürler.
  • şuradaki bağlantı ve programı deneyebilirsiniz
    http://fritzing.org/projects/readwrite-serial-eeprom-via-i2c

    sorun çıkarsa buradan devam edersınız
  • Bu çok basit birşey, sana hem okuma hemde yazma kodlarını yazıcam
    sadece arduinoya yukle ve dogru pinleri bağla iş tamam
  • Kod uzun diye almadı 2 parçada yolluyorum

    Part 1;

    int sda = 5; //arduino pin 5
    int scl = 6; //arduino pin 6

    int sda_read;
    int delay_time=1;
    int Memory_byte_address;
    void setup() {

    Serial.begin(9600);
    pinMode(scl, OUTPUT);
    }

    int power(int x, unsigned int y)
    {
    if( y == 0)
    return 1;
    else if (y%2 == 0)
    return power(x, y/2)*power(x, y/2);
    else
    return x*power(x, y/2)*power(x, y/2);
    }

    int read_from_24C02(int IC_number, int Memory_byte_address)
    {
    int remainder, i, j, data_read=0;
    int position_in_binary;
    int binary_of_IC_number[] = {0, 0, 0};
    int binary_of_Memory_byte_address[] = {0, 0, 0, 0, 0, 0, 0, 0};
    int binary_of_Data[] = {0, 0, 0, 0, 0, 0, 0, 0};

    if(IC_number > 0)
    {
    position_in_binary=2;
    while(IC_number!=1)
    {
    remainder= IC_number %2;
    IC_number= IC_number / 2;
    binary_of_IC_number[position_in_binary] = remainder;
    position_in_binary--;
    }
    binary_of_IC_number[position_in_binary]=1;
    }

    if(Memory_byte_address > 0)
    {
    position_in_binary=7;
    while(Memory_byte_address!=1)
    {
    remainder = Memory_byte_address %2;
    Memory_byte_address= Memory_byte_address / 2;
    binary_of_Memory_byte_address[position_in_binary] = remainder;
    position_in_binary--;
    }
    binary_of_Memory_byte_address[position_in_binary]=1;
    }
    pinMode(sda, OUTPUT);

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); //
    digitalWrite(sda, LOW); // START
    delay(delay_time); //
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    /***************** DEVICE ADDRESS STARTS HERE ******************/

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 1 MSB
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 2
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 3
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 4
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[0]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 5
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[1]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 6
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[2]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 7
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 8 LSB
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    /***************** DEVICE ADDRESS ENDS HERE ******************/

    pinMode(sda, INPUT); //

    digitalWrite(scl, HIGH); //
    sda_read=digitalRead(sda);//
    delay(delay_time); // ACKNOWLEDGEMENT
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    /***************** WORD ADDRESS STARTS HERE ******************/

    pinMode(sda, OUTPUT);

    for(i=0;i<8;i++)<br /> {
    digitalWrite(sda, binary_of_Memory_byte_address[i]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 1 MSB
    digitalWrite(scl, LOW); //
    delay(delay_time); //
    }

    /***************** WORD ADDRESS ENDS HERE ******************/

    pinMode(sda, INPUT);

    digitalWrite(scl, HIGH); //
    delay(delay_time); //
    sda_read=digitalRead(sda);// ACKNOWLEDGEMENT
    delay(delay_time); //
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    pinMode(sda, OUTPUT);

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); //
    digitalWrite(sda, LOW); // START
    delay(delay_time); //
    digitalWrite(scl, LOW); //
    delay(delay_time); //


  • Part 2;

    /***************** DEVICE ADDRESS STARTS HERE ******************/

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 1 MSB
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 2
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 3
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 4
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[0]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 5
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[1]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 6
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, binary_of_IC_number[2]); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 7
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    digitalWrite(sda, HIGH); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); // 8 LSB
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    /***************** DEVICE ADDRESS ENDS HERE ******************/

    pinMode(sda, INPUT); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); //
    delay(delay_time); //
    sda_read=digitalRead(sda);// ACKNOWLEDGEMENT
    delay(delay_time); //
    digitalWrite(scl, LOW); //
    delay(delay_time); //

    /***************** DATA STARTS HERE ******************/

    for(j=0;j<8;j++)<br /> {
    digitalWrite(scl, HIGH); //
    delay(delay_time); //
    for(i=0;i<10;i++) // <br /> { //
    sda_read=digitalRead(sda);// 1 MSB
    //Serial.print(sda_read); //
    } //

    data_read = data_read + sda_read * power(2,7-j);
    digitalWrite(scl, LOW); //
    delay(delay_time); //
    }

    /***************** DATA ENDS HERE ******************/

    pinMode(sda, OUTPUT); //
    digitalWrite(sda, LOW); //
    delay(delay_time); //
    digitalWrite(scl, HIGH); // STOP
    delay(delay_time); //
    digitalWrite(sda, HIGH); //
    delay(delay_time); //

    delay(5);


    return(data_read);
    }

    void loop() {

    int data;

    // Number of the 24C04 IC from which data to be read
    int IC_number = 0; // In the range 0 - 7

    Memory_byte_address=100; //hangi adresi okuyacağını yaz
    data = read_from_24C02(IC_number, Memory_byte_address);
    Serial.print("data1= ");
    Serial.println(data);
    Serial.print("--------------------------------------------------------------- ");
    }

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.