MCU הוא קיצור של מיקרו-בקר בסינית, הידוע בכינויו מיקרו-מחשב בעל שבב יחיד, נועד להפחית כראוי את התדירות והמפרטים של המעבד, ולשלב ממשקים היקפיים כגון זיכרון, מונה, USB, המרת A/D, UART, PLC, DMA ואפילו מעגלי דרייבר LCD על שבב יחיד ליצירת מחשב ברמת שבב. הוא יכול לבצע שילובי בקרה שונים עבור יישומים שונים, כגון טלפונים ניידים, ציוד היקפי למחשבים, שלטים רחוקים, אלקטרוניקה לרכב, מנועי צעד תעשייתיים ובקרת זרוע רובוטית. ניתן לראות את ה-MCU באיור.
אחד
היסטוריה קצרה של פיתוח מיקרו-בקרים
ההיסטוריה של המיקרו-בקרים אינה ארוכה, אך הם התפתחו במהירות רבה. ייצורם ופיתוחם מסונכרנים בדרך כלל עם ייצורם ופיתוחם של מיקרו-מעבדים (CPU). מאז שחברת אינטל בארצות הברית השיקה לראשונה מיקרו-מעבד בעל 4 סיביות בשנת 1971, ניתן לחלק את התפתחותו עד כה באופן גס לחמישה שלבים. להלן מבוא לפיתוח המיקרו-בקרים של חברת אינטל.
1971 ~ 1976
השלב הראשוני בפיתוח מיקרו-בקרים. בנובמבר 1971, אינטל תכננה לראשונה את Intel 4004, מיקרו-מעבד 4-סיביות עם שילוב של 2,000 טרנזיסטורים/שבב, המצויד ב-RAM, ROM ו-shift register, ויצרה את המיקרו-מעבד MCS-4 הראשון. לאחר מכן היא השיקה את המיקרו-מעבד 8-סיביות Intel 8008, ומעבדי 8-סיביות אחרים שהושקו על ידי חברות אחרות.
1976 ~ 1980
שלב מיקרו-בקר בעל ביצועים נמוכים. סדרת MCS-48 שהושקה על ידי אינטל בשנת 1976, משתמשת במבנה מונוליטי המשלב מעבד של 8 סיביות, ממשק קלט/פלט מקבילי של 8 סיביות, טיימר/מונה של 8 סיביות, זיכרון RAM ו-ROM על גבי שבב מוליך למחצה. למרות שטווח הכתובות שלו מוגבל (לא יותר מ-4 KB), אין קלט/פלט טורי, קיבולת ה-RAM וה-ROM קטנה, ומערכת הפסיקות פשוטה יחסית, אך תפקודיו יכולים לענות על הצרכים של בקרה תעשייתית כללית ומכשירים ומדי חשמל חכמים.
1980 ~ 1983
שלב מיקרו-בקר בעל ביצועים גבוהים. מיקרו-בקרים בעלי ביצועים גבוהים של 8 סיביות שהושקו בשלב זה כוללים בדרך כלל יציאות טוריות, מערכות עיבוד פסיקות מרובות רמות, וטיימרים/מונים מרובים של 16 סיביות. קיבולת ה-RAM וה-ROM המובנים גדלה, וטווח הכתובות יכול להגיע ל-64 KB. לחלק מהשבבים יש גם ממשק המרה A/D.
1983~סוף שנות ה-1980
שלב מיקרו-בקר 16 סיביות. בשנת 1983, השיקה אינטל את סדרת מיקרו-בקר ה-MCS-96 בעלת הביצועים הגבוהים של 16 סיביות. הודות לאימוץ טכנולוגיית הייצור העדכנית ביותר, רמת שילוב השבבים מגיעה עד ל-120,000 טרנזיסטורים/שבב.
1990s
מיקרו-בקרים מתפתחים לרמה גבוהה יותר בכל היבטי האינטגרציה, הפונקציונליות, המהירות, האמינות ותחומי היישומים.
שתיים
סיווג ויישום של מיקרו-מחשב יחיד
ניתן לחלק מיקרו-בקרים לשני סוגים לפי סוגי הזיכרון שלהם: כאלה ללא ROM על השבב וכאלה עם ROM על השבב. עבור שבבים ללא ROM על השבב, יש לחבר EPROM חיצוני לפני שניתן להשתמש בהם (בדרך כלל 8031); שבבים עם ROM על השבב מחולקים לסוג EPROM על השבב (שבב טיפוסי הוא 87C51), סוג ROM MASK על השבב עם מסכת שבב (שבב טיפוסי הוא 8051), סוג פלאש על השבב (שבב טיפוסי הוא 89C51) וסוגים אחרים.
בהתאם למטרה, ניתן לחלק אותו לסוגים לשימוש כללי ולמטרה מיוחדת; בהתאם לרוחב אפיק הנתונים ואורך בתים של נתונים שניתן לעבד בו זמנית, ניתן לחלק אותו ל-MCU של 8, 16 ו-32 סיביות.
נכון לעכשיו, שוק יישומי המיקרו-בקרים המקומי הנרחב ביותר הוא בתחום האלקטרוניקה הצרכנית, ואחריו התחום התעשייתי ושוק האלקטרוניקה לרכב. מוצרי אלקטרוניקה צרכנית כוללים מכשירי חשמל ביתיים, טלוויזיות, קונסולות משחקים, מערכות שמע ווידאו ועוד. תחומים תעשייתיים כוללים בתים חכמים, אוטומציה, יישומים רפואיים וייצור וחלוקת אנרגיה חדשים. תחום הרכב כולל מערכות הנעה ובטיחות לרכב.
שְׁלוֹשָׁה
פונקציות בסיסיות של מיקרו-בקר
עבור רוב המיקרו-בקרים, הפונקציות הבאות הן הנפוצות והבסיסיות ביותר. עבור מיקרו-בקרים שונים, אופן התיאור שלהן עשוי להיות שונה, אך הן זהות במהותן:
1. טיימר (TImer): למרות שקיימים סוגים רבים של טיימרים, ניתן לסכם אותם לשתי קטגוריות: סוג אחד הוא טיימר עם מרווחי זמן קבועים, כלומר, זמן התזמון נקבע על ידי המערכת ואינו ניתן לשליטה על ידי תוכנית המשתמש. המערכת מספקת רק מספר מרווחי זמן קבועים לבחירת תוכנית המשתמש, כגון 32 הרץ, 16 הרץ, 8 הרץ וכו'. סוג זה של טיימר נפוץ יותר ב-MCUs של 4 סיביות, כך שניתן להשתמש בו כדי ליישם שעון, תזמון ופונקציות קשורות אחרות.
הסוג השני הוא טיימר ניתן לתכנות. כפי שהשם מרמז, ניתן לשלוט על זמן התזמון של טיימר מסוג זה על ידי התוכנית של המשתמש. שיטות הבקרה כוללות: בחירת מקור שעון, בחירת חלוקת תדר (Prescale) וקביעת מספר מוגדר מראש. בחלק מה-MCU יש את שלושתם בו זמנית, בעוד שאחרים עשויים לכלול אחד או שניים מהם. יישום טיימר מסוג זה גמיש מאוד, והשימוש בפועל בו משתנה ללא הרף. אחד היישומים הנפוצים ביותר הוא השימוש בו כדי ליישם פלט PWM.
מכיוון שניתן לבחור באופן חופשי את מקור השעון, טיימר מסוג זה משולב בדרך כלל עם מונה האירועים.
2. יציאות IO: לכל מיקרו-בקר יש מספר מסוים של יציאות IO. ללא יציאות IO, המיקרו-בקר מאבד את הערוץ לתקשורת עם העולם החיצון. בהתאם לתכונות התצורה של יציאת ה-IO, ניתן לחלק אותה לסוגים הבאים:
יציאת קלט טהור או פלט טהור: סוג זה של יציאת IO נקבע על ידי תכנון החומרה של המיקרו-בקר. היא יכולה לשמש רק כקלט או פלט, ותוכנה אינה יכולה לשמש להגדרות בזמן אמת.
קריאה וכתיבה ישירה של פורטי IO: לדוגמה, פורט ה-IO של MCS-51 שייך לסוג זה של פורט IO. כאשר הוראת קריאת IO מבוצעת, הוא מהווה פורט קלט; כאשר הוראת כתיבת IO מבוצעת, הוא מהווה אוטומטית פורט פלט.
תכנות לקביעת כיוון הקלט והפלט: הקלט או הפלט של יציאת IO מסוג זה מוגדרים על ידי התוכנית בהתאם לצרכים בפועל. היישום גמיש יחסית ויכול לממש כמה יישומים ברמת האפיק, כגון אפיק I2C, LCD שונים, אפיקי בקרה של דרייברים של LED וכו'.
עבור השימוש ביציאות IO, נקודה חשובה שיש לזכור היא: עבור יציאת הקלט, חייב להיות אות רמה ברור כדי להבטיח שהוא לא יוכל לצוף (ניתן להשיג זאת על ידי הוספת נגד Pull-Up או Pull-Down); עבור יציאת הפלט, רמת סטטוס הפלט חייבת להתחשב בתנאי החיבור החיצוניים שלה, ויש לוודא שאין משיכה או שקיעה של הזרם במצב המתנה או סטטי.
3. פסיקה חיצונית: פסיקה חיצונית היא גם פונקציה בסיסית של רוב המיקרו-בקרים. היא משמשת בדרך כלל להפעלת אותות בזמן אמת, דגימת נתונים וזיהוי סטטוס. שיטות הפסיקה כוללות הפעלת קצה עולה, הפעלת קצה יורדת והפעלת רמה. פסיקות חיצוניות מיושמות בדרך כלל דרך יציאות קלט. אם מדובר ביציאת IO, פונקציית הפסיקה שלה תופעל רק כאשר היא מוגדרת כקלט; אם מדובר ביציאת פלט, פונקציית הפסיקה החיצונית תכבה אוטומטית (ישנם כמה יוצאים מן הכלל בסדרת ATiny של ATMEL, שיכולה גם להפעיל את פונקציית הפסיקה כאשר היא יציאת פלט). היישומים של פסיקות חיצוניות הם כדלקמן:
זיהוי אותות טריגר חיצוניים: האחד מבוסס על דרישות בזמן אמת, כגון בקרת תיריסטורים, זיהוי אותות פתאומיים וכו', בעוד שהשני הוא הצורך לחסוך בחשמל.
מדידת תדר האות: על מנת להבטיח שהאות לא יופספס, פסיקה חיצונית היא הבחירה האידיאלית.
פענוח נתונים: בתחום יישומי שלט רחוק, על מנת להפחית את עלות התכנון, לעתים קרובות יש צורך להשתמש בתוכנה לפענוח נתונים מקודדים שונים, כגון פענוח קידוד מנצ'סטר וקידוד PWM.
זיהוי מקשים והעיר את המערכת: עבור מיקרו-בקרים (MCUs) שנכנסים למצב שינה, בדרך כלל יש צורך להעיר אותם באמצעות הפרעות חיצוניות. הצורה הבסיסית ביותר היא לחיצת מקש, אשר מייצרת שינויי רמה באמצעות פעולת המקש.
4. ממשק תקשורת: ממשק התקשורת המסופק על ידי מיקרו-בקר כולל בדרך כלל ממשק SPI, UART, ממשק I2C וכו', המתוארים כדלקמן:
ממשק SPI: סוג זה של ממשק הוא שיטת התקשורת הבסיסית ביותר המסופקת על ידי רוב המיקרו-בקרים. העברת הנתונים שלו נשלטת על ידי שעון סינכרוני. האותות כוללים: SDI (קלט נתונים טורי), SDO (פלט נתונים טורי), SCLK (שעון טורי) ואות Ready; במקרים מסוימים, ייתכן שלא יהיה אות Ready; סוג זה של ממשק יכול לעבוד במצב Master או במצב Slave. במילים פופולריות, זה תלוי במי שמספק את אות השעון. הצד המספק את השעון הוא Master, והצד הנגדי הוא Slave.
UART (Universal Asynchronous Receive Transmit): זהו ממשק השידור האסינכרוני הבסיסי ביותר. יש לו רק שני קווי אות, Rx ו-Tx. פורמט הנתונים הבסיסי הוא: ביט התחלה + ביט נתונים (7/8 ביט) + ביט זוגיות (זוגי, אי-זוגי או ללא) + ביט עצירה (1~2 ביט). הזמן שתופס ביט נתונים אחד נקרא קצב באוד.
עבור רוב המיקרו-בקרים, ניתן להגדיר באופן גמיש את אורך ביטים הנתונים, מצב בדיקת הנתונים (בדיקה אי-זוגית, בדיקה זוגית או ללא בדיקה), אורך ביטים עצירה וקצב באוד באמצעות תכנות תוכנה. השיטה הנפוצה ביותר של ממשק מסוג זה היא לתקשר עם היציאה הטורית של מחשב.
ממשק I2C: I2C הוא פרוטוקול העברת נתונים שפותח על ידי פיליפס. הוא מיושם גם באמצעות שני אותות: SDAT (קלט ופלט נתונים טוריים) ו-SCLK (שעון טורי). היתרון הגדול ביותר שלו הוא שניתן לחבר מספר התקנים לאפיק זה ולזהות אותם ולגשת אליהם דרך כתובות; אחד היתרונות הגדולים ביותר של אפיק I2C הוא שנוח מאוד להשתמש בתוכנה כדי ליישם אותו דרך יציאת ה-IO. קצב העברת הנתונים שלו נשלט לחלוטין על ידי SCLK, שיכול להיות מהיר או איטי, בניגוד לממשק UART, שיש לו דרישות קצב מחמירות.
5. שעון שמירה (טיימר שעון שמירה): שעון שמירה הוא גם תצורה בסיסית של רוב המיקרו-בקרים (חלק ממיקרו-בקרים של 4 סיביות עשויים שלא לכלול פונקציה זו). שעון השמירה של רוב המיקרו-בקרים יכול רק לאפשר לתוכנית לאפס אותו אך לא לכבות אותו (חלקם מוגדרים כאשר התוכנית נצרבת, כגון מיקרו-בקרים מסדרת PIC של מיקרו-צ'יפ), וחלק מהמיקרו-בקרים משתמשים בשיטה ספציפית כדי להחליט אם להפעיל אותו, כגון סדרת KS57 של סמסונג. כל עוד התוכנית ניגשת לאוגר שעון השמירה, היא נדלקת אוטומטית ולא ניתן לכבות אותה שוב. באופן כללי, ניתן להגדיר את זמן האיפוס של שעון השמירה באופן תכנותי. היישום הבסיסי ביותר של שעון שמירה הוא לספק יכולת שחזור עצמי עבור מיקרו-בקרים שקורסים עקב כשלים בלתי צפויים.
ארבע
יצרן מיקרו-בקרים מרכזי עולמי
(מדורג ללא סדר מסוים, מאורגן לפי יצרנים מרכזיים. אם חסר משהו, אנא הוסיפו אותו באזור התגובות)
אירופה ואמריקה
1. Freescale+NXP (Freescale+NXP): הולנד, מספקת בעיקר מיקרו-בקרים (MCU) של 16 סיביות ו-32 סיביות. יישומים: אלקטרוניקה לרכב, תאורת LED ותאורה כללית, שירותי בריאות, התכנסות מולטימדיה, מכשירי חשמל ביתיים וכלי עבודה חשמליים, טכנולוגיית אוטומציה של מבנים, בקרת מנועים, ספקי כוח וממירי כוח, אנרגיה ורשתות חכמות, אוטומציה, תשתיות מחשבים ותקשורת.
2. Microchip+Atmel (Microchip Technology + Atmel): ארצות הברית מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. יישומים: אלקטרוניקה לרכב, שימוש תעשייתי, בקרת מנועים, כלי רכב, אוטומציה של מבנים, מכשירי חשמל ביתיים, בידור ביתי, אוטומציה תעשייתית, תאורה, האינטרנט של הדברים, אנרגיה חכמה, ציוד אלקטרוני נייד, ציוד היקפי למחשב.
3. Cypress+Spansion (Cypress + Spansion Semiconductor): ארצות הברית מספקת בעיקר מיקרו-בקרים של 8 סיביות, 16 סיביות ו-32 סיביות. יישומים: אלקטרוניקה לרכב, מכשירי חשמל ביתיים, רפואה, מוצרי צריכה אלקטרוניים, תקשורת ותקשורת, תעשייה, אלחוטי.
4. ADI (התקנים אנלוגיים): ארצות הברית, מספקת בעיקר מיקרו-בקרים של 8 סיביות, 16 סיביות ו-32 סיביות. יישומים: תעופה וחלל וביטחון, יישומי רכב, טכנולוגיית בנייה, תקשורת, מוצרי אלקטרוניקה, אנרגיה, שירותי בריאות, מכשור ומדידה, מנועים, אוטומציה תעשייתית, אבטחה.
5. אינפיניון: גרמניה, מספקת בעיקר מיקרו-בקרים (MCU) של 16 סיביות ו-32 סיביות. יישומים: אלקטרוניקה לרכב, מוצרי אלקטרוניקה, הנדסה, כלי רכב מסחריים וחקלאיים, עיבוד נתונים, תחבורה חשמלית, יישומים תעשייתיים, ציוד רפואי, ציוד נייד, בקרת מנוע והנעה, אספקת חשמל, לאופנועים, אופניים חשמליים וכלי רכב חשמליים קטנים, רשתות חכמות, תאורה, פתרונות למערכות סולאריות, פתרונות למערכות אנרגיית רוח.
6. ST Microelectronics: איטליה/צרפת, מספקת בעיקר מיקרו-בקר של 32 סיביות. יישומים: תאורת LED ותאורה כללית, תחבורה, שירותי בריאות, התכנסות מולטימדיה, מכשירי חשמל ביתיים וכלי עבודה חשמליים, טכנולוגיית אוטומציה של מבנים, בקרת מנועים, ספקי כוח וממירי חשמל, אנרגיה ורשתות חכמות, אוטומציה, תשתיות מחשבים ותקשורת.
7. קוואלקום: ארצות הברית, מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. יישומים: טלפונים חכמים, טאבלטים, מודמים אלחוטיים.
8. טקסס אינסטרומנטס: ארצות הברית, מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. היקף היישום: אלקטרוניקה לרכב, מוצרי אלקטרוניקה, ציוד רפואי, מכשירים ניידים, תקשורת.
9. מקסים (Maxim): ארצות הברית, מספקת בעיקר מיקרו-בקר של 32 סיביות. היקף היישום: אלקטרוניקה לרכב, מוצרי אלקטרוניקה לצרכן, יישומים תעשייתיים, אבטחה.
יפן ודרום קוריאה
1. רנסאס: יפן, מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. היקף היישום: מחשבים וציוד היקפי, מוצרי אלקטרוניקה, מוצרי אלקטרוניקה רפואיים ובריאותיים, מוצרי אלקטרוניקה לרכב, תעשייה ותקשורת.
2. טושיבה: יפן, מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. היקף היישום: אלקטרוניקה לרכב, שימוש תעשייתי, בקרת מנועים, תקשורת אלחוטית, טלפונים ניידים, מחשבים וציוד היקפי, הדמיה, אודיו ווידאו, צרכנות (מכשירי חשמל ביתיים), תאורת LED, אבטחה, ניהול צריכת חשמל, ציוד בידור.
3. פוג'יטסו: יפן, מספקת בעיקר מיקרו-בקר של 32 סיביות. היקף היישום: רכב, רפואה, מכונות, מכשירי חשמל ביתיים.
4. סמסונג אלקטרוניקה: דרום קוריאה, מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. יישומים: אלקטרוניקה לרכב, שימוש תעשייתי, בקרת מנועים, כלי רכב, אוטומציה של מבנים, מכשירי חשמל ביתיים, בידור ביתי, אוטומציה תעשייתית, תאורה, האינטרנט של הדברים, אנרגיה חכמה, ציוד אלקטרוני נייד, ציוד היקפי למחשב.
אזור סין
בסין
1. Sigma Microelectronics: מספקת בעיקר מיקרו-בקר של 32 סיביות, היקף יישום: טלקומוניקציה, ייצור, אנרגיה, תחבורה, חשמל וכו'.
2. Zhuhai Orbit: מספק בעיקר מיקרו-בקר 32-bit, היקף יישום: תעופה וחלל: תחנות לוויין ספינות, מטוסים; בקרה תעשייתית מתקדמת: מחשבים משובצים; בקרת ספינות, בקרה תעשייתית, ציוד חשמל, ניטור סביבתי.
3. חדשנות GigaDevice: מספקת בעיקר מיקרו-בקר 32-bit, היקף יישום: אוטומציה תעשייתית, ממשק אדם-מכונה, בקרת מנוע, ניטור אבטחה, בית חכם, האינטרנט של הדברים.
4. Shengsi Microelectronics: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-32 סיביות. היקף היישום: מכשירי חשמל ביתיים קטנים, מוצרי אלקטרוניקה, שלטים רחוקים, עכברים, סוללות ליתיום, מוצרים דיגיטליים, אלקטרוניקה לרכב, מכשירים רפואיים ומדידה, צעצועים, בקרה תעשייתית, בית חכם ואבטחה ותחומים אחרים.
5. טכנולוגיית Chipsea: מספקת בעיקר מיקרו-בקרים של 16 ו-32 סיביות. היקף היישום: מכשור, האינטרנט של הדברים, מוצרי אלקטרוניקה, מכשירי חשמל ביתיים ואלקטרוניקה לרכב.
6. מעגל משולב Lianhua: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: מוצרי אלקטרוניקה צרכנית, מכשירי חשמל ביתיים לבנים, בקרה תעשייתית, ציוד תקשורת, מוצרי אלקטרוניקה לרכב ומחשבים.
7. ג'והאי ג'יאנרונג: מספק בעיקר מיקרו-בקר 8-bit, היקף יישום: מכשירי חשמל ביתיים, ספקי כוח ניידים.
8. טכנולוגיית פעולות: מספקת בעיקר מיקרו-בקרים מ-8 סיביות עד 32 סיביות, מגוון יישומים: מחשבי לוח, בית חכם, מולטימדיה, Bluetooth, אודיו wifi.
9. Aisco Microelectronics: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: שבבי צריכה, שבבי תקשורת, שבבי מידע ומכשירי חשמל ביתיים.
10. Huaxin Microelectronics: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-4 סיביות. יישומים: מקלטי לוויין, מטענים לטלפונים ניידים, לוחות שנה תמידיים ושלטים מרחוק הכל-באחד.
11. Shanghai Belling (Huada Semiconductor Holdings): מספקת בעיקר מיקרו-בקרים של 8 סיביות, 16 סיביות ו-32 סיביות. יישומים: ציוד היקפי למחשב, טלוויזיות HD, ניהול צריכת חשמל, מכשירי חשמל קטנים ומכשירים דיגיטליים.
12. מעגלים משולבים של Haier: מספקת בעיקר מיקרו-בקרים של 14 סיביות, 15 סיביות ו-16 סיביות. היקף היישום: מוצרי אלקטרוניקה צרכנית, מוצרי אלקטרוניקה לרכב, תעשייה ומכשירים חכמים.
13. בייג'ינג Ingenic: מספקת בעיקר מיקרו-בקר של 32 סיביות, היקף יישום: מכשירים לבישים, האינטרנט של הדברים, מכשירי חשמל ביתיים חכמים, מכוניות, מוצרי אלקטרוניקה, מחשבי טאבלט.
14. מיקרואלקטרוניקה של סין: מספקת בעיקר מיקרו-בקרים של 8 סיביות. יישומים: מכשירי חשמל ביתיים חכמים, אלקטרוניקה לרכב, ניטור אבטחה, תאורת LED ונוף, צעצועים חכמים, בתים חכמים ואלקטרוניקה צרכנית.
15. מעגל משולב שנז'ואו לונגסון: מספק בעיקר מיקרו-בקר 32 סיביות, היקף יישום: ניטור צריכת חשמל, רשת חכמה, בקרה דיגיטלית תעשייתית, האינטרנט של הדברים, בית חכם, ניטור נתונים.
16. זיגואנג מיקרואלקטרוניקה: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: מכשירי חשמל ביתיים חכמים.
17. טיימס מינקסין: מספק בעיקר מיקרו-בקר של 32 סיביות, היקף יישום: ניווט לרכב, ניטור תנועה, פיקוח על כלי דיג, רשת תקשורת חשמל.
18. חברת China Resources Silicon Microelectronics (חברת בת של China Resources Microelectronics): מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: מוצרי אלקטרוניקה צרכניים, בקרה תעשייתית ומכשירי חשמל ביתיים.
19. טכנולוגיית ליבה לאומית: מספקת בעיקר מיקרו-בקר של 32 סיביות, היקף יישום: תחום אבטחת מידע, תחום אוטומציה משרדית, תחום רשתות תקשורת, תחום אבטחת מידע.
20. Zhongtian Micro: מספקת בעיקר מיקרו-בקרים של 32 סיביות. יישומים: סמארטפונים, טלוויזיות דיגיטליות, ממירים, אלקטרוניקה לרכב, GPS, קוראי ספרים אלקטרוניים ומדפסות.
21. חברת China Resources Microelectronics: מספקת בעיקר מיקרו-בקרים (MCU) של 8 סיביות ו-16 סיביות. היקף היישום: מעגלי בקרה כלליים עבור מכשירי חשמל ביתיים, מוצרי אלקטרוניקה צרכניים ובקרת אוטומציה תעשייתית.
22. Zhongying Electronics: מספקת בעיקר מיקרו-בקרים של 4 סיביות, 8 סיביות, 16 סיביות ו-32 סיביות. היקף היישום: מכשירי חשמל ביתיים ומנועים.
23. לינגדונג מיקרואלקטרוניקה: מספקת בעיקר 32 סיביות, היקף יישומים: בקרת מנוע, בקרת בלוטות', צג ברזולוציה גבוהה, טעינה אלחוטית, רחפנים, מדפסות מיקרו, תוויות חכמות, סיגריות אלקטרוניות, מסכי LED סיכות וכו'.
24. טכנולוגיית Nuvoton: מספקת בעיקר מיקרו-בקר של 8 סיביות, היקף יישום: תאורה, האינטרנט של הדברים וכו'.
25. Neusoft Carrier: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-32 סיביות. יישומים: מכשירי חשמל ביתיים, בתים חכמים, מכשור, בקרי פאנל LCD, בקרה תעשייתית וכו'.
26. Betley: מספקת בעיקר מיקרו-בקר 32-bit, היקף יישום: בית חכם, בקרה תעשייתית ומוצרי צריכה.
27. טכנולוגיית Shengquan: מספקת בעיקר מיקרו-בקר של 8 סיביות, היקף יישום: לוחות תצוגה קטנים ובינוניים לתעשיית הרכב, החינוך, הבקרה התעשייתית, הרפואה וכו'.
28. שבב Hangshun: מספק בעיקר מיקרו-בקרים של 8 סיביות ו-32 סיביות. היקף היישום: מכוניות, האינטרנט של הדברים וכו'.
29. פודאן מיקרואלקטרוניקה: מספקת בעיקר מיקרו-בקרים של 16 סיביות ו-32 סיביות. יישומים: מונים חכמים, מנעולי דלת חכמים וכו'.
30. Huada Semiconductor: מספקת בעיקר מיקרו-בקרים של 8 סיביות, 16 סיביות ו-32 סיביות. יישומים: בקרה תעשייתית, ייצור חכם, חיים חכמים ואינטרנט של הדברים.
טייוואן, סין
1. טכנולוגיית Hongjing: מספקת בעיקר מיקרו-בקר של 32 סיביות. היקף היישום: תקשורת, בקרה תעשייתית, מכשירי מידע וקול.
2. חברת Holtek Semiconductor: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-32 סיביות. היקף היישום: מוצרי אלקטרוניקה, תאורת LED וכו'.
3. טכנולוגיית לינגיאנג: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: אודיו ווידאו ביתיים.
4. Zhongying Electronics: מספקת בעיקר מיקרו-בקרים של 4 סיביות ו-8 סיביות. היקף היישום: מטענים, ספקי כוח ניידים, מכשירי חשמל ביתיים, בקרה תעשייתית.
5. טכנולוגיית Songhan: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-32 סיביות. היקף היישום: שלטים רחוקים, מטענים חכמים, מערכות גדולות וקטנות, משקלים אלקטרוניים, מדי חום לאוזניים, מדי לחץ דם, מדי לחץ אוויר בצמיגים, ציוד מדידה וציוד בריאותי מגוון.
6. Winbond Electronics: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: אלקטרוניקה לרכב, אלקטרוניקה תעשייתית, רשתות, מחשבים, מוצרי אלקטרוניקה צרכנית, האינטרנט של הדברים.
7. טכנולוגיית עשר מהירויות: מספקת בעיקר מיקרו-בקרים של 4 סיביות, 8 סיביות ו-51 סיביות. היקף היישום: שלטים רחוקים, מכשירי חשמל ביתיים קטנים.
8. Youhua Microelectronics: מספקת בעיקר מיקרו-בקרים של 4 סיביות ו-8 סיביות. היקף היישום: מוצרי מעגלים משולבים להקלטה, מוצרי אלקטרוניקה צרכניים, מוצרים ביתיים.
9. מיקרו-בקר של טכנולוגיית Yingguang: מספק בעיקר מיקרו-בקרים של 4 סיביות ו-8 סיביות. היקף היישום: מכונות, אוטומציה, מכשירי חשמל ביתיים, רובוטים.
10. Elan Electronics: מספקת בעיקר מיקרו-בקרים של 8 סיביות ו-16 סיביות. היקף היישום: מוצרי אלקטרוניקה, מחשבים, סמארטפונים.
חמש
טיפים ללימוד מיקרו-בקרים
העקרונות והפונקציות הבסיסיים של כל מיקרו-בקר דומים. ההבדל היחיד הוא התצורה ומספר מודולי הפונקציה ההיקפיים, מערכות ההוראות וכו'.
עבור מערכות הוראות, למרות שהן נראות שונות מאוד בצורתן, הן למעשה רק סמלים שונים. המשמעויות שהן מייצגות, הפונקציות שיש להשלים ושיטות הפנייה דומות באופן בסיסי.
כדי להבין מיקרו-בקר (MCU), ראשית עליכם לדעת את שטח ה-ROM שלו, שטח ה-RAM שלו, מספר יציאות ה-IO (פלטפורמת קלט/פלט), מספר הטיימרים ושיטות התזמון שלו, מודולי הפונקציה ההיקפית (מעגל היקפי) המסופקים, מקורות הפסיקות, מתח ההפעלה וצריכת החשמל שלו וכו'.
לאחר הבנת תכונות המיקרו-בקר הללו, השלב הבא הוא להשוות את הפונקציות של המיקרו-בקר שנבחר עם הפונקציות הנדרשות לפיתוח הפרויקט בפועל, ולהבהיר אילו משאבים נדרשים כעת ואילו אינם בשימוש בפרויקט זה.
עבור פונקציות שיש להשתמש בהן בפרויקט אך אינן מסופקות על ידי המיקרו-בקר שנבחר, עליכם להבין היטב את המידע הרלוונטי של המיקרו-בקר על מנת ליישם אותן באמצעות שיטות עקיפות. לדוגמה, אם הפרויקט שאתם מפתחים צריך לתקשר עם יציאת ה-COM של המחשב, והמיקרו-בקר שנבחר אינו מספק יציאת UART, ניתן לשקול שימוש בפסיקות חיצוניות כדי ליישם זאת.
עבור המשאבים הדרושים לפיתוח פרויקטים, עליכם להבין ולקרוא בעיון את המדריך*, בעוד שתוכלו להתעלם או לעיין במודולים פונקציונליים מיותרים. עבור למידה של מיקרו-בקר, יישום הוא המפתח והמטרה העיקרית.
לאחר הבהרת הפונקציות הרלוונטיות של ה-MCU, ניתן להתחיל בתכנות.
עבור מתחילים או מעצבים המשתמשים במיקרו-בקר זה בפעם הראשונה, הם עשויים להיתקל בתיאורים רבים ולא ברורים של תפקודי המיקרו-בקר. עבור בעיות כאלה, ישנן שתי שיטות לפתור אותן. האחת היא לכתוב תוכנית אימות מיוחדת כדי להבין את הפונקציות המתוארות בנתונים; השנייה היא להתעלם ממנה באופן זמני ולכתוב את תוכנית המיקרו-בקר בהתאם להבנתכם הנוכחית, ולהשאיר אותה לשינוי ולשיפור במהלך ניפוי שגיאות. השיטה הראשונה מתאימה לפרויקטים עם זמן פנוי ולמתחילים, בעוד שהשיטה השנייה מתאימה לאנשים עם ניסיון מסוים בפיתוח מיקרו-בקרים או כאשר לוח הזמנים של הפרויקט צפוף.
אל תשקיעו זמן מיוחד בהבנת מערכת הפקודות. מערכת ההוראות היא רק סמל לתיאור לוגי. במהלך התכנות תוכלו לראות את ההוראות הרלוונטיות רק בהתאם להיגיון שלכם ולדרישות הלוגיות של התוכנית. ככל שהתכנות מתקדם, תהיו יותר ויותר מיומנים במערכת ההוראות, ותוכלו אפילו לשנן אותה באופן לא מודע.
שש
תכנות מיקרו-בקרים
יש הבדל גדול בין כתיבת תוכניות מיקרו-בקר (MCU) לכתיבת תוכניות מחשב (PC). למרות שכלי פיתוח מיקרו-בקר מבוססי C הופכים פופולריים יותר ויותר, עבור מעצבים בעלי קוד תוכנית יעיל ואוהבים להשתמש באסמבלי (assembly), שפת אסמבלי היא עדיין שפת התכנות התמציתית והיעילה ביותר.
עבור תכנות מיקרו-בקר, ניתן לומר שהמסגרת הבסיסית דומה פחות או יותר. היא מחולקת בדרך כלל לשלושה חלקים: חלק האתחול (זהו ההבדל הגדול ביותר בין תכנות מיקרו-בקר למחשב), גוף לולאת התוכנית הראשי ומטפל הפסיקה. תיאוריהם בהתאמה הם כדלקמן:
1. אתחול: עבור תכנון כל תוכניות המיקרו-בקר, אתחול הוא השלב הבסיסי והחשוב ביותר, הכולל בדרך כלל את הדברים הבאים:
מסיר את כל הפסיקות ואתחל את מצביע המחסנית: חלק האתחול בדרך כלל לא רוצה שיתרחשו פסיקות.
ניקוי אזור ה-RAM של המערכת וזיכרון התצוגה: למרות שלפעמים זה לא הכרחי לחלוטין, מנקודת מבט של אמינות ועקביות, במיוחד כדי למנוע שגיאות בלתי צפויות, מומלץ לפתח הרגלי תכנות טובים.
אתחול יציאת ה-IO: בהתאם לדרישות היישום של הפרויקט, יש להגדיר את מצב הקלט והפלט של יציאת ה-IO הרלוונטית. עבור יציאת הקלט, יש להגדיר את נגד ה-pull-up או ה-pull-down שלה; עבור יציאת הפלט, יש להגדיר את רמת הפלט ההתחלתית שלה כדי למנוע שגיאות מיותרות.
הגדרות פסיקות: עבור כל מקורות הפסיקות שיש להשתמש בהם בפרויקט, יש להפעיל אותם ולקבוע את תנאי ההפעלה עבור הפסיקות. עבור פסיקות מיותרות שאינן בשימוש, יש לכבות אותן.
אתחול מודולים פונקציונליים אחרים: עבור כל מודולי הפונקציה ההיקפיים של ה-MCU שיש להשתמש בהם, יש לבצע את ההגדרות המתאימות בהתאם לדרישות יישום הפרויקט. לדוגמה, עבור תקשורת UART, יש להגדיר את קצב הבאוד, אורך הנתונים, שיטת האימות ואורך סיבית העצירה. עבור טיימר המתכנת, יש להגדיר את מקור השעון, מספר חלוקת התדר ונתוני טעינה מחדש.
אתחול פרמטרים: לאחר השלמת אתחול החומרה והמשאבים של המיקרו-בקר, השלב הבא הוא אתחול כמה משתנים ונתונים המשמשים בתוכנית. אתחול חלק זה יש לתכנן בהתאם לפרויקט הספציפי ולסידור הכללי של התוכנית. עבור יישומים מסוימים המשתמשים ב-EEPROM לשמירת נתונים מוכנים מראש של הפרויקט, מומלץ להעתיק את הנתונים הרלוונטיים לזיכרון ה-RAM של המיקרו-בקר במהלך האתחול כדי לשפר את מהירות הגישה של התוכנית לנתונים ולהפחית את צריכת החשמל של המערכת (בעיקרון, גישה ל-EEPROM חיצוני תגדיל את צריכת החשמל של ספק הכוח).
2. גוף לולאת התוכנית הראשית: רוב המיקרו-בקרים פועלים ברציפות במשך זמן רב, כך שגופי התוכנית הראשיים שלהם מתוכננים בעיקרון בלולאה. עבור יישומים עם מצבי עבודה מרובים, ייתכנו גופי לולאה מרובים, אשר מומרים באמצעות דגלי סטטוס. עבור גוף התוכנית הראשי, המודולים הבאים מסודרים בדרך כלל:
תוכניות חישוב: תוכניות חישוב גוזלות בדרך כלל זמן, ולכן אנו מתנגדים בתוקף לעיבודן בכל פסיקה, במיוחד בפעולות כפל וחילוק.
עיבוד תוכניות עם דרישות זמן אמת נמוכות או ללא דרישות זמן אמת כלל;
תוכנית שידור תצוגה: בעיקר עבור יישומים עם דרייברים חיצוניים של LED ו-LCD.
3. מטפל פסיקות: תוכנית הפסיקות משמשת בעיקר לטיפול במשימות ובאירועים עם דרישות גבוהות בזמן אמת, כגון זיהוי אותות פתאומיים חיצוניים, זיהוי ועיבוד של כפתורים, ספירת תזמון, סריקת צג LED וכו'.
באופן כללי, תוכנית הפסיקה צריכה לשמור על קוד תמציתי וקצר ככל האפשר. עבור פונקציות שאינן דורשות עיבוד בזמן אמת, ניתן להגדיר את דגל ההפעלה (trigger flag) בפסיקה, ולאחר מכן התוכנית הראשית תבצע פעולות ספציפיות. זה חשוב מאוד, במיוחד עבור מיקרו-בקרים בעלי צריכת חשמל נמוכה ומהירות נמוכה, אשר חייבים להבטיח תגובה בזמן לכל הפסיקות.
4. עבור סידור גופי משימות שונים, ל-MCUs שונים יש שיטות עיבוד שונות:
לדוגמה, עבור יישומי מיקרו-בקר (MCU) בעלי מהירות נמוכה וצריכת אנרגיה נמוכה (Fosc=32768Hz), בהתחשב בכך שפרויקטים כאלה הם מכשירים ניידים ומשתמשים בצגי LCD רגילים, התגובה ללחיצות מקשים ותגובת התצוגה דורשות ביצועים גבוהים בזמן אמת, ולכן בדרך כלל משתמשים בפסיקות מתוזמנות לעיבוד לחיצות מקשים. פעולות ותצוגת נתונים; עבור מיקרו-בקרים במהירות גבוהה, כגון יישומי Fosc>1MHz, מכיוון שלמיקרו-בקר יש מספיק זמן להריץ את גוף לולאת התוכנית הראשית בשלב זה, הוא יכול רק להגדיר דגלי טריגר שונים בפסיקות המתאימות ולהעביר את כל המשימות לגוף התוכנית הראשי לביצוע.
5. בתכנות מיקרו-בקר, דבר אחד הדורש תשומת לב מיוחדת הוא:
יש צורך למנוע גישה או הגדרה של אותו משתנה או נתונים בגוף התוכנית הפסיקה ובגוף התוכנית הראשי בו זמנית. שיטת מניעה יעילה היא לארגן את עיבוד הנתונים הללו במודול, ולקבוע האם לבצע פעולות קשורות על הנתונים על ידי שיפוט דגל הטריגר; בגוף תוכנית אחר (בעיקר הפסקות), יש להגדיר דגלי טריגר רק במקומות בהם יש לעבד את הנתונים. -- זה מבטיח שביצוע הנתונים יהיה צפוי וייחודי.
שבע סיכום מהנדס של תכנות מיקרו-בקרים
1. פתחו הרגל טוב של סיכום. סיכום הוא לא רק סיכום של הלמידה שלכם, אלא גם חזרה על תהליך הלמידה והעמקה שלו. זה יכול גם למנוע טעויות בפעם השנייה.
2. לפני כתיבת תוכנית, עליכם תחילה להבין את הפרויקט, להיות מודעים אליו ולשרטט מסגרת כללית. חשוב מאוד לשקול היטב כיצד לעצב אותו ומהי הפריסה הסבירה ביותר. יש צורך לנתח איזה מודול לעשות קודם, את השלבים הספציפיים של מודול זה, כיצד לתת שם לכל פונקציה, את הקשר עם מודולים אחרים וכו'. מומלץ לקחת דף נייר ולרשום תהליכים חשובים.
3. עבור תכנות מודולרי בשפת C, עליך תחילה לחלק כל מודול, לתכנת מודול אחר מודול, לקבוע רצף, לעקוב אחר הרצף, ולאחר מכן לכתוב את המודול הבא לאחר שהמודול הסתיים בהצלחה. עבור קבצי כותרת, כתוב את קובץ הכותרת של המודול לאחר כתיבת המודול.
4. אל תתעלמו מאזהרות כשהן מופיעות. זה אומר שחייב להיות משהו לא סביר בתוכנית. עליכם למצוא את המקור ולמצוא פתרון. היו ספציפיים כשאתם מחפשים מקורות. אתם יכולים לחפש מידע באינטרנט בתחום זה, או לבקש עצה מאחרים. לדוגמה, הפונקציה הראשית בפרויקט אחר נוספה למעשה לפרויקט הזה. למעשה ישנם שמות פונקציות כפולים. יש גם סיבות לנתח את התופעות הניסוייות ולהתקדם צעד אחר צעד. כמו כן, נבחר ממשק שגוי בעת הגדרת הפורט. לפעמים, טוב לקחת הפסקה ולחשוב על זה אם אתם באמת לא מצליחים לפתור את זה. לא משנה כמה זה פשוט, כדאי לשים לב לזה, מכיוון שייתכנו טעויות.
בפיתוח יישומי מיקרו-בקרים, בעיות כגון יעילות שימוש בקוד, ביצועים נגד הפרעות ואמינות של מיקרו-בקרים עדיין עולות בעייתיות. כעת נסכם מספר מיומנויות בסיסיות שיש לשלוט בהן בפיתוח מיקרו-בקרים.
שמונה
מיומנויות פיתוח מיקרו-בקרים
1 כיצד להפחית באגים בתוכניות
בנוגע לאופן הפחתת באגים בתוכנית, ראשית עליכם לשקול את פרמטרי הניהול הבאים מחוץ לטווח שיש לקחת בחשבון במהלך הפעלת המערכת.
- פרמטרים פיזיים: פרמטרים אלה הם בעיקר פרמטרי קלט של המערכת, הכוללים פרמטרי עירור, פרמטרי הפעלה במהלך עיבוד הרכישה ופרמטרי תוצאה בסוף העיבוד.
- פרמטרים של משאבים: פרמטרים אלה הם בעיקר משאבי המעגלים, המכשירים והיחידות הפונקציונליות במערכת, כגון קיבולת זיכרון, אורך יחידת אחסון ועומק הערימה.
- פרמטרי יישום: פרמטרי יישום אלה מופיעים לעתים קרובות כתנאי יישום של מיקרו-בקרים ויחידות פונקציונליות מסוימות. פרמטרי תהליך: מתייחסים לפרמטרים המשתנים באופן מסודר במהלך פעולת המערכת.
2 כיצד לשפר את יעילות קוד התכנות בשפת C
שימוש בשפת C לתכנות מיקרו-בקרים הוא מגמה בלתי נמנעת בפיתוח ויישום של מיקרו-בקרים. אם ברצונך להשיג יעילות מקסימלית בעת תכנות ב-C, עדיף להכיר את מהדר ה-C בו אתה משתמש. ראשית, בדוק את מספר השורות של משפטי שפת האסמבלי התואמים לכל קומפילציה בשפת C, כך שתוכל לדעת בבירור את היעילות. בעת תכנות בעתיד, השתמש במשפט בעל יעילות הקומפילציה הגבוהה ביותר. לכל מהדר C יהיו הבדלים מסוימים, כך שגם יעילות הקומפילציה תהיה שונה. אורך הקוד וזמן הביצוע של מהדר C מצוין למערכות משובצות ארוכים רק ב-5-20% מאותה פונקציה שנכתבה בשפת אסמבלי.
עבור פרויקטים מורכבים עם זמן פיתוח מצומצם, ניתן להשתמש בשפת C, אך התנאי הנדרש הוא היכרות טובה עם שפת C ואת מהדר ה-C של מערכת המיקרו-בקר. שימו לב במיוחד לסוגי הנתונים והאלגוריתמים הנתמכים על ידי מערכת הקומפילציה של C. למרות ששפת C היא השפה הנפוצה ביותר ברמה גבוהה, יצרני מיקרו-בקר שונים מציעים מערכות קומפילציה שונות בשפת C, במיוחד בתפעול של מודולי פונקציה מיוחדים מסוימים. לכן, אם לא תבינו את התכונות הללו, יהיו בעיות רבות במהלך ניפוי שגיאות, מה שיוביל ליעילות ביצוע נמוכה יותר בהשוואה לשפת אסמבלי.
3 כיצד לפתור את בעיית מניעת ההפרעות של מיקרו-בקר
הדרך היעילה ביותר למנוע הפרעות היא להסיר את מקור ההפרעה ולחסום את נתיב ההפרעה, אך לעיתים קרובות קשה לעשות זאת, ולכן אנו יכולים רק לראות האם יכולת מניעת ההפרעות של המיקרו-בקר חזקה מספיק. בעוד ששיפור יכולת מניעת ההפרעות של מערכות חומרה, מניעת הפרעות תוכנה זוכה לתשומת לב רבה יותר ויותר בשל עיצובו הגמיש, חיסכון במשאבי חומרה ואמינותו הטובה.
התופעה הנפוצה ביותר של הפרעות מיקרו-בקר היא איפוס. באשר לתוכנית שבורחת, ניתן להשתמש במלכודות תוכנה וב"כלבי שמירה" כדי להחזיר את התוכנית למצב האיפוס. לכן, הדבר החשוב ביותר עבור תוכנת מיקרו-בקר כדי לעמוד בפני הפרעות הוא להתמודד עם מצב האיפוס.
באופן כללי, למיקרו-בקרים יהיו כמה אוגרי דגלים בהם ניתן להשתמש כדי לקבוע את סיבת האיפוס; בנוסף, ניתן גם לקבור כמה דגלים ב-RAM בעצמך. בכל פעם שהתוכנית מאופסת, ניתן לקבוע סיבות איפוס שונות על ידי שיפוט דגלים אלה; ניתן גם לקפוץ ישירות לתוכנית המתאימה על סמך דגלים שונים. זה מאפשר לתוכנית לפעול ברציפות, והמשתמש לא ישים לב שהתוכנית אופסה בעת השימוש בה.
4 כיצד לבדוק את אמינות מערכת המיקרו-בקר
כאשר תכנון מערכת מיקרו-בקר הושלם, יהיו פריטי בדיקה ושיטות שונות עבור מוצרי מערכת מיקרו-בקר שונים, אך יש לבדוק חלק מהם:
- בדיקת שלמות תפקוד תוכנת המיקרו-בקר
- בדיקת הפעלה וכיבוי
- מבחן הזדקנות
- מבחנים כגון ESD ו-EFT
לעיתים, נוכל גם לדמות את הנזק שעלול להתרחש במהלך שימוש אנושי. לדוגמה, שפשפו במכוון את פתח המגע של מערכת המיקרו-בקר עם גוף האדם או בד הבגד כדי לבדוק את היכולת האנטי-סטטית. השתמשו במקדחה חשמלית בעלת עוצמה גבוהה כדי לעבוד קרוב למערכת המיקרו-בקר כדי לבדוק את היכולת להתנגד להפרעות אלקטרומגנטיות.
לסיכום, המיקרו-מחשב בעל השבב היחיד הפך להיבט חשוב בפיתוח ויישומי מחשבים. המשמעות החשובה של יישום המיקרו-מחשב בעל השבב היחיד היא שהוא משנה באופן מהותי את רעיונות התכנון ושיטות התכנון המסורתיות של מערכות בקרה.
רוב הפונקציות שהיו צריכות להיות מיושמות בעבר על ידי מעגלים אנלוגיים או דיגיטליים ניתנות כיום ליישום באמצעות שיטות תוכנה באמצעות מיקרו-בקרים. סוג זה של טכנולוגיית בקרה שבה תוכנה מחליפה חומרה נקרא גם טכנולוגיית מיקרו-בקרה, שהיא מהפכה בטכנולוגיית הבקרה המסורתית.
בנוסף, במהלך תהליך הפיתוח והיישום, עלינו לשלוט במיומנויות ולשפר את היעילות כך שניתן יהיה להשתמש בו למגוון רחב יותר של מטרות.
תשע
סיכום פעולת השבב הפעולות על השבב הן בעיקר פעולות על האוגרים בשבב. לאוגרים בשבב יש כתובות ייחודיות משלהם הממופות על הזיכרון, שהיא הפעולה על הכתובת המתאימה. כשמסתכלים על השבב, ראשית יש להסתכל על דיאגרמת התזמון, לאחר מכן להבין את האוגרים המתאימים, להבין כיצד הם פועלים, להגדיר את הפורטים הנדרשים (אותם ניתן לזהות על ידי התוכנית), ולכתוב נהלי פעולות כתיבה ונהלי פעולות קריאה.
איך לכתוב נתונים לשבב, איך לקרוא נתונים, ואיזה פורט להזין או לקרוא דרכו (הדבר הכי חשוב).
כאשר מחברים שבבים דרך אפיק, עליכם תחילה להבין את הפרוטוקול של האפיק. השבב המחובר לאפיק I2C שולט בעיקר בשבב דרך אפיק זה.
1. 74hc595 אחד במטריצת הנקודות משמש לבחירת עמודות, ושני האחרים משמשים לבחירת צבעים. מטריצת הנקודות שקולה לאוסף של דיודות.
רק כאשר קצה אחד מקבל רמה גבוהה והקצה השני מקבל רמה נמוכה, הדיודה יכולה להידלק. פשוט כאשר קצה אחד נבחר בצורה שונה, צבעים שונים ידלקו.
בחירת מצב עבודה של טיימר: ארבעת הביטים הגבוהים קובעים את הטיימר T1, וארבעת הביטים הנמוכים קובעים את T0. לאחר מכן, שתי הספרות האחרונות של כל מצב קובעות את מצב העבודה. בעת הגדרת שני טיימרים, יש להקפיד להשתמש ב- או (|). בעת שימוש בפסיקות, יש לשים לב לניקוי אלו שיש לנקות לאחר הזנת הפסיקה.
2. משדר-מקלט של יציאה טורית: מצב 2 (ערך התחלתי לטעינה אוטומטית) משמש בדרך כלל לקביעת קצב הבאוד. מכיוון שלמכשירים שונים יש יכולות עיבוד נתונים שונות, קביעת קצב הבאוד נועדה בעיקר לטפל במכשירים במהירות נמוכה ולתקשר זה עם זה. יש לנקות את סיבית דגל הפסיקה על ידי התוכנה. בעת הגדרת פסיקת היציאה הטורית, בין אם נוצרת על ידי שליחה או קבלה, היא יכולה להיכנס לפונקציית הפסיקה, לכן יש לשים לב להגדרת פונקציית הפסיקה. (תחושה עצמית בדרך כלל מגדירה פונקציה, כמחשב מארח או כמחשב עבד).
אם משתמשים בפסיקה כדי לשלוח, צריך להבין איך להזין את הפסיקה בפעם הראשונה, אז צריך לשלוח אותה פעם אחת קודם, ואז אפשר להזין את הפסיקה. ניתן לשלוח רק בייט אחד בכל פעם, ואת הביט הבא ניתן לשלוח רק לאחר הגדרת TI.
3. להמרת Pcf8591ad יש ארבעה ערוצי קלט. בעת קריאת pcf8591, באיזה ערוץ נבחר, נקרא מתח הקלט מאותו ערוץ. הנתונים שהומרו מאוחסנים בשבב ואז נקראים החוצה. בעת הקריאה, ראשית כותבים את כתובת השבב, לאחר מכן כותבים את כתובת המשנה של המכשיר (0x40|מספר ערוץ), ולאחר מכן את נתוני הקריאה.
4. המרה של Da היא ראשית לכתוב את כתובת ההתקן לתוך השבב, לאחר מכן לכתוב את כתובת המשנה (0x40), ולאחר מכן לכתוב את הכמות הדיגיטלית שיש להמיר. מוצג מידע על כתובת ההתקן בשבב.
5. עבור צג ה-LCD, לאחר כתיבת הנתונים והצגתם, הם תמיד יוצגו ללא רענון רציף. אם תרצו לשנות אותם, תוכלו רק להזין אותם מחדש.
6. עבור שבב השעון ds1302, בעת קריאת נתונים, הנתונים הראשונים נקראים בקצה היורד של השעון השמיני בעת כתיבת נתונים, ולאחר מכן מתכוננים לפלט הבא. שימו לב לשיטת הכתיבה של התוכנית ולמיקום ערך ההחזרה.
7. ראשית ציינו את האוגר ב-Ds1302, ולאחר מכן כתבו אליו נתונים. האוגר על השבב מציין את הכתובת. (אני עדיין לא ממש מבין את תוכנית הגנת הכתיבה. האם אין כתיבה תמידית? למה הגנת הכתיבה עדיין מופעלת?)
(לפי הגיבור הקודם, ניתן להגדיר דגל לאחר זמן האתחול. אם יש דגל זה, אין צורך לאתחל את הזמן. עם זאת, אם החשמל כבוי, זיכרון ה-RAM של המיקרו-בקר אינו יכול לשמור דגל זה, כך שניתן להשתמש ב-RAM של ה-DS1302 כדי לשמור את הדגל ולקרוא אותו לאחר ההפעלה. אני גם מתחיל, ואני מתכנן להשתמש ב-DS1302 לאחרונה. אני לא יודע אם זה נכון, ועדיין לא יישמתי את זה. אנא שתפו עוד)
8. עדיף לרשום את האתחול למקרה שתשכחו אותו מאוחר יותר. לפעמים שימו לב האם הסיבית הנמוכה ביותר או הגבוהה ביותר מופעלת ראשונה בעת קריאה או כתיבה, וניתן לשפוט זאת לפי דיאגרמת התזמון.
9. עבור משדר-מקלט אינפרא אדום, בעת הקליטה, הוא קובע אם מדובר ברמה גבוהה או נמוכה בהתבסס על הזמן בין שני קצוות נופלים. בעת כתיבת תוכנית, תחילה השתמשו בטיימר כדי לקבוע את הזמן, לשמור אותו ולאחר מכן להמיר אותו לתוכנה בינארית (קראו עוד על איך לכתוב תוכנית זו, היא טובה מאוד).
10. מנוע צעד: משמש בעיקר למיתוג. מומנט מנוע הצעד יורד ככל שהמהירות עולה. הוא משמש בעיקר להזנה אוטומטית של חלקים המעובדים על מכונות. ניתן להשתמש בו גם במקומות בקרה בדיוק רב יותר.
מנוע צעד הוא מנוע צעד בעל אלמנט בקרה בלולאה פתוחה, הממיר אותות פולסים חשמליים לתזוזה זוויתית או תזוזה ליניארית. בתנאים ללא עומס יתר, מהירות המנוע ומצב העצירה תלויים רק בתדירות ובמספר הפולסים של אות הפולס, ואינם מושפעים משינויי עומס. כאשר מנהל ההתקן של המנוע מקבל אות פולס, הוא מניע את מנוע הצעד להסתובב בכיוון שנקבע בזווית קבועה, הנקראת "זווית צעד". סיבובו פועל צעד אחר צעד בזווית קבועה. ניתן לשלוט בתזוזה הזוויתית על ידי שליטה במספר הפולסים כדי להשיג מיקום מדויק; במקביל, ניתן לשלוט במהירות ובתאוצה של סיבוב המנוע על ידי שליטה בתדירות הפולס כדי להשיג ויסות מהירות.
11. מנוע סרוו: (מנוע סרוו) מתייחס למנוע השולט בפעולת הרכיבים המכניים במערכת הסרוו. זהו התקן תמסורת עקיף המסייע למנוע. מנועי סרוו יכולים לשלוט במהירות ובדיוק המיקום בצורה מדויקת מאוד, ויכולים להמיר אותות מתח למומנט ומהירות סיבוב כדי להניע אובייקטי בקרה. מהירות הרוטור של מנוע הסרוו נשלטת על ידי אות הקלט ויכולה להגיב במהירות. במערכת הבקרה האוטומטית, הוא משמש כמפעיל ויש לו מאפיינים של קבוע זמן אלקטרומכני קטן, ליניאריות גבוהה, מתח התנעה וכו'. הוא יכול להמיר את האות החשמלי המתקבל לפלט תזוזה זוויתית או מהירות זוויתית על ציר המנוע. הם מחולקים לשתי קטגוריות: מנועי סרוו DC ו-AC. התכונה העיקרית שלהם היא שאין סיבוב כאשר מתח האות הוא אפס, ומהירות הסיבוב יורדת במהירות קבועה ככל שהמומנט עולה. מנוע DC: טווח גדול, הכל על מכוניות קטנות.
12. סקירה כללית של תווים סיניים:
על מנת להפיק תווים סיניים על צג או מדפסת, התווים הסיניים מעוצבים למטריצת נקודות לפי סמלים גרפיים, ומתקבל קוד מטריצת הנקודות המתאים (קוד גליף).
שיטת הקידוד המאוחדת המשמשת לייצוג תווים סיניים במחשב יוצרת קידוד תווים סיני הנקרא קוד פנימי (כגון קוד סטנדרטי לאומי), והקוד הפנימי הוא ייחודי (שווה ערך למספר הזיהוי של התו). קידוד התווים הסיני שנוצר כדי להקל על הזנת תווים סיניים הוא קוד קלט, שהוא קוד חיצוני של תווים סיניים. קוד הקלט שונה עקב שיטות קידוד שונות והוא מגוון. קוד התווים הסיני שנוצר להצגה והדפסה של תווים סיניים הוא קוד גליף. המחשב מוצא את קוד הגליף של התו הסיני בספריית מודל הגופן באמצעות הקוד הפנימי של התווים הסיניים ומבצע את המרה שלו.
קוד במצלמה
בהתאם להוראות הקוד הסטנדרטי הלאומי, לכל תו סיני יש קוד בינארי מסוים, אך קוד זה יתנגש עם קוד ASCII כאשר הוא מעובד באופן פנימי על ידי המחשב. כדי לפתור בעיה זו, הוסף 1 לספרה הראשונה של כל בייט בקוד הסטנדרטי הלאומי. מכיוון שקוד ASCII משתמש רק ב-7 ביטים, ניתן להשתמש ב-"1" מלכתחילה כסימן לזיהוי קודי תווים סיניים. כאשר המחשב מעבד את הקוד עם "1" מלכתחילה, הוא מבין אותו כמידע תווים סיניים, וכאשר הוא מעבד את הקוד עם "0" מלכתחילה, הוא מבין אותו כקוד ASCII. קוד הסטנדרטי הלאומי (קוד פנימי) המעובד בדרך זו הוא הקוד הפנימי.
אם נחליף את ה-"." של גרפיקת "口" זו ב-"0", נוכל לקבל את קוד הגליף של "口" בצורה חיה מאוד: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H. כאשר המחשב רוצה להפיק פלט של "口", הוא מוצא תחילה את הכתובת הראשונה של ספריית גופני התצוגה, מחשב על סמך הקוד הפנימי של "口", ולאחר מכן מוצא את קוד הגליף של "口", ולאחר מכן סורק את המסך ברצף בהתאם לקוד הגליף (בבינארי) באמצעות בקרת מחולל התווים. כאשר הקוד הבינארי הוא "0", המקום שבו הוא "0" נסרק, והמקום שבו הוא "1" נסרק כדי להדגיש, כך שניתן לקבל את תבנית התווים "口".
גופני תווים סיניים מסודרים לפי סדר הקוד הסטנדרטי הלאומי ומאוחסנים בזיכרון בצורת קבצים בינאריים, ויוצרים ספריית גופני תווים סיניים, המכונה גם ספריית גליפים של תווים סיניים, או ספריית תווים סיניים.
שתי שיטות קידוד, ראה קובץ כותרת
GB1616.h//------------------ הגדרת מבנה נתוני גופן של תווים סיניים -------------------------//structtypFNT_GB16 //מבנה נתוני גופן של תווים סיניים {unsignedcharIndex[3]; //אינדקס קוד פנימי של תווים סיניים unsignedchar Msk[32];//נתוני קוד מטריצת נקודות }; //////////////////////////////////////////////////////////////////// טבלת גופני תווים סיניים //// ספריית תווים סיניים: Song Dynasty 16.dot, סיביות גבוהה שמאלי מודולו אופקית, סידור נתונים: משמאל לימין, מלמעלה למטה //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// conststructtypFNT_GB16 codeGB_16[]= //טבלת נתונים{/*------------------------------------------------------------------------------------------;קובץ מקור/טקסט :Xu;רוחב×גובה (פיקסלים):16×16-------------------------------------------------------------------------------------------------------*/"Xu",0x10,0x80,0x10,0x80,0x21,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x 20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00, מבנה זה פשוט מאוד: אחד הוא הקוד הפנימי, ואחד הוא רצף מטריצת הנקודות. ספריית מטריצת הנקודות הקודמת הוצבה בסדר הקוד הפנימי, ולא היה צורך באינדקס קוד פנימי. אם הוצבו רק כמה תווים סיניים, היה צורך באינדקס הקוד הפנימי. (התו הסיני "Xu" מלפנים נועד למצוא את רצף מטריצת הנקודות של המילה בעת הפקת "Xu". רצף מטריצת הנקודות הזה נכתב על ידי. כאשר מוצג עם 1602, מכיוון שלשבב יש רצף מטריצת נקודות באנגלית בזיכרון, אין צורך לכתוב אותו.) באופן כללי, שני בתים מספיקים לקוד הפנימי. אם משתמשים בעוד בית אחד, פשוט מוסיפים 0 אחריו. בדרך זו, ניתן להציב את מחרוזת התווים הסיניים ישירות בקוד הפנימי של התווים הסיניים;
codeGB_16[k].Index[0] codeGB_16[k] מציין שקיים מערך של מבנה typFNT_GB16 בשם codeGB_16. codeGB_16[k] הוא איבר k+1 במערך. index הוא איבר של מבנה typFNT_GB16, כך שניתן להפנות אליו באמצעות codeGB_16[k].Index. יחד עם זאת, index הוא מערך, כך שניתן לאינדקס אותו.[0] If((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) && הוא אופרטור AND לוגי, מה שאומר שהערכים משני צידי הסמל && נכונים. רק הערך של && הוא נכונים, כלומר, true && true =true. משפט זה פירושו: codeGB_16[k].Index[0]==c[0] ו- codeGB_16[k].Index[1]==c[1] נוצרים בו זמנית. אם ההצהרה הבאה מבוצעת, codeGB_16[] הוא מערך מבנה, codeGB_16[k].Index[0] פירושו ערך האלמנט ה-0 של איבר האינדקס של המבנה ה-K של מערך המבנה.
13. 12864 מסך LCD: כל נקודת תצוגה מתאימה למספר בינארי, 1 פירושו דלוק, 0 פירושו כבוי. זיכרון ה-RAM שמאחסן את מידע מטריצת הסיכות הללו נקרא זיכרון נתוני תצוגה. כדי להציג גרפיקה מסוימת או תו סיני, יש לכתוב את מידע מטריצת הסיכות המתאים ליחידת האחסון המתאימה.
מונה הכתובות (AC) של זיכרון הגרפיקה יגדיל אוטומטית את הכתובת האופקית (ציר X) רק באחד. כאשר הכתובת האופקית = 0FH, היא תאופס ל-00H. עם זאת, הוא לא יגדיל אוטומטית את הכתובת האנכית עם העברת נתונים. לכן, כאשר נתונים מרובים נכתבים ברציפות, התוכנית צריכה לקבוע האם יש לאפס את הכתובת האנכית.
14. זיכרון RAM (GDRAM) זיכרון RAM של תצוגת השרטוט מספק 128×8 בייט של שטח זיכרון. בעת החלפת זיכרון RAM של השרטוט, תחילה כתוב את ערכי הקואורדינטות האופקיות והאנכיות ברציפות, ולאחר מכן כתוב שני בייט של נתונים לזיכרון RAM של השרטוט. מונה הכתובות (AC) יגדיל אוטומטית את הכתובת האופקית (כתובת X) באחד. כאשר הכתובת האופקית היא 0XFH, היא תאופס ל-00H; הכתובת האנכית לא תגדל אוטומטית ב-1. יש לכבות את תצוגת השרטוט במהלך כתיבה לזיכרון RAM של השרטוט.
[cpp] הצג עותק רגיל // הצגת תווים סיניים voiddispString (uchar X, Y,uchar *msg) // איזו שורה היא X ואיזו עמודה היא Y. msg הוא תווים סיניים {if(X==0) write_data(*msg++); //הצגת תווים סיניים }}////////////////////////////////// ///////////////////// /////////////////////// הצגת תמונה voiddisppicture(uchar code *adder){ uint i,j;//*******הצגת הגדרות תוכן של חצי המסך העליון for(i=0;i<32;i++)//32 כתובות עמודות במחצית העליונה של המסך { write_com(0x80 + i);//הגדרת כתובת אנכית VERTICALADD write_com(0x80);//הגדרת כתובת אופקית HORIZONTAL ADDfor(j=0;j<16;j++) { write_data(*adder); adder++; }}//************הצגת הגדרות תוכן במחצית התחתונה של המסך for(i=0;i<32;i++) //{ write_com(0x80 + i); //הגדרת כתובת אנכית VERTICALADD write_com(0x88); //הגדרת כתובת אופקית HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }} בשפת C, שטח אחסון מוקצה אוטומטית למשתנה מוגדר, וכתובתו היא שם המשתנה. באמצעות שם זה ניתן לאחזר את הנתונים בזיכרון ולקבל נתונים חדשים באמצעות חישוב. עם זאת, באסמבלי, המתכנת צריך להגדיר את שטח האחסון ולשלוח את הנתונים לאקומולטור לצורך חישוב. כל שלב דורש פעולה מצד המתכנת. בשפת C, תהליכים אלה מבוצעים על ידי המהדר.
15. כמה שאלות ותשובות שימושיות 1. כיצד מתבצעת הקצאת זיכרון של משתנים בשפת המיקרו-בקר C? האם ייתכן שהמהדר מוסיף באופן חכם קוד הקצאה ומיחזור במהלך תהליך הקומפילציה? הנקודה המרכזית היא כיצד אוכל להבטיח שהתוכנית שיצרתי לא תהיינה בה שגיאות גלישת זיכרון? אם אני מבצע פעולה רקורסיבית, קשה לחשב את דרישות הזיכרון בעצמי.
2. האם שפת C של המיקרו-בקר תהיה מוגבלת בהגדרת משתנים? לדוגמה, פעולות הכפל והחילוק של נתוני נקודה צפה נכתבות באמצעות אסמבלי, והקוד די מסובך. אם היה כתוב ישירות בשפת C, האם זה לא היה פשוט מדי?
③. בקובץ ההקסדצימלי שנוצר על ידי שפת C של המיקרו-בקר, האם התפלגות הכתובות של פקודות ונתוני ROM מוקצית אוטומטית על ידי המהדר? האם משתמשים יכולים להקצות אותה?
תשובה 1: תוכנית מיקרו-בקר שנכתבה בשפת C עוברת תחילה קומפילציה על ידי תוכנית (נראה שהיא c51.exe). לאחר השלמת הקומפילציה, גודל שטח האחסון של המשתנים סודר, אך הכתובת הספציפית טרם הוקצתה (הכתובת צפה). לאחר מכן, תוכנית נוספת (נראה שהיא a51.exe) מחוברת. לאחר החיבור, נקבעת הכתובת הספציפית.
אם יש יותר מדי משתנים, המהדר יציג הודעה שקטע הנתונים גדול מדי. כדי להבטיח שלא תהיה שגיאת גלישת זיכרון, השיקול העיקרי הוא האם המחסנית גולשת, וזה תלוי בניסיון.
שפת C של מיקרו-בקרים אוסרת בדרך כלל על רקורסיה, ופעולות רקורסיביות נמנעות בדרך כלל. אחרי הכל, מיקרו-בקרים אינם מחשבים אישיים, מה שישפיע על המהירות. אם רוצים לבצע רקורסיה, עדיף להשתמש בשבב DSP. בקיצור, עליכם להיות מסוגלים לבחור את השבב המתאים.
תשובה 2: גודל המשתנה (מספר הספרות) זהה בדרך כלל למספר הספרות במצבר השבבים. לדוגמה, 51 משתמש בדרך כלל ב-8 סיביות מכיוון שהוא מיקרו-בקר של 8 סיביות.
המיקרו-בקר יכול להגדיר משתני סיביות, אך אינו יכול להגדיר מערכי סיביות. כתיבה בשפת C נראית פשוטה, אך למעשה מייצרת את כמות הקוד הגדולה ביותר. המיקרו-בקר המשמש לבקרה כמעט ולא משתמש בפעולות נקודה צפה, שהן לא רק איטיות אלא גם בעייתיות ותופסות מקום. אם מדובר בשבב DSP, יהיה הרבה יותר טוב אם יהיה לו מבנה חומרה מתאים.
תשובה 3: בדרך כלל, הוא מוקצה אוטומטית. ניתן לתכנת אותו בשילוב של שפת C ושפת אסמבלי, או שניתן להרכיב אותו באופן מקוון באמצעות Keil C. חילופי הנתונים בין השבב לחוץ מתבצעים דרך הפורט.
מספר טלפון של החברה: 86-0755-83044319+
פקס/פקס: 86-0755-83975897+
דוא"ל: 1615456225@qq.com
QQ: 3518641314 מנהל לי
QQ: 332496225 מנהל Qiu
כתובת: חדר 809, בניין C, בניין הטכנולוגיה ז'אנטאו, שדרת מינגז'י מס' 1079, רובע לונגהואה החדש, שנזן