טיימרים/מונים

ארכיטקטורה

חומרה

ניהול זכרון

סוגי מיעון

פסיקות

UART

WATCHDOG

תוכנה

טיימרים/מונים

קוצב זמן הינו מונה, הסופר דפקים המגיעים אליו בקצב קבוע, כך שלמעשה הוא מודד זמן. ההבחנות בשמות נעשית בהתאם לתפקוד של הרכיב. אם מחברים לכניסת המונה אות הנגזר משעון ה-CPU (כלומר מגיע בקצב אחיד), מתפקד הרכיב כקוצב זמן (TIMER). אם מחברים את כניסת המונה למקור חיצוני של אותות, שמייצר דפקים לא בהכרח בקצב אחיד, יתפקד הרכיב כמונה אירועים (COUNTER).

ל8031- שני מונים/קוצבי זמן, המהווים כלי עזר חשובים ביותר. כלים אלה חוסכים בתכנות של לולאות השהיה מדויקות, של דגימת אירועים באמצעות פניה לפורט ובדיקה ומשחררים את ה-CPU לביצוע משימות אחרות.

ב - 8031 שני מונים/קוצבי זמן, באורך 16 סיביות כל אחד, המתוארים סכמתית בציור הבא:

timer1.jpg

תיאור המונים/קוצבי הזמן

המונים/קוצבי זמן, נקראים TIMER0 ו-TIMER1. קוצבי הזמן מורכבים מארבעה אוגרים בני 8 סיביות במערכת האוגרים ונקראים TL0 (TIMER 0 LOW), TH0, TL1, TH1. הם תופסים את הכתובות 8AH, 8CH, 8BH ו- 8DHבהתאמה.

לקוצבי זמן אלה אפשרויות עבודה שונות ומגוונות, הנקבעות ע"י המשתמש בעזרת שני אוגרי בקרה TCON ו-TMOD. האותות באיור C/T', TR1, ו-GATE, הם יציאות של F.F הנמצאים באוגרים אלה, ונקבעים בתוכנה ע"י המשתמש.

האוגר TMOD :

TIMER0

TIMER1

M0

M1

C/T'

GATE

M0

M1

C/T'

GATE

האוגר TMOD מחולק לשני חלקים. חלק אחד מטפל ב- TIMER0 וחלק שני ב-TIMER1 .

הסיביתC/T' קובעת אם ה- TIMER יתפקד כמונה או כקוצב זמן. אם סיבית זו ב- "0", מופנים אל המונים TL ו- TH אותות המגיעים משעון ה- C.P.U ומחולקים ב- 12. זהו שימוש כקוצב זמן. אם C/T' נמצאת ב- "1", מופנה כניסת המונה לקו T0 או T1, שהם קוים חיצוניים ל- C.P.U.

אותות שיגיעו מקוים אלו יפעילו את המונים. זהו שימוש כמונה. בדרך אל המונים עוברים האותות דרך מפסק בקרה הנשלט ע"י מעגל לוגי שכניסותיו הם TR1, GATE, ו- כניסת INT .

(מתג באמצעות שער, כמובן). כאשר מפסק זה סגור, עוברים הדפקים אל המונים וה- TIMER מופעל.

הסיביות M0 ו- M1 קובעות את אופן העבודה של קוצב הזמן.

הסיבית GATE זוהי סיבית האפשור של קוצב הזמן והיא צריכה להיות ב- "1".

TR1 הוא יציאת F.F באוגר TCON,

האוגר TCON :

IT0

IE0

IT1

IE1

TR0

TF0

TR1 TF1

ארבעת הסיביות הגבוהות של אוגר ה- TCON מיועד לבקרה על אופן פעולת קוצב הזמן. ארבעת סיביותיו הנמוכות משמשות לקביעת אופן הפעולה של בקשות הפסיקה החיצוניות - האם תהיינה מסוג של דרבון קצה (Edge Triggering) או מסוג של דרבון רמה

(Level Triggering).

הסיביות IT0 ו - IT1 נקבעות בתוכנה ע"י המשתמש, בהתאם לאופן העבודה הרצוי. "1" בסיבית גורם שאותה פסיקה תהיה מסוג דרבון קצה ו- "0" גורם שאותה פסיקה תהיה מסוג של דרבון רמה.

הסיביות IE0 ו- IE1 הן למעשה ה- F . F של בקשות הפסיקה במקרה של עבודה בדרבון קצה. הן עולות ל- "1" כאשר מתקבלת בקשת פסיקה בדרבון קצה, ומתאפסות כאשר ה- C.P.U מבצע את בקשת הפסיקה. ניתן לפנות לאוגר TCON בתוכנה ולבדוק מצבן של סיביות אלה, להעלותן ל- "1" או לאפסן.

