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

   

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 06-05-2014, 04:27 PM المشاركة 49   
افتراضي



السلام عليكم
تسلم أخي
نعم أخي نستطيع أستنتاج الزمن من تايمر ولكن مشكله هنا اذا كانت لديك عده دوال دعنا نفترض داله قراءه درجه حراره اذا أستدعيتها فأن الطريقه وضع متغير داخل انتربت ليحسب لنا زمن غير ناجح وهذا عن تجربه فكنت أقرا درجه حراره NTC وكنت وضعت متغير يحسبلي زمن ولكن مشكله انه أثناء تنفيذ اوامر بعضها تحتاج وقت ولن ينفذ داله سفن سكمنت الى ان يصل الى كود الذي كتبته
مثلا
كود:
if(cont1>=1) { cont1=0;display_7seg() ; }
فهنا اذا كان البيك مشغول بتنفيذ امر ما فلن ينفذ هذا الامر صحيح انه يزيد من قيمه
cont1 ولكن لن ينفذ امر اظهار البيانات على سفن سكمنت حتى يصل اليه
ولكن بوضع الكود ضمن داله انتربت فمهما يحدث فأنه البيك دائما ينفذ امر اظهار البيانات على سفن سكمنت يعني حتى لو أكتب زمن تأخيري مقداره مثى 10 ثواني فلايؤثر ذلك على سفن سكمنت
ارجو اني وضحت قصدي من وضع الكود داخل الانتربت
اي انني مبتعد عن اي شيئ ممكن يعيق عمليه multiplexing
طبعا توجد حلول ولكن افضلها وضع كود سفن سكمنت داخل انتربت

ولكن أتصور ان تنفيذ اكثر من مقاطعه سوف سبب ارباك في عمل البيك يعني مره يحدث مقاطعه من تايمر واخرى من RCIF_bit اتصور لما يقرا البيانات من كمبيوتر يجبره تايمر على حدوث مقاطعه مره اخرى فيؤثر سلبا في نتائج فما هو رأيك بكثره مقاطعات
مع جزيل الشكر والتقدير
بسم الله الرحمن الرحيم
اخي حسن نظرتك للتايمر انك لاتستطيع استثماره بشكل جيد والاستفادة منه لاقصى درجة نظرة خاطئة فانت تستطيع توليد جميع الازمنة واستدعاء اي دالة تحتاج ان تنفذها باي زمن دون التأثير على سير عمل البرنامج نهائيا وهذا برنامج يحوي سفن سكمنت وحساسات حرارة وحساس رطوبة وتوليد BWM ووظائف اخرى كثيرة وعديدة ولا استعمل الا التايمر لتنفيذ جميع مااريد يمكنك الاطلاع عليه
بالنسبة ان هناك اكثر من مقاطعة فسبب عدم استجابة البك لاستقبال البيانات هو قضاء كامل الوقت تقريبا داخل مقاطعة التايمر لان البرنامج تقريبا زمن تنفيذه بالكامل هو 2ميلي وبضع اجزاء من الميلي اي لحين انتهاء تنفيذ البرنامج تكون قد اتت المقاطعة التالية وبهذا لن تخرج خارج التايمر الا لفترة صغيرة وهذا سبب انه لايستجيب الا الى 3 ميلي ثانية لان زمن المقاطعة وزمن التنفيذ تقريبا متساويين
ازا كنت تحب نتحاور جيدا بخصوص الاستفادة من التايمر
او يمكنك مؤقتا كتابة مثلا
عرف متغير وليكن قيمته الافتراضية صفر
وعند حدوث مقاطعة التايمر يصبح واحد ونقول مثلا

كود:
if(set==1)
{هنا نصفر المتغير set ونضع الكود الخاص بنا وهكذا سينفذ البرنامج خارج المقاطعة لحين ورود مقاطعة اخرى ويبقى المايكرو جاهز لرؤية اي مقاطعة اخرى }

http://up.top4top.net/downloadf-top4...9f0d1-rar.html


اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-05-2014, 05:01 PM المشاركة 50   
sun


