قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

سعد الجسري
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2005
الدولة: UAE
المشاركات: 144
نشاط [ سعد الجسري ]
قوة السمعة:0
قديم 01-08-2013, 11:38 PM المشاركة 1   
افتراضي أرجو المساعدة في 24C00 Twitter FaceBook Google+



السلام عليكم
أخواني
لم أستطع القراءة من الذاكره عن طريق يروتوكول I2C
أستطيع الكتابة بكل سهولة عن طريق الكود التالي


I2C1_Start البدء
I2C1_Wr(0xA2 تحديد عنوان الشريحة
I2C1_Wr(2); عنوان المكان المراد كتابة علية
I2C1_Wr(0xA2); البيانات
I2C1_Stop(); الانتهاء

أرجو المساعدة ولكم جزيل الشكر

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 02-08-2013, 07:45 PM المشاركة 2   
افتراضي


السلام عليكم
أخواني
لم أستطع القراءة من الذاكره عن طريق يروتوكول I2C
أستطيع الكتابة بكل سهولة عن طريق الكود التالي


I2C1_Start البدء
I2C1_Wr(0xA2 تحديد عنوان الشريحة
I2C1_Wr(2); عنوان المكان المراد كتابة علية
I2C1_Wr(0xA2); البيانات
I2C1_Stop(); الانتهاء

أرجو المساعدة ولكم جزيل الشكر
جواب بسيط ان شالله
تكتب نفس الاوامر اعلاه وبعدها تكتب
كود:
i2c1_repeated_start();
i2c1_wr(0xA3);
x=i2ci_Rd(0);
i2c1_stop();

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 02-08-2013, 07:49 PM المشاركة 3   
افتراضي


بالنسبه لامر الذي كتبته وهو
كود:
i2c1_wr(0xA3)
اصلا يعني بالبانيري 10100010 وبت الاول 0 يعني كتابه
اما اذا كتبت نفس عنوان وجعلت اول بت 1 تصبح عمليه قراءه
يعني 10100011=0xA3


سعد الجسري
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2005
الدولة: UAE
المشاركات: 144
نشاط [ سعد الجسري ]
قوة السمعة:0
قديم 02-08-2013, 09:44 PM المشاركة 4   
افتراضي


أشكرك أخي حسن
لم تعمل
أريد القراءة فقط


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 03-08-2013, 03:55 AM المشاركة 5   
افتراضي


أشكرك أخي حسن
لم تعمل
أريد القراءة فقط
سلام عليكم
اخي كريم هذا كود كامل تم تجربته وهو يعمل
بالبدايه تتم عمليه كتابه
وهذا كود كتابه لاحظ البيانات هي 0xaa
كود:
 I2C1_Init(100000);         // initialize I2C communication
  I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (address of EEPROM location)
  I2C1_Wr(0xaa);             // send data (data to be written)
  
I2C1_Stop();               // issue I2C stop signal
وهذا كود لقراءه هذه البيانات من موقع الذي تم خزنه
كود:
 I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (data address)
  I2C1_Repeated_Start();     // issue I2C signal repeated start
  I2C1_Wr(0xA3);             // send byte (device address + R)
  portb = I2C1_Rd(0);        // Read the data (NO acknowledge)
  I2C1_Stop();               // issue I2C stop signal
هنا سوف يتم خزن البيانات في بورت b طبعا يمكن حفظه في اي مكان
وهذا كود كامل كتابه اولا ثم قراءه ثانيا
كود:
  I2C1_Init(100000);         // initialize I2C communication
  I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (address of EEPROM location)
  I2C1_Wr(0xaa);             // send data (data to be written)
  I2C1_Stop();               // issue I2C stop signal

  Delay_100ms();

  I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (data address)
  I2C1_Repeated_Start();     // issue I2C signal repeated start
  I2C1_Wr(0xA3);             // send byte (device address + R)
  portb = I2C1_Rd(0);        // Read the data (NO acknowledge)
  I2C1_Stop();               // issue I2C stop signal


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 03-08-2013, 04:24 AM المشاركة 6   
افتراضي


سلام عليكم
وهذا كود اذا كنت تريد قراءه اكثر من عنصر
هنا خزنت البيانات في مصفوفه وبعدها خزنتها في ايبروم
ثم قراءت تلك البيانات وظهرته على بورت b
ملاحظه عنوان ذاكره يحدد مره واحده وبعدها تلقائيا يزداد بمقدار 1
كود:
char x=0 ,k=1;
char my_data[]={0,1,2,3,4,5,6,7,8,9};
void main(){

  
  TRISB = 0;                 // Configure PORTB as output
  portb = 0;                  // Clear PORTB

  I2C1_Init(100000);         // initialize I2C communication
  I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (address of EEPROM location)
  for(x=0;x<10;x++)
      {
       I2C1_Wr(my_data[x]);
      }

  I2C1_Stop();               // issue I2C stop signal

  Delay_100ms();

  I2C1_Start();              // issue I2C start signal
  I2C1_Wr(0xA2);             // send byte via I2C  (device address + W)
  I2C1_Wr(2);                // send byte (data address)
  I2C1_Repeated_Start();     // issue I2C signal repeated start
  I2C1_Wr(0xA3);             // send byte (device address + R)

  for(x=0;x<9;x++)
      {
     portb=  I2C1_Rd(1);
     delay_ms(1000);
      }
    portb=  I2C1_Rd(0);
    delay_ms(1000);
  I2C1_Stop();               // issue I2C stop signal
}


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 03-08-2013 الساعة 04:28 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 03-08-2013, 04:32 AM المشاركة 7   
افتراضي


ملاحظه مهمه
اذا كتبت الامر( i2c1_Rd(1
معناها استمر في قراءه البيانات ام اذا وضعت 0 بدلا من 1 فهي تعني توقف عن قراءه البيانات
وسلام عليكم

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 11:33 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025