- הגדרת חומרה ודרישה
- מעגל ממשק נורת לד N76E003
- תרשים פין-אאוט N76E003
- תוכנית בקרת GPIO פשוטה עבור N76E003
- תכנות N76E003 ואימות פלט
במדריך הקודם שלנו, השתמשנו בתוכנית מהבהבת לד בסיסית כהתחלה עם מדריך N76E003, כבר למדנו כיצד להגדיר את ה- Keil IDE ולהגדיר את הסביבה לתכנות יחידת המיקרו-בקר nuvoton N76E003. זה הזמן להתקדם מעט ולהשתמש בממשק GPIO הבסיסי לשליטה בחומרה נוספת. אם אתה מעוניין אתה יכול לבדוק גם מדריכי GPIO אחרים של מיקרו-בקר המפורטים להלן-
- STM32 Nucleo64 עם CubeMx ו- TrueSTUDIO - שליטת LED
- STM8S עם בקרת Cosmic C GPIO
- PIC עם MPLABX LED Blink Tutorial
- MSP430 עם Studio Composer Studio - בקרת נורית פשוטה
מאז בהדרכה הקודמת שלנו, השתמשנו רק בנורית כדי להבהב באמצעות סיכת IO כפלט. במדריך זה נלמד כיצד להשתמש בסיכת IO אחרת ככניסה ולשלוט על נורית נוספת. מבלי לבזבז זמן רב, בואו נעריך איזה סוג של התקנת חומרה אנו דורשים.
הגדרת חומרה ודרישה
מכיוון שצריך להשתמש במתג כקלט, הדבר הראשון שאנו דורשים הוא כפתור לחיצה. כמו כן, אנו זקוקים לנורת LED נוספת שתישלט על ידי כפתור לחיצה זה. מלבד שני אלה, אנו דורשים גם נגד להגביל את זרם ה- LED ונגד נוסף למטרות הנפתחת מעבר לכפתור. פעולה זו תודגם בפרק הסכמטי. הרכיבים הדרושים לנו -
- כפתור לחצן (כל סוג של מתג רגעי במיוחד - מתג מישוש)
- כל צבע של ה- LED
- נגד 4.7k למטרות נפתחות
- נגד 100R
שלא לדבר על, מלבד הרכיבים הנ"ל, אנו זקוקים ללוח פיתוח מבוסס מיקרו-בקר N76E, כמו גם למתכנת Nu-Link. בנוסף, נדרשים גם חוטי קרש וחיבור לחיבור כל הרכיבים כמוצג להלן.
מעגל ממשק נורת לד N76E003
כפי שניתן לראות בתרשים למטה, נורית הבדיקה שנמצאת בתוך לוח הפיתוח מחוברת ביציאה 1.4 ונורית נוספת מחוברת ביציאה 1.5. הנגד R3 משמש להגבלת זרם ה- LED.
בסיכה 1.6 מחובר לחצן לחיצה בשם SW. בכל פעם שלוחצים על הכפתור, הסיכה תהפוך גבוהה. אחרת, הוא יהפוך נמוך על ידי הנגד הנפתח 4.7K R1. אתה יכול ללמוד עוד על נגדים נשלפים ונפתחים אם אתה חדש במושג זה.
הסיכה היא גם סיכה הקשורה לתוכנית אליה מתכנת ניגש. הוא משמש לשליחת נתוני התוכנית. עם זאת, נראה את הסיבה שמאחורי בחירת אותם סיכות וכן נקבל מידע הוגן על מיפוי הסיכות של N76E003.
תרשים פין-אאוט N76E003
את תרשים הסיכות של N76E003 ניתן לראות בתמונה למטה-
כפי שאנו רואים, לכל סיכה יש מספר פונקציות והוא יכול לשמש למטרות שונות. בואו ניקח דוגמא. סיכה 1.7 יכולה לשמש כקלט הפסקה, או אנלוגי או כפעולת כניסה קלט למטרות כלליות. לפיכך, אם סיכה כלשהי משמשת כסיכות קלט / פלט, הפונקציונליות המתאימה לא תהיה זמינה.
בשל כך, סיכה 1.5 המשמשת כסיכת פלט LED, היא תאבד את ה- PWM ופונקציונליות אחרת. אבל זו לא בעיה שכן אין צורך בפונקציונליות אחרת לפרויקט זה. הסיבה מאחורי בחירת סיכה 1.5 כפלט וסיכה 1.6 כקלט, בגלל הזמינות הקרובה ביותר של סיכות GND ו- VDD לחיבור קל.
עם זאת, במיקרו-בקר זה מתוך 20 פינים, 18 פינים יכולים לשמש כסיכת GPIO. סיכה 2.0 משמשת ייעודי לקלט איפוס ולא ניתן להשתמש בה כפלט. מלבד סיכה זו, ניתן להגדיר את כל הפינים במצב המתואר להלן.
בהתאם לגליון הנתונים, PxM1.n ו- PxM2.n הם שני רושמים המשמשים לקביעת פעולת הבקרה של יציאת הקלט. עכשיו, לבוא לכתוב ולקרוא יציאת GPIO זה דבר אחר לגמרי. מכיוון שכתיבה לרישום בקרת יציאות משנה את מצב התפס של היציאה, ואילו קריאת היציאה מקבלת את המצב של ההיגיון. אך לקריאת יציאה, יש להעביר אותה למצב קלט.
תוכנית בקרת GPIO פשוטה עבור N76E003
התוכנית המלאה בה נעשה שימוש במדריך זה נמצאת בתחתית עמוד זה, הסבר הקוד הוא כדלקמן.
הגדרת הסיכה כקלט
נתחיל מהקלט קודם. כפי שנדון לפני כן, כדי לקרוא את מצב היציאה, יש להגדיר אותה כקלט. לכן, כאשר בחרנו את P1.6 כסיכת מתג הקלט שלנו, ציינו אותו דרך השורה הבאה של קטע הקוד.
#define SW P16
יש להגדיר את אותו סיכה כקלט. לפיכך, בפונקציית ההתקנה, הסיכה מוגדרת כקלט באמצעות השורה הבאה.
הגדרת חלל (בטל) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
שורה זו P16_Input_Mode; מוגדר בקובץ הכותרת Function_define.h ב"ספריית ה- BSP כוללים "המגדיר את סיבית הסיכה כ- P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . SET_BIT6 מוגדר גם באותו קובץ הכותרת כמו שיבה
#define SET_BIT6 0x40
הגדרת הפינים כפלט
זהה לסיכת הקלט, סיכת הפלט המשמשת את נורית הבדיקה המשולבת ואת ה- LED החיצוני מוגדרת גם בחלק הראשון של הקוד עם ה- PIN המתאימים.
#define Test_LED P14 #define LED1 P15
פינים אלה מוגדרים כפלט בפונקציית ההתקנה באמצעות השורות הבאות.
הגדרת חלל (בטל) { P14_Quasi_Mode; // פלט P15_Quasi_Mode; // פלט P16_Input_Mode; }
שורות אלה מוגדרות גם בקובץ הכותרת Function_define.h שם הוא מגדיר את סיבית הסיכה כ- P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . SET_BIT6 מוגדר גם באותו קובץ הכותרת כמו שיבה
#define SET_BIT4 0x10
אינסוף תוך לולאה
חומרה, אם היא מחוברת לחשמל ועובדת בצורה מושלמת שאמורה לתת פלט ברציפות, היישום לעולם לא נעצר. זה עושה את אותו הדבר לתקופות אינסופיות. כאן באה הפונקציה של לולאה אינסופית. היישום בתוך לולאת ה- while פועל לאין ערוך.
בעוד (1) { Test_LED = 0; עיכוב (150); Test_LED = 1; עיכוב (150); אם (SW == 1) {LED1 = 0; } אחר {LED1 = 1; }}}
הלולאה לעיל מהבהבת את ה- led לפי ערך sw_delay ובודקת גם את מצב ה- SW. אם לוחצים על המתג, ה- P1.6 יהיה גבוה, ולכן כאשר הוא נלחץ, מצב הקריאה יהיה 1. במצב זה, למשך הזמן, המתג נלחץ והיציאה P1.6 נשארת גבוהה, LED1 יאיר.
תכנות N76E003 ואימות פלט
בשינה שלנו התחלת עבודה עם N76E003 הדרכה, למדנו איך לתכנת את N76E003 כבר, אז אנחנו פשוט נחזור על אותם השלבים כאן כדי לתכנת הלוח שלנו. הקוד נערך בהצלחה והחזיר 0 אזהרות ו -0 שגיאות והבהב בשיטת ההברקה המוגדרת כברירת מחדל על ידי הקיל.
כפי שניתן לראות בתמונה לעיל, הנורית החיצונית שלנו נדלקת כשאני לוחץ על כפתור הלחיצה. את העבודה המלאה של הפרויקט ניתן למצוא בסרטון המקושר למטה. מקווה שנהנית מההדרכה ולמדת משהו שימושי אם יש לך שאלות, השאיר אותן בסעיף ההערות למטה. אתה יכול גם להשתמש בפורומים שלנו לשאול שאלות טכניות אחרות.