UART

ארכיטקטורה

חומרה

ניהול זכרון

סוגי מיעון

פסיקות

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

WATCHDOG

תוכנה

UART

UNIVERSAL ASYNCHRONOUS RECEIVER TRANSMITTER

8051 UART

ה-UART הפנימי של המיקרו-מעבד 8051 הוא רכיב הניתן לתכנות. לצורך עבודתו הוא נעזר בשני אוגרי SCON ו-SBUF. יש לכתוב ל-SCON מילת בקרה, לפני תחילת עבודת ה-UART. האוגר SBUF מכיל למעשה שני אוגרים נפרדים הנמצאים באותו מיעון. כאשר כותבים מידע ב-SBUF לשם שידור, מגיע מידע זה לאוגר המכונה TX DATA. כאשר קוראים מידע מה-SBUF מגיע מידע זה (שנקלט קודם בתקשורת טורית) מאוגר המכונה RX DATA.

לצורך הפעלת ה-UART צריך ליצור לו גל ריבועי (CLOCK) בהתאם לקצב התקשורת הנדרש. בכל דופק שעון מבצע ה-UART פעולה מסוימת, לכן חייב תדר השעון להיות גבוה מתדר השידור והקליטה, כדי שה-UART יוכל לבצע מספר פעולות בין סיבית אחת לשניה. מקובל תדר שעון פי 16 מתדר התקשורת.

תדירות האות ל-UART מתקבלת מחלוקה של תדירות שעון ה-CPU. תדירות זו מחולקת בשניים למעשה. תדירות שעון ה-UART היא בהתאם לקצב התקשורת הנדרש BAUD ותהיה לפי הנוסחה הבאה :

uart1.jpg

תדירות שעון ה-UART = 2 * 16 * BAUD

כדי ליצור תדירות זו משתמשים ב-TIMER1, שיציאתו מחוברת ל-UART כמחולל שעון. מתכנתים את קוצב הזמן לעבודה במצב של AUTO RELOAD. טוענים את קוצב הזמן בערך ראשוני, שיגרום לו ליצור את תדירות שעון ה-UART.

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

הערה : ה-RELOAD VALUE חייב להיות מספר שלם.

ה-RELOAD VALUE חייב להיות מספר שלם, לצורך כך בוחרים גביש בתדר מתאים.

את ערך ה- RELOAD VALUEממירים לבסיס 16 ולאחר מכן לבסיס 2, ומבצעים משלים ל2- על המספר הבינארי שהתקבל. ממירים את המספר שהתקבל במשלים ל2- לבסיס 16 ואח"כ לבסיס עשרוני, וזהו המספר שצריך לטעון לאוגר TH1 (בשימוש בטיימר 1) על מנת לקבל את קצב תקשורת הנדרש (Baud Rate). אוגר TL1 מקבל את הערך 0.

לאחר אתחול קוצב הזמן וה-UART, מתחיל ה-UART בשידור ובקליטה. בזמן שידור, משדר ה-UART את סיביות המידע, כל אחת במשך 16 דפקי שעון. בזמן קליטה, ברגע שמזהה ה-UART ירידת הקו ל-"0", הוא ממתין 8 מחזורי שעון ומבצע דגימה נוספת לשם אימות. לאחר מכן סופר 16 מחזורי שעון נוספים ואוסף את סיבית המידע.

למעשה, סיבית המידע מתקבלת בצורה הבאה: ה-UART דוגם את הקו שלוש פעמים, בירידת השעון בדופק השביעי, השמיני והתשיעי של סיבית המידע. ההחלטה לגבי ערך הסיבית היא "החלטת הרוב". אם בשתי דגימות ערך הדגימה הוא "0", מוכנס "0" לאוגר ההזזה ולהפך. שיטה זו מגדילה במידה ניכרת את אמינות הקליטה.

ה-UART מייצא אוטומטית בכל שידור תו סיבית התחלה וסיבית סיום אחת. לאחר סיבית ההתחלה הוא משדר את שמונה הסיביות הנמצאות ב-SBUF. הסיבית השמינית יכולה לשמש כסיבית מידע, כסיבית זוגיות, ניתן לאלץ בה "0" (כנדרש ע"י מספר סוגים של התקנים היקפיים) או כסיבית סיום נוספת, כאשר נדרשות שתי סיביות סיום. אופן השימוש בה נקבע בתוכנה.

לעתים נדרשת עבודה עם תשע סיביות מידע. כמו למשל בפרוייקט או במקרה בו יש שמונה סיביות מידע והסיבית התשיעית צריכה לשמש כסיבית זוגיות או סיבית סיום נוספת. ב-UART של ה8751- ניתן לבצע זאת. במקרה כזה, לאחר שידור שמונה סיביות ה-SBUF, משודרת הסיבית התשיעית מהאוגר SCON. בצורה דומה מתבצעת הקליטה.

המושג "SET/CLEARED BY HARDWARE ", מסמן שתוכן סיבית זו משתנה ע"י הרכיב עצמו. ניתן לקרוא סיבית זו ולבדוק בתוכנה את מצבה.

R1

T1

RB8

TB8

REN

SM2

SM1

SM0

תיאור האוגר SCON

סיביות 6 ו7- שבאוגר SCON המכונות SM0 ו-SM1, קובעות את אופן העבודה של ה-UART. במצב 00 ה-SBUF אינו נתפקד כ-UART, אלא כאוגר הזזה בלבד.

במצב 01, מקבלים UART של 8 סיביות בעל קצב שידור/קליטה משתנה. במצב 10, מקבלים UART של 9 סיביות בעל קצב שידור/קליטה קבוע. במצב 11, מקבלים UART של 9 סיביות בעל קצב שידור/קליטה.

בקצב שידור/קליטה משתנה, הכוונה שקצב התקשורת ניתן לקביעה ע"י המשתמש כמתואר לעיל. זה מתקיים ב-MODE1 וב-MODE3. ב-MODE0 (SM1,SM2 = 0,0), מחובר ל-UART גל ריבועי בקצב קבוע של תדר הגביש מחולק ב12-. ב-MODE2 ניזון ה-UART משעון בתדר הגביש מחולק ב64-, ואין למשתמש אפשרות לשנותו.

ניתן לכפול את קצב העבודה של ה-UART אם סיבית 7 שבאוגר PCON תהיה "1". סיבית זו אינה ניתנת למעון ישיר, ולכן יש להשתמש בכתובת של האוגר PCON שהיא 87H ב-RAM הפנימי.

סיבית 5 (SM2) שייכת לאופן עבודה סינכרוני של ה-UART.

סיבית 4 (REN) היא סיבית אפשור הקליטה. במצב "1" שלה יתחיל ה-UART לקלוט מידע וימלא את ה-SBUF. כאשר ה-SBUF מתמלא עולה סיבית 0 (RI) ל-"1". אם הפסיקה הטורית מאופשרת, אזי מתקבלת גם בקשת פסיקה.

סיבית 3 (TB8) היא הסיבית התשיעית (הספירה מתחילה מ-TB0) המשודרת במצב עבודה של UART 9 סיביות.

סיבית 2 (RB8) היא הסיבית התשיעית הנקלטת ב-UART במצב עבודה של 9 סיביות.

סיבית 1 היא סיבית TI העולה ל-"1" כאשר ה-UART מסיים לשדר את המידע הנמצא ב-SBUF והמיועד לשידור. אם הפסיקה הטורית מאופשרת, אזי מתקבלת גם בקשת פסיקה.

סיבית 0 היא סיבית RI העולה ל-"1" כאשר התקבל נתון ל-SBUF.

Valid HTML 4.01!