هذا
الشرح لا يشمل لوح الاردوينو (Due) لان له تصميم مختلف.
في البداية هنالك ثلاث
انواع من الذاكر في المتحكمات الدقيقة المستخدمة في
الواح الاردوينو الأساسية (avr-based Arduino boards).
1| ذاكرة تخزين البرنامج (Flash Memory)
وهي المكان الذي يخزن فيه السكيتش .
2| الذاكرة
الوصول العشوائية SRAM
(Static Random Access Memory)
وهي مكان صنع السكيتش ومعالجة المتغيرات اثناء العمل.
3| الذاكرة الجانبية EEPROM (Electrically Erasable Programmable Read-Only Memory) هي
المكان الذي تخزن فيه المعلومات على المدى الطويل.
النوع
الأول ذاكرة تخزين البرنامج (Flash memory) و النوع الثالث الذاكرة الجانبة(EEPROM)
هي من النوع الغير متطاير(تبقى ثابتة)(non-volatile)
بمعني ان المعلومات المخزنة تبقى محفوظه بعد إطفاء الجهاز. اما النوع الثاني في
القائمة أعلاه وهو ذاكرة الوصول العشوائية (SRAM)
هي من النوع المتطاير (غير الثابت) التي تفقد بعد إطفاء الجهاز.
الرقاقة
ATmega328
المثبته على لوح الاردوينو Uno تتضمن على القدر التالي من الذاكرة:
Flash 32k bytes (of which
.5k is used for the bootloader)
SRAM 2k bytes
EEPROM 1k byte
الرقاقة
ATmega2560المثبته
في لوح الاردوينو Mega2560
تتضمن مساحه تخزين اكبر كما موضح ادناه:
Flash 256k bytes (of
which 8k is used for the bootloader)
SRAM 8k bytes
EEPROM 4k byte
ملاحظة عدم توفر ذاكرة وصول عشوائية في لوح من النوع Uno.مع
ذلك من السهل استخدامه من خلال وجود السترينج في السكيتش على سبيل المثال:
char message[] =
"I support the ARDUINO I R A Q …";
يضع
33 بايت في ذاكرة الوصول العشوائية (لكل عنصر بايت واحد، إضافة الى الترمنيتر '\0'
لا
يبدو هذا بكثير لكنه لا يأخذ الكثير ليصل الى 2048 وخصوصا اذا كان لديل الكثير من
النصوص لأرسالها الى شاشه عرض او جداول بحث كبيره.
إذا
استنزفت الذاكرة العشوائية SRAM فبرنامج يكون معرض للفشل الغير متوقع حيث
يظهر لك انه تم رفع البرنامج بنجاح لكنه لا يعمل او لا يعمل بالشكل الصحيح. إذا
حصل هذا عليك بتقليل او تقصير السترينج او تقليل بنيه أي معلومات أخرى في السكيتش
(من دون تغيير الكود البرمجي).
بعد
ذلك إذا عمل البرنامج بشكل صحيح إذاً كنت قد استنفذت الذاكرة العشوائية في السابق
وقمت بمعالجتها الان.
هنالك
بعض الأمور التي يمكنك عملها لتتغلب على هذه المشكلة.
★إذا
كان سكيتشك متواصل مع برنامج يشتغل على حاسوب (مكتبي او محمول) يمكنك محاول نقل
البيانات والحسابات الى الحاسوب وبذلك تقليل الحمل عن لوح الاردوينو.
★إذا
كان لديك جداول بحث او مصفوفات كبيرة الحجم، استخدم نوع البيانات الصغيرة الضرورية
لخزن القيم التي تحتاجها: كمثال (Int تأخذ اثنان بايت بينما byte
تأخذ واحد فقط (محصورة فقط على قيم قليله).
★إذا
كنت لا تحتاج الي تعديل البيانات عند عمل السكيتش بأمكانك تخزينها في ذاكرة
البرنامج (فلاش ميموري) بدلاً عن الذاكرة العشوائية (SRAM)
ولعمل ذلك استخدم PROGMEM.
شكرا على هذه المعلومات القيمة
ردحذفشكرا جزيلا على هذه المعلومات
ردحذفشكرا جزيلا على هذه المعلومات
ردحذفكيف يمكن مسح الاكواد القديمة من ذاكرة الاردوينو حين تكون ممتلئة
ردحذفكيف يمكن تصفير الذاكرة أو مسح الأكواد القديمة
ردحذفاخي العزيز : بعد التحية
حذفما الفائدة من مسح الشفرات لبرمجية(الكود)؟ لانك بكل مرة تُحمل فيها برنامج الى لوح الاردوينو سيتم مسح البرنامج الاقدم وافساح كام الذاكرة لبرنامج الجديد وهكذا.
كل الشكر
حذفكل الشكر
حذفشكرا لكل المعلومات القيمه انا جديد بعالم الاوردوينو
ردحذف
ردحذفالشيفرة البرمجية تستخدم 1460 بايت (0%) من مساحة البرنامج. أقصى حد 253952 بايت.
المتغيرات العامة تستخدم 9 بايت من (0%) الذاكرة المتغيرة، تبقى 8183 بايت للمتغيرات الداخلية. القيمة القصوى 8192 بايت.
ما معنى هذه الرسالة في برنامج الاردوينو وشكرا
جميل
ردحذف