בשתי ההדרכות הקודמות דנו כיצד להתחיל לעבוד עם PIC באמצעות MPLABX ו- XC8! מהדר, עשינו גם את תוכנית ה- LED Blinking הראשונה שלנו עם PIC ואמתנו אותה על ידי סימולציה. עכשיו הגיע הזמן לשים יד על החומרה. במדריך זה נבנה מעגל קטן על לוח Perf להבהוב ה- LED באמצעות PIC. אנו נזרוק את התוכנית למיקרו-בקר PIC שלנו ונוודא שהנורית מהבהבת. כדי לתכנת את PIC MCU נשתמש ב- MPLAB IPE.
חומרים נדרשים:
כפי שנדון במדריך הקודם שלנו נצטרך את החומרים הבאים:
- פיקיט 3
- PIC16F877A IC
- 40 - מחזיק סיכת סיכה
- לוח Perf
- 20 מגה הרץ קריסטל OSC
- סיכות ברגסטיק נקבה וזכר
- קבלים 33pf - 2Nos, 100uf ו- 10uf כובע.
- נגד 680 אוהם, 10K ו -560 אוהם
- נורית LED בכל צבע
- 1 ערכת הלחמה
- IC 7805
- מתאם 12 וולט
מה קורה כשאנחנו "שורפים" מיקרו בקר !!
מקובל להעלות את הקוד ל- MCU ולגרום לו לעבוד בתוך ה- MCU.
כדי להבין זאת, נסתכל על התוכנית שלנו
כפי שאנו רואים קוד זה כתוב ב- C- שפה וזה לא יהיה הגיוני ל- MCU שלנו. כאן נכנס החלק של המהדר שלנו; Compiler הוא אחד אשר ממיר את הקוד הזה לתוך טופס מכונית קריא. טופס קריא למכונה זה נקרא קוד HEX, לכל פרויקט שאנו יוצרים יהיה קוד HEX אשר יהיה בספריה הבאה
** המיקום שלך ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
אם אתה כל כך מעוניין לדעת איך נראה קוד HEX זה, פשוט פתח אותו באמצעות פנקס הרשימות. בתוכנית Blink שלנו, קוד HEX ייראה כך:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
ישנן דרכים כיצד לקרוא זאת וכיצד להבין ולהפוך אותו חזרה לשפת הרכבה, אך זה לגמרי מחוץ לתחום של הדרכה זו. אז, פשוט לשים את זה בקצרה; ה- HEX הוא תוצאת התוכנה הסופית של הקידוד שלנו וזה מה שיישלח ל- MPLAB IPE לשריפת ה- MCU.
זיכרון פלאש:
קוד HEX מאוחסן לתוך MCU במקום שנקרא זיכרון פלאש. זיכרון הפלאש הוא המקום בו התוכנה שלנו תאוחסן בתוך ה- MCU ותבוצע משם. ברגע שנרכיב את התוכנית ב- MPLABX שלנו, היינו מקבלים את המידע הבא על סוג הזיכרון במסוף הפלט
מכיוון שזה עתה ליקטנו תוכנית מהבהבת קטנה עם LED, סיכום הזיכרון מראה כי צרכנו זה עתה 0.5% משטח התוכנית הזמין ו -1.4% משטח הנתונים.
זיכרון המיקרו-בקר PIC16F877 מחולק בעצם לשלושה סוגים:
זיכרון התוכנית: זיכרון זה מכיל את התוכנית (שכתבנו) לאחר ששרפנו אותה. כזכור, תוכנית מונה מבצעת פקודות המאוחסנות בזיכרון התוכנית, זו אחר זו. מכיוון שכתבנו תוכנית קטנה מאוד, צרכנו רק 0.5% מכלל השטח. זהו זיכרון שאינו נדיף, כלומר הנתונים המאוחסנים לא יאבדו לאחר הכיבוי.
זיכרון נתונים: זהו סוג זיכרון זיכרון RAM, המכיל רושמים מיוחדים כמו SFR (רישום פונקציות מיוחדות) הכולל טיימר כלב השמירה, איפוס החוצה וכו 'ו- GPR (רישום למטרות כלליות) הכולל TRIS ו- PORT וכו'. בזיכרון הנתונים במהלך התוכנית נמחקים לאחר כיבוי ה- MCU. כל משתנה המוצהר בתוכנית יהיה בתוך זיכרון הנתונים. זהו גם זיכרון נדיף.
נתונים EEPROM (זיכרון לקריאה בלבד לתכנות מחיקת חשמל): זיכרון המאפשר אחסון של המשתנים כתוצאה מצריבת התוכנית הכתובה. לדוגמא אם אנו מקצים משתנה "a" כדי לשמור בו ערך 5 ונשמור אותו ב- EEPROM נתונים אלה לא יאבדו גם אם החשמל כבוי. זהו זיכרון שאינו נדיף.
זיכרון התוכנית ו- EEPROM הם זיכרונות שאינם נדיפים, ונקראים זיכרון פלאש או EEPROM.
ICSP (בתכנות סידורי במעגל):
אנו נתכנת את ה- PIC16F877A שלנו באמצעות אפשרות ICSP הזמינה ב- MCU שלנו.
עכשיו, מה זה ICSP?
ICSP היא דרך פשוטה המסייעת לנו לתכנת MCU גם לאחר מיקומו בתוך לוח הפרויקט שלנו. אין צורך שיהיה לוח מתכנת נפרד כדי לתכנת את ה- MCU, כל מה שאנחנו צריכים זה 6 חיבורים מהמתכנת PicKit3 ללוח שלנו כדלקמן:
1 |
סמנכ"ל (או MCLRn) |
כדי להיכנס למצב תכנות. |
2 |
Vcc |
פין כוח 11 או 32 |
3 |
GND |
PIN קרקע 12 או 31 |
4 |
PGD - נתונים |
RB7. PIN40 |
5 |
PGC - שעון |
RB6. PIN 39 |
6 |
PGM - הפעלת LVP |
RB3 / RB4. לא חובה |
ICSP מתאים לכל חבילות ה- PIC; כל מה שאנחנו צריכים זה לשלוף את חמשת הפינים האלה (PGM עם סיכה 6 היא אופציונלית) מה- MCU ל- Pickit3 כפי שמוצג בתמונה למטה.
מעגל וחומרה:
עכשיו, יש לנו את קוד ה- HEX שלנו מוכן ואנחנו גם יודעים לחבר את PicKit 3 שלנו ל- PIC MCU שלנו באמצעות ICSP. אז בואו נמשיך ונלחם את המעגל בעזרת התרשימות שלהלן:
במעגל הנ"ל השתמשתי ב- 7805 לוויסות פלט 5V ל- PIC MCU שלי. הרגולטור הזה יופעל על ידי מתאם קיר למתח 12 וולט. ה- LED האדום משמש לציון אם ה- PIC מופעל. המחבר J1 משמש לתכנות ICSP. הפינים מחוברים כפי שפורט בטבלה לעיל.
יש להחזיק את MCLR הסיכה הראשון בעזרת 10k כברירת מחדל. זה ימנע מאיפוס ה- MCU. על מנת לאפס את ה- MCU יש להחזיק את סיכת ה- MCLR לקרקע מה שניתן לעשות בעזרת מתג SW1.
הנורית מחוברת לסיכה RB3 דרך נגד בעל ערך 560 אוהם (ראה מחשבון נגדי LED). אם הכל תקין לאחר העלאת התוכנית שלנו נורית נורית זו אמורה להבהב על סמך התוכנית. מעגל שלם בנוי על Perfboard על ידי הלחמה של כל הרכיבים עליו כפי שניתן לראות בתמונה בחלקו העליון.
צריבת הקוד באמצעות MPLAB IPE:
לצריבת הקוד, בצע את השלבים הבאים:
- הפעל את ה- MPLAB IPE.
- חבר קצה אחד של ה- PicKit 3 למחשב האישי שלך וקצה אחר לסיכות ICSP שלך בלוח perf.
- התחבר למכשיר ה- PIC שלך על ידי לחיצה על כפתור ההתחברות.
- חפש את הקובץ Blink HEX ולחץ על תוכנית.
אם הכל הולך כמתוכנן אתה אמור לקבל את הודעת ההצלחה על המסך. בדוק את הקוד והסרטון להלן להפגנה מלאה והשתמש בסעיף ההערות אם יש לך ספק.
תודה!!!
בואו ניפגש במדריך הבא שבו נשחק עם נוריות נוספות ומתג.