بسم الله الرحمن الرحيم
اخي حسن نظرتك للتايمر انك لاتستطيع استثماره بشكل جيد والاستفادة منه لاقصى درجة نظرة خاطئة فانت تستطيع توليد جميع الازمنة واستدعاء اي دالة تحتاج ان تنفذها باي زمن دون التأثير على سير عمل البرنامج نهائيا وهذا برنامج يحوي سفن سكمنت وحساسات حرارة وحساس رطوبة وتوليد BWM ووظائف اخرى كثيرة وعديدة ولا استعمل الا التايمر لتنفيذ جميع مااريد يمكنك الاطلاع عليه
بالنسبة ان هناك اكثر من مقاطعة فسبب عدم استجابة البك لاستقبال البيانات هو قضاء كامل الوقت تقريبا داخل مقاطعة التايمر لان البرنامج تقريبا زمن تنفيذه بالكامل هو 2ميلي وبضع اجزاء من الميلي اي لحين انتهاء تنفيذ البرنامج تكون قد اتت المقاطعة التالية وبهذا لن تخرج خارج التايمر الا لفترة صغيرة وهذا سبب انه لايستجيب الا الى 3 ميلي ثانية لان زمن المقاطعة وزمن التنفيذ تقريبا متساويين
ازا كنت تحب نتحاور جيدا بخصوص الاستفادة من التايمر
او يمكنك مؤقتا كتابة مثلا
عرف متغير وليكن قيمته الافتراضية صفر
وعند حدوث مقاطعة التايمر يصبح واحد ونقول مثلا

كود:
if(set==1)
{هنا نصفر المتغير set ونضع الكود الخاص بنا وهكذا سينفذ البرنامج خارج المقاطعة لحين ورود مقاطعة اخرى ويبقى المايكرو جاهز لرؤية اي مقاطعة اخرى }

http://up.top4top.net/downloadf-top4...9f0d1-rar.html

السلام عليكم
اوكي انا أفتهمت مقصدك فكره جميله للتخلص من ديلي ولان تايمر يعمل بشكل مستقل ممكن ان نولد أزمن مختلفه

اريد أطرح سؤال كيف نشغل أكثر من داله في أن واحد
يعني مثلا عندي داله سفن سكمنت واخرى لتغير شفره واخرى للحراره و...

احيانا يحدث أستدعاء داله داخل داله مثلا داله تغير شفره ومن خلالها أستدعيت داله قراءه كيباده

ممكن تشرح لي فكره عامه خصوصا اذا كانت عده دوال واحده داخل أخرى

مع جزيل الشكر والتقدير

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-05-2014, 06:12 PM المشاركة 51   
افتراضي


السلام عليكم
جزاكم الله خيرا
هل تقصدون عمل دوال مثل هذا البرنامج
http://arabsh.com/files/0c3343426df6...hc595-rar.html

لكن في حاله كثره دوال بتاكيد هل تقصد أستخدم فقط if لانها لاتعيق عمل مايكرو ونضع متغيرات بحيث الداله التي نريدها نضع لها متغير مثلا اذا كان =100 تصبح داله فعاله بيحث يمكن مايكرو يدخل الى داخلها وينفذ اوامر اما اذا متغير =0 فتصبح داله معطله
هل هذا ماتقصدون به
تحياتي لكم وشكرا جزيلا على كل معلومات التي قدمتموها لنا ولجميع أخوه


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 06-05-2014, 06:39 PM المشاركة 52   
افتراضي


السلام عليكم
جزاكم الله خيرا
هل تقصدون عمل دوال مثل هذا البرنامج
http://arabsh.com/files/0c3343426df6...hc595-rar.html

لكن في حاله كثره دوال بتاكيد هل تقصد أستخدم فقط if لانها لاتعيق عمل مايكرو ونضع متغيرات بحيث الداله التي نريدها نضع لها متغير مثلا اذا كان =100 تصبح داله فعاله بيحث يمكن مايكرو يدخل الى داخلها وينفذ اوامر اما اذا متغير =0 فتصبح داله معطله
هل هذا ماتقصدون به
تحياتي لكم وشكرا جزيلا على كل معلومات التي قدمتموها لنا ولجميع أخوه
صحيح اخ حسن ماشاء الله عليك بتلئطها عل طاير هذا ماقصدته يبقى ايضا اني اريد ان يبدء الحساب عند حدث معين مثلا عند الضغط على سويتش اريده ان يبدأبحساب تاخير معين بعدها ينفذ هنا سافعل المتغير في البرنامج اثناء الضغط على السوتش مثلا واضع الشرط داخل مقاطعة التايمر انه عندما يصبح المتغير 1 مثلا يبدأ العد على متغير ثاني وفي البرنامج الرئيسي نقول عند وصول المتغير اللذي يزيد للقيمة المطلوبة سادخل الى الشرط واصفر المتغيرين وانفذ التعليمات اللازمة


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-05-2014, 06:58 PM المشاركة 53   
sun شكرا جزيلا لك أخي كريم


صحيح اخ حسن ماشاء الله عليك بتلئطها عل طاير هذا ماقصدته يبقى ايضا اني اريد ان يبدء الحساب عند حدث معين مثلا عند الضغط على سويتش اريده ان يبدأبحساب تاخير معين بعدها ينفذ هنا سافعل المتغير في البرنامج اثناء الضغط على السوتش مثلا واضع الشرط داخل مقاطعة التايمر انه عندما يصبح المتغير 1 مثلا يبدأ العد على متغير ثاني وفي البرنامج الرئيسي نقول عند وصول المتغير اللذي يزيد للقيمة المطلوبة سادخل الى الشرط واصفر المتغيرين وانفذ التعليمات اللازمة
السلام عليكم
شكرا جزيلا على كل معلومه
لي سؤال ماذا عن هذا الامر
كود:
;(while(RB0_bit==0
يعني لاينفذ اي شيء طالما RB0_bit=0
طبعا ان أستخدمنا while سوف يتوقف عمل مايكرو لحين تغير قيمه RB0_bit
هل هنا نستخدم متغير وهذا متغير يبقى 0 طالما RB0_bit=0 وبعدما يصبح قيمه RB0_bit=1 نغير قيمه متغير ليسمح له بدخول الى داله

أخي لم تخبرني ماذا عن داله داخل داله هل يتم أستخدام داله داخل داله ام أضع جميع دوال داخل قائمه الرئيسيه ولما أدخل مثلا الى داله تغير شفره وردت دخول الى داله كيباده وداله اعاده تأكيد
فأضعهما كل دوال فرعيه داخل داله رئيسه عندها محتاج داله كيباده وانا داخل داله تغير شفره قول له أجعل متغير=1 وبتالي راح يدخل الى داله كيباده وعندما ينتهي جعل متغير=0
يعني مقصدي كيف نعالج دوال واحده داخل اخرى
انا بطريقه عاديه ماعندي مشكله ولكن بأستخدام طريقتك

تحياتي


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 06-05-2014, 08:02 PM المشاركة 54   
افتراضي


السلام عليكم
شكرا جزيلا على كل معلومه
لي سؤال ماذا عن هذا الامر
كود:
;(while(RB0_bit==0
يعني لاينفذ اي شيء طالما RB0_bit=0
طبعا ان أستخدمنا while سوف يتوقف عمل مايكرو لحين تغير قيمه RB0_bit
هل هنا نستخدم متغير وهذا متغير يبقى 0 طالما RB0_bit=0 وبعدما يصبح قيمه RB0_bit=1 نغير قيمه متغير ليسمح له بدخول الى داله

أخي لم تخبرني ماذا عن داله داخل داله هل يتم أستخدام داله داخل داله ام أضع جميع دوال داخل قائمه الرئيسيه ولما أدخل مثلا الى داله تغير شفره وردت دخول الى داله كيباده وداله اعاده تأكيد
فأضعهما كل دوال فرعيه داخل داله رئيسه عندها محتاج داله كيباده وانا داخل داله تغير شفره قول له أجعل متغير=1 وبتالي راح يدخل الى داله كيباده وعندما ينتهي جعل متغير=0
يعني مقصدي كيف نعالج دوال واحده داخل اخرى
انا بطريقه عاديه ماعندي مشكله ولكن بأستخدام طريقتك

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


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-05-2014, 08:25 PM المشاركة 55   
افتراضي


اخي حسن بالتأكيد انت لن تضع دالة داخل دالة اخرى الا عندما تكون الدالة الثانية مرتبطة بتحقق شرط الدالة الاولى عندها اربط الدالتين داخل بعض وغير ذالك نجعلهم دوال فرعية وكما قلت عندما تكون داخل دالة وتريد الدخول الى دالة اخرى تجعل المتغير قيمته واحد وعندالدخول الى الدالة تجعله صفر وتنفذ باقي التعليمات
ارجو ان اكون اوضحت او يمكن وضع مثال من عندك للمناقشة
السلام عليكم
تفضل هذا مشروع عن حساس مسافه
http://arabsh.com/files/0c33434360f0...مسافه-rar.html

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


ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 251
نشاط [ ahmadazez ]
قوة السمعة:
قديم 07-05-2014, 12:39 AM المشاركة 56   
افتراضي


السلام عليكم
تفضل هذا مشروع عن حساس مسافه
http://arabsh.com/files/0c33434360f0...مسافه-rar.html

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

http://up.top4top.net/downloadf-top4...b1c71-rar.html



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