قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الاليقسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots
السلام عليكم ورحمة الله وبركاتة
كيفك يا اخ ناصر , ان شاء الله تمام
الحمدللة ان الامور الان اوضح
وبالنسبة للثقل ............ انا بخدمتك لكن المشكلة هي الوقت
ولكن ان شاء الله سوف ازودك عن قريب
بتخزين واستدعاء الاوامر
وحياك الله , والى الامام , ومشكور على جهودك ومثابرتك وربنا يقويك
واللهم انصر الاسلام والمسلمين
بسم الله الرحمن الرحيم
والسلام عليكم ورحمة الله وبركاتة
انا الان سوف اشرح كيفية الكتابة الى الميموري 24C02
والانسان بطبيعتة كما تعلمون معرض للخطأ والنسيان
فأنا اتقبل جميع الردود والمشاركات والتعديلات وشكرا لكل من يحاول ان يعلم ويتعلم
كود:
--------------- Performs 24C02 Init
void EEPROM_24C02_Init() {
I2C_Init(100000);
الان نحن حددنا التردد للموموري حسب الداتا شيت الخاص بها وهو كما ترى 100KHz
}//~
//--------------- Writes data to 24C02 EEPROM - signle location
الكتابة الى مكان واحد في الميموري
void EEPROM_24C02_WrSingle(unsigned short wAddr, unsigned short wData) {
هنا يجب بالبداية ان اعمل لها امر بداية ستارت
حتى كل جهاز يعتبر كخادم الان للشبكة Slave يعطي انتباهة ويسمع لما سيقولة الماستر Master وهو الان البيك ( المايركرو )
I2C_start(); // issue I2C start signal
I2C_Wr(0xA2); // send byte via I2C (command to 24cO2)
وهنا اكتب لجميع الخدم Slaves عنوان وهو A2
وسوف يعطيني الانتباة الجهاز صاحب هذا العنوان وفي مثل هذة الحالة اللي عندنا ما عندنا الا جهاز واحد وهو الميموري فديفولت نستخدم العنوان A2
I2C_Wr(wAddr); // send byte (address of EEPROM location)
وهنا احدد للخادم عنوان داخل الذاكرة نفسها
لان الكل يعرف تقسيم الذاكرة مثل الكتاب وكل معلومة بصفحة الكتاب لها رقم معين
ولنفرض اني اريد ان اكيب بعنوان C4 بالذاكرة
فما علي الا ان اكتب الامر هكذا
I2C_WR(Oxc4);
I2C_Wr(wData); // send data (data to be written)
وهنا اذهب واكتب المعلومة الاولى في العنوان الاول الذي حددتة وهو كما تريد اخي ناصر اكتب معلومة d0
وانا الان لا اتذكر كم كانت قيمة المعلومة الاولى عندك d0
فعلى سبيل المثال لنفرض انها كانت تساوي ثمانية وحايد d0=0b11111111;
فأنا بصدد ان اكتب لة هذا الامر
I2C_WR(0xFF);
I2C_Stop();
والان بعد انا ما خزنت المعلومة FF وما هي الا عبارة عن d0 في العنوان C4 بالذاكرة
فيجب ان اعطي الخادم slave او الميموري ايعاز بلايقاف حتى تنتظر امر اخر للقراءة او الكتابة من جديد
}
اتمنى ان اكون قد وضحت امر التخزين وانتظرونا بأمر القرأة
وكما قلت اتقبل اي تعديل او اي مشاركة او اي سؤال فكلنا نتعلم من بعض
والكمال لة وحدة لا الة الا هو سبحانة
واللهم انصر الاسلام والمسلمين
التعديل الأخير تم بواسطة : م. نافذ ابو كشك بتاريخ 06-01-2010 الساعة 05:58 AM
السلام عليكم ورحمة الله وبركاتة
الموضوع حقا فى غاية الاهمية فذاكرة الميكرو محدودة جدا ويجب ان نجد حلا لزيادتها ولكن احب ان اوضح شيئا لاخوانى
عند توصيل الايبروم فى الميكرو يحتاج الميكرو ان يقرا البرنامج المخزن على الايبروم الخارجية فى الرام الخاصة بالبيك (اعنى قراءة فقط وليس نسخ الى ذاكرة الفلاش ) لنفرض اننا قمنا بتوصيلها عن طريق i2c connection عند سرعة 400khz فانها تتيح لنا قراءة 14000بايت /ثانية او مايعادل 7000 تعليمة / الثانية قارن هذا مع سرعة الميكرو الحقيقية التى تكون مثلا 5,000,000 امر على الثانية على حسب الكريستال المستخدم ونوع الميكرو فهذا الحل يكون تدمير لسرعة الميكرو بنسبة 1/720 من السرعة الاساسية للبيك هذا على حد علمى ارجو التصحيح ان كنت خاطئا وجزاكم الله خيرا
الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:36 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)