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

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

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



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

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

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

اعلانات

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


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

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

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


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


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


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


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


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


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


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

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

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

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


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

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


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

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



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


goldfinger2
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2006
الدولة: egypt
المشاركات: 188
نشاط [ goldfinger2 ]
قوة السمعة:0
قديم 19-11-2012, 10:06 PM المشاركة 7   
افتراضي


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


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


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

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

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

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

إضافة رد

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

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

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


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

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