תוכן עניינים:

Arduino - הפרעה תקופתית: 4 שלבים
Arduino - הפרעה תקופתית: 4 שלבים

וִידֵאוֹ: Arduino - הפרעה תקופתית: 4 שלבים

וִידֵאוֹ: Arduino - הפרעה תקופתית: 4 שלבים
וִידֵאוֹ: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, נוֹבֶמבֶּר
Anonim
Arduino - הפרעה תקופתית
Arduino - הפרעה תקופתית

מדריך זה עוסק בשימוש בהפסקה תקופתית לתזמון בתוכניות Arduino. זהו שלב עבור מתכנת ארדואינו מתחיל, שיודע שהארדואינו יכול לעשות יותר, אבל לא ממש יודע איך לגרום לזה לקרות.

אם יש בעיה בביצועים אני מניח שאתה משתמש בפונקציית השהיה אחת (או יותר). הטריק הוא להיפטר מפונקציית השהיית () ולהחליף הפרעה. הפונקציה עיכוב () מאלצת את הארדואינו לא לעשות דבר בזמן ההמתנה להשלמת העיכוב (). שימוש בפסיקה מאפשר לתוכנית שלך לעשות דברים אחרים בזמן ההמתנה לסיום העיכוב. בדרך כלל יש כמות עצומה של זמן מת שאינו בשימוש שיכול לשמש לדברים אחרים בעת שימוש בעיכוב (). שימוש בפסיקה פותר בעיה זו.

שלב 1: הפסק מטפל

1. הוסף את מטפל ההפרעה לתוכנית שלך. פשוט העתק והדבק במקום כלשהו מעל ההתקנה ();

const לא חתום ארוך TIMER0_COUNT = 500; // מרווח טיימר של 500 אלפיות השנייה

// TIMER0 interrupt handler נדיף זמן בוול = false; ISR (TIMER0_COMPA_vect) {ספירה ארוכה חתומה סטטית = 0; אם (++ ספירה> TIMER0_COUNT) {count = 0; זמן = נכון; // הזמן מוגדר כ- true כל TIMER0_COUNT ms} // (צריך לנקות את הזמן בשגרה הראשית)}

שלב 2: הגדר מרווח זמן תקופתי

2. הגדר את מרווח הזמן. החזר השגרתי הזה חוזר לעצמו על מפסק TIMER0, שעומד לירות כל ~ 1 שניות.

ה"מרווח "שלך הוא מספר ההפסקות TIMER0 לעיבוד. כל מרווח הוא ~ 1 שניות, כך שאתה באמת קובע כמה TIMER0 מפסיקים לספור לפני הפעלת המרווח. IOW, הגדר את המשתנה TIMER0_COUNT לכל כמה מילי שניות שתרצה לחכות. לדוגמה, השתמש ב- 500 לחצי שנייה. השתמש ב- 3000 למשך 3 שניות.

שלב 3: הפסק אתחול

3. הוסף את קוד "אתחול TIMER0" לשיטת ההתקנה () שלך. שוב, פשוט העתק והדבק בהתקנה ().

// *** אתחול TIMER0 ***

cli (); // לכבות את כל ההפרעות TIMSK0 = 0; // לכבות את הטיימר 0 לרעוד נמוך OCR0A = 0xBB; // ספירת הפרעות שרירותית TIMSK0 | = _BV (OCIE0A); // חזיר בחזרה אל interrupt sei (); // הפעל שוב את ההפרעות

שלב 4: היכן להוסיף את הקוד שלך

4. הוסף את קוד "בדיקת הזמן" לשיטת הלולאה () שלך. העתק והדבק בלולאה ().

אם (זמן) {

time = false; // עשה משהו כאן}

ה- "time = false;" קו חשוב. ללא שורה זו השורה "עשה משהו כאן" תתבצע בכל פעם שהתוכנית מבצעת לולאה ().

כמובן שאתה מחליף פעילויות משלך בשורת "עשה משהו כאן". התחל בהדפסת טקסט כלשהו או בהבהב הנורית.

אתה סיימת!

מוּמלָץ: