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

   

يعرب مطر
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 130
نشاط [ يعرب مطر ]
قوة السمعة:
قديم 25-06-2017, 01:29 PM المشاركة 9   
افتراضي



السلام عليكم اخي محمد الياس
كل عام وانت بألف خير
وجميع الاخوة بخير

اخي محمد انا كتبت نفس هذا الكود لكن بدن هذا الامر

CMCON = 7;

حبذا لو شرحت لي هذا الامر وهل هو سبب عدم عمل البرنامج

اذا ماكنت محتاج لل prescaler
قديش بتكون قيمة PSA
يعني بهذه الحالة انا استخدم wdt

ارجو التوضيح

اعلانات

محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 229
نشاط [ محمد إلياس ]
قوة السمعة:
قديم 25-06-2017, 02:44 PM المشاركة 10   
افتراضي


السلام عليكم
كود:
CMCON = 7;
في المنفذ A الأربع أطراف الأولى مرتبطة ب 2 مقارن (comparator).
مداخل المقارنات هي من النوع أنالوج يعني تقبل جهود تناظرية.
إذا كنت لا تحتاج تلك المقارنات ضروري تلغي عملها بتلك التعليمة تضع تلك التعليمة والتي ستحول الأطراف المدكورة إلى مداخل ديجتال .

اذا ماكنت محتاج لل prescaler
قديش بتكون قيمة PSA
يعني بهذه الحالة انا استخدم wdt
ما دمت تستخدم Timer Calculator كما ذكرت سابقا فلا حاجة لك إذن بمسجلات التايمرات .
تلك هي أهم ميزة لذلك البرنامج المفيد .
ولا قيم PSA و WDT
يكفي أن تدخل للبرامج اسم عائلة المتحكم وقيمة التردد أو قيمة الزمن المطلوب و أخيرا اسم التايمر المقصود
وهو سيولد لك كود مقاطعة التايمر المطلوب.
هذه صورة للمثال السابق:

وهذا رابط صفحة البرنامج لمن يريد الاستفادة من خدماته :
https://libstock.mikroe.com/projects...mer-calculator

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

يعرب مطر
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 130
نشاط [ يعرب مطر ]
قوة السمعة:
قديم 25-06-2017, 04:59 PM المشاركة 11   
افتراضي


شكرا للمساعدة اخي محمد
وجعله في ميزان حسناتك

لقد كفيت ووفيت....


kanni
:: مهندس ::
تاريخ التسجيل: Oct 2016
المشاركات: 3
نشاط [ kanni ]
قوة السمعة:
قديم 25-06-2017, 08:27 PM المشاركة 12   
افتراضي


الاخوة الاعزاء كل عام و انتم بخير
الاخ محمد إلياس
برنامج timer calculater يولد option_REG و اذا لاحظت فانه يساوي 88 و بالتالي اذا حولنا الرقم للbinary فهو 10001000 و بالتالي فان PSA=1 و بالتالي فاننا نستخدم WDT


محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 229
نشاط [ محمد إلياس ]
قوة السمعة:
قديم 25-06-2017, 08:57 PM المشاركة 13   
افتراضي


الاخوة الاعزاء كل عام و انتم بخير
الاخ محمد إلياس
برنامج timer calculater يولد option_REG و اذا لاحظت فانه يساوي 88 و بالتالي اذا حولنا الرقم للbinary فهو 10001000 و بالتالي فان PSA=1 و بالتالي فاننا نستخدم WDT
أخي أنا أعرف هذا الشي وغيره ولم أقل ما يخالفه..
قبل انتشار الميكروسي درست البرمجة بالأسمبلي والتي تفرض عليك التعامل مع كل بتات المسجلات داخل البيك..
فقط وضحت للأخ يعرب أن البرنامج يعفي المبرمج من إرهاصات التعامل مع المسجلات المرتيطة بالتايمرات كلها ومتاعبها ..
ولذلك لم أدخل في التفاصيل ..
طبعا من يريد كتابة كود مقاطعة أي تايمر بدون هذا البرنامج فله كامل الحرية في ذلك .
أخي إذا كان لديك أي شرح حول الموضوع تقدمه للأخ يعرب تفضل أخي الكريم
وكل عام وأنتم بخير ..


