هذا هو البرنامج
تحميل الملف من هنا
علما باني وضعت الكرستال 20 MHz
ووضعت النسبه 1:2
اما tmr0 =252
وكان الزمن 2 us
اما التردد هو 500000 Hz
لكن سوالي هو: هل هذا الزمن 2 us هو زمن تنفيذ جميع الاوامر داخل التامير ام ماذا
|
شكرا أخي على البرنامج
في الحقيقة حساباتي اعطتني زمنا أقل لكن ليس هذا هو المهم
المهم هو سؤالك :
أخي طريقة حساب زمن تنفيذ (أغلب) التعليمات يساوي مقلوب ربع التردد .. مثال للتوضيح:
Fosc =تردد المذبذب وهو 20 ميغاهرتز او 20.000.000 هرتز
نقسمه على 4 فيعطينا التردد F بقيمة 5.000.000 هرتز
وبما ان الزمنT = مقلوب الترددF
T = 1/F
فإن T = 1/5000000 = 0,0000002s
او 0,2 ميكرو تانية
|
ومن المفترض انني اذا عملت عداد داخل هذا التايمر يعد من 0 الى 500000 وزمن التنفيذ يكون 2 us سوف نحصل في الاخير على 1 ثانيه
لكن عندما قمت بعمل المحاكاه لم يظهر الناتج المرجو منه
بل اصبح الزمن الكلي تقريبا 20 ثانيه لاكمال العد حتى 500000
ارجو التوضيح
|
من الناحية العملية لايمكنك "عمل عداد داخل التايمر" فنحن لا يمكن ان نعمل عدادا داخل عداد آخر ..
كل ما نستطيع عمله هو ضبط التايمر0 على عدد يتوقف عنه ويصفر نفسه كلما وصل اليه مثل اي متغير .. العدد لايمكن ان يتعدى 256 لان التايمر0 متكون من 8 بيت bits فقط اي ان اكبر عدد ممكن ان يصل اليه = 11111111 = 255
|
سوف نحصل في الاخير على 1 تانيه
|
في النهاية ماهو الزمن الذي تريد الحصول عليه ؟
1 ميكروتانية او 1 تانية ؟..