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

   

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 19-11-2012, 06:51 PM المشاركة 1   
افتراضي كيف يمكن توفير اكبر قدر ممكن من الذاكرة في المايكروكنترولر 16f628a



السلام عليكم ،،

اخواني قمت بكتابة برنامج لارسال موجات محاكاة لريموت يعمل بالاشعة تحت الحمراء ، ولكنني لم اتمكن من اضافة الازرار كلها في المايكروكنترولر نظرا لصغر حجم ذاكرة المايكروكنترولر ،،

طبعا ان استخدم خاصية الPWM , وفي كل bit اريد ان ارسلها استخدم اما pwm start و pwm stop وطبعا بين هاتين الدالتين استخدم الامر delay_us() ،، وبالتجربة اكتشفت ان الامر delay هو من يتسبب باستغلال ذاكرة اكبر ،،.وكما تلاحظون فالامر متكرر في كثيرا ،، وفي كل سطر تقريبا من البرنامج ،، فهل هناك طريقة افضل او اي شيء اقوم به لتصغير المساحة المستخدمة حتى يمكنني اضافة اسطر اكثر !!!

اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 19-11-2012, 07:14 PM المشاركة 2   
افتراضي


ضع عبارة التاخير delay في برنامج فرعي وقم باستدعاء البرنامج الفرعي كلما احتجت اليها ...

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

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 19-11-2012, 08:06 PM المشاركة 3   
افتراضي


فكرت فيها بهذه الصورة ولكن اعتقدت ان هذا لن يغير شيئا ،،


عموما سأجرب واعود اليك ،،!


goldfinger2
:: عضوية غير مفعلة ::
تاريخ التسجيل: Oct 2006
الدولة: egypt
المشاركات: 186
نشاط [ goldfinger2 ]
قوة السمعة:
قديم 19-11-2012, 08:57 PM المشاركة 4   
افتراضي


السلام عليكم
مهندس حيدر جزاك الله خيرا هل ممكن ان توضح لنا كيف نعمل برنامج فرعى لل delay


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 19-11-2012, 10:36 PM المشاركة 5   
افتراضي


فكرت فيها بهذه الصورة ولكن اعتقدت ان هذا لن يغير شيئا ،،


عموما سأجرب واعود اليك ،،!
اذا كانت عبارة التاخير هي من يسبب استهلاك الذاكرة حسب ما تفضلت به فهذه الطريقة هي الحل الامثل ...
و الا فيجب ان ترفع الكود لكي نحاول حل المشكلة

قبل الدالة الرئيسية نكتب الدالة الفرعية بهذا الشكل

كود:
void dly()
{delay_ms(1000);
}

ثم نستدعيها في الدالة الرئيسية
كود:
dly();


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 19-11-2012 الساعة 10:45 PM

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 636
نشاط [ المظلوم ]
قوة السمعة:
قديم 20-11-2012, 01:05 AM المشاركة 6   
افتراضي


السلام عليكم ،،

بدلا من ان اقوم بعمل دالة الــ Delay لوحدها ،، قمت بجعل ارسال كل من 0 او 1 ،، عبارة عن دالة او ما يسمى subrotine ،، وعندما قمت ببناء البرنامج قلت نسبة استغلال الذاكرة إلى اقل من النصف ( 24 % فقط ) ، عما كان عليه بالطريقة الأخرى ( 60 % ) !!



شكرا لك أخي الكريم //


goldfinger2
:: عضوية غير مفعلة ::
تاريخ التسجيل: Oct 2006
الدولة: egypt
المشاركات: 186
نشاط [ goldfinger2 ]
قوة السمعة:
قديم 20-11-2012, 02:06 AM المشاركة 7   
افتراضي


جزاكم الله خيرا


SmartElectronic
:: مهندس ::
تاريخ التسجيل: Jan 2011
الدولة: Tenth of Ramadan
المشاركات: 30
نشاط [ SmartElectronic ]
قوة السمعة:
قديم 20-11-2012, 01:51 PM المشاركة 8   
افتراضي


السلام عليكم ،،

اخواني قمت بكتابة برنامج لارسال موجات محاكاة لريموت يعمل بالاشعة تحت الحمراء ، ولكنني لم اتمكن من اضافة الازرار كلها في المايكروكنترولر نظرا لصغر حجم ذاكرة المايكروكنترولر ،،

طبعا ان استخدم خاصية الPWM , وفي كل bit اريد ان ارسلها استخدم اما pwm start و pwm stop وطبعا بين هاتين الدالتين استخدم الامر delay_us() ،، وبالتجربة اكتشفت ان الامر delay هو من يتسبب باستغلال ذاكرة اكبر ،،.وكما تلاحظون فالامر متكرر في كثيرا ،، وفي كل سطر تقريبا من البرنامج ،، فهل هناك طريقة افضل او اي شيء اقوم به لتصغير المساحة المستخدمة حتى يمكنني اضافة اسطر اكثر !!!

للاسف الميكروسي ياكل المساحة بطريقة رهيبة والحل ان لاتعتمد علي مكتبات الميكروسي



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