يعرب مطر
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2016
الدولة: سوريا
المشاركات: 130
نشاط [ يعرب مطر ]
قوة السمعة:
قديم 25-06-2017, 10:47 PM المشاركة 14   
افتراضي


الاخوة الاعزاء كل عام و انتم بخير
الاخ محمد إلياس
برنامج timer calculater يولد option_REG و اذا لاحظت فانه يساوي 88 و بالتالي اذا حولنا الرقم للbinary فهو 10001000 و بالتالي فان PSA=1 و بالتالي فاننا نستخدم WDT
كل عام وانت بخير

بما اننا لانريد تقسيم للتردد اي ان Prescaler= 1:1
هنا يفترض علينا ان نجعل psa=1 هذا يعني استخدام wdt لان اصغر قيمة فيها هي واحد اما اصغر قيمة في timer0هي 2
بهذه الحالة يصبح 1:2 Prescaler
يعني تقسيم على 2

اعتقد ذلك
مارأيك استاذ محمد إلياس


kanni
:: مهندس ::
تاريخ التسجيل: Oct 2016
المشاركات: 3
نشاط [ kanni ]
قوة السمعة:
قديم 01-07-2017, 11:48 PM المشاركة 15   
افتراضي


الاخ يعرب مطر
تصحيح
ارجوا المعذرة من الاخوة الاعزاء في حال كان prescaler لل timer0 يساوي 1 فهنا يكون لدينا psa=1 و في هذه الحاله يمكننا استخدام wdt بالاضافه الى timer0 طبعا هذا يتوقف على اختيارنا ففي حال رغبنا باستخدام wdt او timer0 مع الاخذ بعين الاعتبار ان prescaler للتايمر 0 هي 1


محمد إلياس
:: مهندس جيد ::
تاريخ التسجيل: Jan 2017
المشاركات: 229
نشاط [ محمد إلياس ]
قوة السمعة:
قديم 02-07-2017, 01:24 AM المشاركة 16   
افتراضي


السلام عليكم
الإخوة الكرام اسمحوا لي بهذه التوضيحات :
1- بإمكان المبرمج برمجة التايمر0 (Timer0) أو مؤقت الحراسة (Watchdog Timer) معا أو برمجة أحدهما وعدم برمجة الآخر كما يريد وبحسب المطلوب من الكود .
وهذا سواء كان PSA=0 أو PSA=1.
2- إذن ما علاقة البت PSA في المسجل OPTION_REG بالتايمر0 و مؤقت الحراسة؟
في الواقع PSA ليس هو من يحدد الاختيار بين استخدام التايمر0 أو استخدام مؤقت الحراسة .
دوره هو تحديد من سيستفيد من خدمات prescaler ؟
هل التايمر0 أم مؤقت الحراسة حسب رغبة المبرمج ومتطلبات الكود طبعا.
إذا دعت الضرورة المبرمج أن يسند ال prescaler للتايمر0 للحصول على ناتج التردد الذي يبحث عنه، فمن الضروري أن يجعل PSA=0
وبذلك سيرتبط ال prescaler بالتايمر0 ولن يكون بالامكان طبعا أن يستفيد WDT من خدامات prescaler .
لكن إذا أراد المبرمج برمجة مؤقت الحراسة وأراد أن يكبر زمن هذا المؤقت فعليه أن يجعل PSA=1
علما وهذا مهم ،أن اختيار برمجة مؤقت الحراسة من عدمه في كل اللغات يتم في بداية تهيئة المشروع ومن خلال صفحة الإعدادت (Configuration Bits):
هذا مثال بالنسبة للميكروسي والبيك المستخدم في هذا الموضوع.
الخيار هو Watchdog Timer في الخانة الثانية:
http://upload.qariya.info/up2017/266...084A0E270D.PNG
3- إذا حجز المبرمج prescaler ل Timer0 وفي نفس الوقت رغب في برمجة Watchdog Timer (اختصارا: WDT) يمكنه ذلك طبعا بتفعيله كما سبق ذكره.
وكل ما في الأمر أن زمن مؤقت الحراسة (WDT) لن يمكن تكبيره وسيعمل بقيمته الافتراضية .
علما بأنه في الغالب لا يحتاج المبرمجون برمجة WDT .
+++
ملحوظة : ممكن نترجم prescaler ب (مقسم التردد القبلي)



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