اطلاعیه

Collapse
No announcement yet.

راه اندازی EEPROM خارجی AT24Cxx با اردوینو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی EEPROM خارجی AT24Cxx با اردوینو

    اقا سلام داداشا توروخدا یه اموزش برایه ایسی ایپرام ها باا اردوینو بزارید هییچی تو نت نیس
    مخصوصاا این سری AT24Cxx

    اگه هم حال ندارید یدونه معرفی کنید مرسی

    #2
    پاسخ : راه اندازی EEPROM خارجی AT24Cxx با اردوینو

    ایپرام خارجی با پروتکل IIC به آردوینو متصل میشه . یه مثال براتون میزارم ببینید متوجه میشید :


    #include <Wire.h>
    #define disk1 B01010000 //Eeprom address
    int addressd = 0;
    byte val = 56;




    void eeprom_i2c_write(int from_addr, byte data) {


    Wire.beginTransmission(disk1);


    Wire.write((int)(from_addr));


    Wire.write(data);


    Wire.endTransmission();


    delay(5);
    }




    byte eeprom_i2c_read(int from_addr) {

    byte rDATA = 0xFF;


    Wire.beginTransmission(disk1);


    Wire.write((int)(from_addr));


    Wire.endTransmission();


    Wire.requestFrom(disk1, 1);


    rDATA = Wire.read();


    return rDATA;
    }




    void setup() {


    Wire.begin();


    Serial.begin(9600);


    eeprom_i2c_write(addressd, val);


    Serial.println("Writen to memory!");
    }




    void loop() {


    byte r = eeprom_i2c_read(addressd);


    Serial.print(r);


    Serial.print("\n");


    delay(1000);
    }

    دیدگاه


      #3
      پاسخ : راه اندازی EEPROM خارجی AT24Cxx با اردوینو

      نوشته اصلی توسط Ahmad58 نمایش پست ها
      ایپرام خارجی با پروتکل IIC به آردوینو متصل میشه . یه مثال براتون میزارم ببینید متوجه میشید :


      #include <Wire.h>
      #define disk1 B01010000 //Eeprom address
      int addressd = 0;
      byte val = 56;




      void eeprom_i2c_write(int from_addr, byte data) {


      Wire.beginTransmission(disk1);


      Wire.write((int)(from_addr));


      Wire.write(data);


      Wire.endTransmission();


      delay(5);
      }




      byte eeprom_i2c_read(int from_addr) {

      byte rDATA = 0xFF;


      Wire.beginTransmission(disk1);


      Wire.write((int)(from_addr));


      Wire.endTransmission();


      Wire.requestFrom(disk1, 1);


      rDATA = Wire.read();


      return rDATA;
      }




      void setup() {


      Wire.begin();


      Serial.begin(9600);


      eeprom_i2c_write(addressd, val);


      Serial.println("Writen to memory!");
      }




      void loop() {


      byte r = eeprom_i2c_read(addressd);


      Serial.print(r);


      Serial.print("\n");


      delay(1000);
      }
      داداش منکه چیزی نفهمیدم بیشتر توضیح میدی

      دیدگاه


        #4
        پاسخ : راه اندازی EEPROM خارجی AT24Cxx با اردوینو

        در اینجا از ایپرام 24c16 استفاده شده . پایه های 1 تا 3 برای آدرس دهی هستش و پایه 4 پایه زمین آی سی هستش . ما پایه های 1 تا 4 رو زمین میکنیم ( اطلاعات بیشتر در دیتاشیت ) .
        پایه 5 دیتا و پایه 6 کلاک هستش که به ترتیبه به پینهای A4 و A5 آردوینو متصل میشه . پایه 7 رایت پروتکشن هستش که اگه آزاد یا زمین بشه ، ایپرام قابلیت خوندن و نوشتن داره و اگه به vcc متصل بشه در برابر نوشتن محافظت میشه . پایه 8 هم vcc هستش .
        تو برنامه هم disk1 روبه عنوان یک ثابت ایجاد کردیم که آدرس ایپرام رو در خودش داره . یه متغییر به اسم آدرس ایجاد کردیم که نقطه شروع نوشتن در ایپرام هستش . و یک متغیر از نوع بایت که یک مقدار گرفته تا تو ایپرام ما ذخیره بشه .
        در مرحله بعد دو تا فانکشن برای خوندن و نوشتن روی ایپرام بر پایه پروتکل I2c ایجاد کردیم .
        تو فانکشن ستاپ با استفاده از متد eeprom_i2c_write مقدار مورد نظر رو در نقطه ای از ایپرام که مشخص کرده بودیم نوشتیم .
        تو فانکشن لوپ هم مقدار رو با استفاده از متد eeprom_i2c_read خوندیم و در متغییر r قرار دادیم . عملیات رو با استفاده از سریال مانیتور چاپ کردیم .

        دیدگاه


          #5
          پاسخ : راه اندازی EEPROM خارجی AT24Cxx با اردوینو

          عالیه ممنونتم داداش
          حالا اگه بخوام یه استرینگ رو ذخیره کنم باید چ کنم؟
          تو برنامه چیزی باید وارد کنم ؟مثلا به جایه data????
          جدیدترین ویرایش توسط sadegh.parokh; ۲۲:۳۷ ۱۳۹۶/۰۷/۱۴.

          دیدگاه


            #6
            پاسخ : راه اندازی EEPROM خارجی AT24Cxx با اردوینو

            با سلام دوست عزیز این کد شما رو من میخواستم برای stm32f103 بکار ببرم جواب نداد میشه راهنمایی کنید چه چیزی تو این کد باید تغییر داده بشه یکی از چیزایی که فرق میکنه مسلما شماره پایه های i2c برد uno و با این برد هستش که من هرچه wire.h رو خوندم نتونستم پیداش کنم اگه لطف کنید راهنمایی بفرمایید ممنون میشم با تشکر

            دیدگاه

            لطفا صبر کنید...
            X