החלק הימני של TCON משמש לבקרת הפסיקות החיצוניות. הסיביות TR0 ו- TR1 משמשים להפעלה בתוכנה של קוצבי הזמן. אם סיבית TR ב- "1" מופעל קוצב הזמן בתנאי שסיבית GATE המתאימה נמצאת ב- "0".

סיבית GATE היא סיבית ב- TMOD. כאשר היא נמצאת ב- "1" ו- TR נמצאת ב- "1", משמשת כניסת הפסיקה החיצונית לבקרה על הקוצב. כאשר הכניסה ב- "0", מופעל קוצב הזמן, וכאשר היא ב- "1", מופסקת פעולתו.

כל דופק המגיע למונים TL ו- TH מקדם אותם ב- 1. כאשר הם מתמלאים ב- 1 ועוברים ל- 0 נוצרת סיבית הצפה (OVERFLOW) וזו מפעילה את ה- TF - F . F. פליפ - פלופים אלה נמצאים באוגר TCON. כאשר TF מופעל הוא יוצר בקשת פסיקה בהתאם (פסיקת TIMER0 או TIMER). בד"כ, רוצים שקוצב הזמן יספור מסוים של דפקים ואז יצור בקשת פסיקה. במקרה כזה, טוענים את המונים של קוצב זה במשלים ל- 2 של המספר הזה.

למונים של קצבי הזמן יש ארבעה אופני עבודה שונים הנקראים MODE0 - MODE3. אופנים אלה נקבעים לכל קוצב באמצעות הסיביות M0 ו- M1 שבאוגר TMOD. מלבד אופני עבודה

אלה, יש ל- TIMER1 תפקיד של אספקת אות דחיפה ל- UART שב- 8051 לקביעת קצב עבודת התקשורת הטורית.

אופני העבודה של -הTIMERS 0,1 :

M1 = 0, M0 = 0 - MODE0

באופו עבודה זה, קוצב הזמן מתפקד כמתואר בציור המתאר את המונים/קוצבי הזמן, מלבד העובדה שהמונה TL מתפקד כמונה בן 5 סיביות בלבד, והוא משמש כמחלק (PRESCALER) ב32- למונה TH.

mode1.jpg

M1 = 0, M1 = 1 - MODE1

קוצב הזמן מתפקד בדיוק כמתואר בציור המתאר את המונים/קוצבי הזמן, כאשר המונים מתפקדים כמונה בן 16 סיביות.

mode2.jpg

M1= 1, M0 = 0 - MODE2

באופן עבודה 2, משמש TL כמונה בן 8 סיביות ו-TH כ-LATCH. את TH טוענים בערך לטעינה חוזרת (RELOAD). בכל פעם שמסתיימת הספירה של המונה TL, הוא נטען אוטומטית מחדש בערך RELOAD, הנמצא ב-TH, ומתחיל שוב בריצה מאותו ערך.

mode3.jpg

M1 = 1, M0 =1 - MODE3

באופן עבודה זה מתפקדים 2 קוצבי הזמן כ3- מערכות נפרדות.

mode4.jpg

TIMER1 מתפקד כמונה/קוצב זמן, אבל יציאתו אינה לרגל בקשת פסיקה TF1. הוא משמש רק לאספקת אות קצב לתקשורת הטורית.

TIMER0 מתחלק ל2- חלקים. TL0 מתפקד כמונה/קוצב זמן המפעיל את TF0 ויוצר בקשת פסיקה בהתאם.

TH0 מתפקד כקוצב זמן בלבד המקבל בכניסתו תדר שעון מחולק ב12- ומבוקר ע"י TR1. יציאתו מפעילה אתTF1 ויוצרת בקשת פסיקה בהתאם.

הדגלים TF0 ו-TF1 יוצרים בקשת פסיקה כאשר הם עולים ל-"1", בתנאי שהיא אינה חסומה ע"י האוגר IE. עם הפניה לתכנית הפסיקה הם מאפסים בחזרה.

ניתן להשתמש בקוצבי הזמן ללא פסיקות, ע"י דגימת ובדיקת מצב הדגלים בתוכנה ואיפוסם בתוכנה.

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

אם TD יוגדר כזמן ההשהיה ו-TP כזמן של דופק המגיע לקוצב, אזי מספר הדפקים שצריך הקוצב לספור שווה ל-TD חלקי TP. המספר שצריך לטעון באוגרים יהיה המשלים ל2- של מספר זה.

תדר הדפקים המגיעים לקוצב שווה ל-Fosc/12 ומכאן ש-TP=12/Fosc.

TIMER 2 :

במעבד 8051 קיים מונה / זמנן נוסף אשר תכונותיו מקנות לו אופני עבודה שונים בהבדל מה- TIMERS הקודמים .

במונה זה קיימים 4 אופני עבודה אשר יפורטו בהמשך כאשר אופן העבודה נקבע על פי אוגר הבקרה T2CON.

אוגר הבקרה T2CON :

CP/RL2'

C/T2'

TR2

EXEN2

TCLK

RCLK

EXF2

TF2

סיבית TF2 : סיבית זו זוהי סיבית ה- OVERFLOW FLAG כלומר סיבית "ההצפה" מתי שמונה 2 סיים את הספירה סיבית זו עולה ל "1 ומבקשת בקשה לפסיקה .

סיבית זו תחזור להיות "0 רק ע"י תוכנה .היא איננה יכולה להיות "1 כאשר סיבית RCLK או

TCLK יהיו ב- "1 .

סיבית EXF2 : סיבית זו הינה דגל חיצוני של TIMER 2 סיבית זו עולה ל '1' במצב שבו סיבית EXEN2 ='1' ורגל T2EX של המעבד בירידה, דגל זה עולה ל'1' וניגש לפסיקה של TIMER 2 במצב זה. על המתכנת לדאוג להוריד סיבית זו ל'0' לאחר ביצוע הפסיקה.

סיבית RCLK : סיבית קבלת אישור פולסי השעון . במצב שבו סיבית זו ב "1 אז המוצא הטורי משמש כפולסים לסיבת הגלישה של TIMER 2 באופני עבודה 1 ו 3 , כאשר רגל זו שווה ל "0 אז סיבי ת הגלישה של TIMER 1 משמשת לקבלת פולסי השעון .

סיביתTCLK : העברת אפשור השעון . במצב שבו סיבית זו ב- '1' אז תדר השידור זהו התדר של ה- OVERFLOW של TIMER 2. במצב שבו סיבית זו ב- '0' אז תדר השידור זהו התדר של ה- OVERFLOW של TIMER 1.

סיבית EXEN2 : אפשור חיצוני ל TIMER 2 במצב שבו סיבית זו נמצאת ב'0' אז המעבד מתעלם מהשינויים ברגל T2EX.

סיבית TR2 : סיבית התחלה / סיום של TIMER 2 . "1 מתחיל את הספירה .

סיבית C / T2': סיבית בחירת מונה או זמנן "0 זמנן , "1 מונה חיצוני .

סיבית CP / RL2' : סיבית זו משמשת לבחירת אופן עבודה Capture ע"י '1'או Reload ע"י '0'.

אופני העבודה השונים נקבעים בצורה הבאה :

RCLK+TCLK

CP/RL2'

TR2

MODE

0

0

1

16 bit Auto Reload

0

1

1

bit Capture 16

1

x

1

Baud Rate Generator

x

x

0

OFF

AUTO RELOAD :

מונה 16 bits מעלה / מטה בעל טעינה אוטומטית . הספירה מעלה מטה נקבעת ע"פ הסיבית

DCEN ( Down Counter Enable ) שבאוגר T2MOD אם הוא "0 הוא אוטומטית סופר כלפי מעלה. במצב זה יתכנו שתי אופציות אשר תלויות בסיבית EXEN2 שנמצאת באוגר T2CON אם סיבית זו שווה ל "0 אז המונה יספור כלפי מעלה עד שיגיע ל 0FFFFH יגרום לעליה של סיבית "ההצפה" TF2 כאשר טעינת המספר ההתחלתי תתבצע בתוכנה .

במידה והסיבית EXEN2 תהיה שווה ל "1 אז תתבצע טעינה מחדש של 16 bit ע"י סיבית הגלישה או באמצעות הפין החיצוני T2EX שיהיה ב "1 לאחר סיום הספירה תתבצע טעינה מחדש של המספר .

CAPTURE MODE :

באופן עבודה זה ישנן שתי אופציות עבודה אשר תלויות בסיבית ה - EXEN2 שבאוגר T2CON .

במצב שבו סיבית זו נמצאת ב "0 TIMER 2 ישמש כמונה / זמנן וכאשר יסיים את פעולתו יעלה את סיבית הגלישה ל "1 .

במידה וסיבית EXEN2 תיהיה ל "1 המונה יבצע את אותה פעולה אך בירידה מ '1' ל- '0' ברגל T2EX הערך שב- TH2 וב- TL2 יעבור ל RCAP2H ו- RCAP2L במקביל הסיבית EXF2 באוגר T2CON תעלה ל '1'.

BAUD RATE GENERATOR :

אופן עבודה שבו אנו מקבלים אות שעון למערכות עבודה פנימיות או חיצוניות של המעבד.

Valid HTML 4.01!