جدول المحتويات:

اردوينو - المقاطعة الدورية: 4 خطوات
اردوينو - المقاطعة الدورية: 4 خطوات

فيديو: اردوينو - المقاطعة الدورية: 4 خطوات

فيديو: اردوينو - المقاطعة الدورية: 4 خطوات
فيديو: اصلاح جميع مشاكل ويندوز windows 10 بسهولة وبدون برامج 2024, شهر نوفمبر
Anonim
اردوينو - المقاطعة الدورية
اردوينو - المقاطعة الدورية

يدور هذا Instructable حول استخدام مقاطعة دورية للتوقيت في برامج Arduino. هذه خطوة لمبرمج Arduino ناشئ يعرف أن Arduino يمكنه فعل المزيد ، لكنه لا يعرف تمامًا كيفية تحقيق ذلك.

إذا كانت هناك مشكلة في الأداء ، أفترض أنك تستخدم وظيفة واحدة أو أكثر من وظائف (). الحيلة هي التخلص من وظيفة () التأخير () واستبدال المقاطعة. تجبر وظيفة التأخير () Arduino على عدم القيام بأي شيء أثناء انتظار اكتمال التأخير () يسمح استخدام المقاطعة لبرنامجك بالقيام بأشياء أخرى أثناء انتظار نهاية التأخير. عادة ما يكون هناك قدر كبير من الوقت الميت غير المستخدم والذي يمكن استخدامه لأشياء أخرى عند استخدام التأخير (). استخدام المقاطعة يحل هذه المشكلة.

الخطوة 1: معالج المقاطعة

1. أضف معالج المقاطعة إلى برنامجك. فقط انسخ والصق في مكان ما فوق الإعداد () ؛

ثابت بدون توقيع طويل TIMER0_COUNT = 500 ؛ // 500 مللي ثانية فاصل زمني للمؤقت

// TIMER0 interrupt handler volatile bool time = false ؛ ISR (TIMER0_COMPA_vect) {عدد طويل ثابت غير موقعة = 0 ؛ إذا كان (عدد ++> TIMER0_COUNT) {عدد = 0 ؛ الوقت = صحيح ؛ // الوقت مضبوط على "صحيح" كل TIMER0_COUNT مللي ثانية // (يجب مسح الوقت في الروتين الرئيسي)}

الخطوة 2: ضبط الفاصل الزمني الدوري

2. ضبط الفاصل الزمني. هذا الروتين على ظهره على المقاطعة TIMER0 ، والتي تم ضبطها لإطلاق كل ~ 1 ميللي ثانية.

"الفاصل الزمني" هو عدد المقاطعات TIMER0 المراد معالجتها. تبلغ كل فاصل زمني حوالي 1 مللي ثانية ، لذا فأنت تقوم بالفعل بتعيين عدد المقاطعات TIMER0 للعد قبل تنشيط الفاصل الزمني الخاص بك. IOW ، اضبط المتغير TIMER0_COUNT على أي عدد من المللي ثانية تريد الانتظار. على سبيل المثال ، استخدم 500 لمدة نصف ثانية. استخدم 3000 لمدة 3 ثوان.

الخطوة 3: مقاطعة التهيئة

3. أضف رمز "TIMER0 التهيئة" إلى طريقة الإعداد (). مرة أخرى ، فقط انسخ والصق في الإعداد ().

// *** تهيئة TIMER0 ***

cli () ؛ // قم بإيقاف تشغيل جميع المقاطعات TIMSK0 = 0 ؛ // إيقاف تشغيل timer0 لانخفاض الارتعاش OCR0A = 0xBB ؛ // عدد المقاطعات التعسفية TIMSK0 | = _BV (OCIE0A) ؛ // piggy back on interrupt sei () ؛ // قم بتشغيل المقاطعات مرة أخرى

الخطوة 4: أين تضيف الرمز الخاص بك

4. أضف كود "فحص الوقت" إلى طريقة الحلقة (). انسخ والصق في حلقة ().

إذا (الوقت) {

الوقت = خطأ ؛ // افعل شيئًا هنا}

"الوقت = خطأ ؛" الخط مهم. بدون هذا السطر ، سيتم تنفيذ سطر (أسطر) "افعل شيئًا هنا" في كل مرة ينفذ فيها البرنامج loop ().

بالطبع ، يمكنك استبدال الأنشطة الخاصة بك في سطر "افعل شيئًا هنا". ابدأ بطباعة بعض النصوص أو وميض مؤشر LED.

انت انتهيت!

موصى به: