08-02-2010, 21:38
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
בעזרת פסיקה חיצונית לבקר ניתן להורות למעבד להריץ קוד מסוים.
לדוגמא, במצב ברירת המחדל של התוכנית, המעבד מקיים לולאה אינסופית שמודדת טמפ' ומציגה את התוצאה על המסך.
כשמתקבלת פסיקה מרגל חיצונית (כלומר כשמתקבל אות בעל עיצוב ספציפי* המוגדר מראש) ל-"רגל פסיקה", המעבד לא ימשיך להריץ את הקוד הבא, ויקפוץ לכתובת מסוימת בזיכרון וימשיך להריץ מכתובת זו את התוכנית. אך לפני שיקפוץ לכתובת, הוא ישמור את ערך האוגר PC במחסנית על מנת שבחזרה מהפסיקה יידע איפה התוכנית עצרה.
* אות בעל עיצוב ספציפי - ניתן להגדיר את אות דירבון הפסיקה כ: נפילת\עליית קצה, או לפי רמת מתח של '1' או '0' לוגי.
"רגל פסיקה" - רגל שבנויה באופן כזה, שכאשר היא מקבלת אות בעל עיצוב ספציפי, היא מורה למעבד לשמור את ערך האוגר PC למחסנית, ומכניסה לאוגר PC כתובת חדשה וסטטית. באופן זה המעבד ירוץ מהכתובת החדשה שהוקצאה לאוגר PC.
ציטוט:
האם אני יכול פשוט ליצור פונקציה שתמיד תבדוק מה מצב P2 לדוגמא ותתריעה על שינוי בו?
|
אפשרי, אבל לא נהוג לעשות, כי כך אתה מבזבז זמן על בדיקות מיותרות. לדעתי זה טבעי יותר להיעזר ב-ISR (ר"ת Interrupt Service Routine; במילים אחרות: פונקציה שמתבצעת כאשר מתקבלת פסיקה).
ציטוט:
או שאני צריך לחבר את הקווים לרגל הפסיקה החיצונית (בעזרת שער NOR עם מספר כניסות)
ובעזרת פונקצית פסיקה ללכת חזרה לקווים ולבדוק מי מהם שונה?
|
אני לא יודע אם צריך שער NOR או OR כי זה תלוי מה הקוים האלו מוציאים במצב פעיל (מצב שדורש פסיקה), אבל כן זו הדרך
הרעיון הכללי הוא:
לחבר את כל הקווים שגורמים לפסיקה אל רגל הפסיקה דרך שער NOR או OR.
ולחבר את כל הקווים אל אחד הפורטים: או דרך מקודד אם אפשרי (ובכך להקטין את כמות הקווים), או כל קו לחבר לכל רגל i/o.
|