תוכן עניינים:
וִידֵאוֹ: הדרכה להרכבת AVR 6: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:11
ברוכים הבאים לשיעור 6!
ההדרכה של היום תהיה קצרה בה נפתח שיטה פשוטה לתקשר נתונים בין atmega328p אחד למשנהו באמצעות שתי יציאות המחברות ביניהן. לאחר מכן ניקח את גלגלת הקוביות מתוך הדרכה 4 ואת מנתח הרשם מהדרכה 5, נחבר אותן יחד, ונשתמש בשיטה שלנו כדי לתקשר את התוצאה של גלילות קוביות מהגלגלת למנתח. לאחר מכן נדפיס את הגליל בינארי באמצעות הלדים שבנינו למנתח במדריך 5. לאחר שנעבוד את זה נוכל לבנות את החלק הבא של הפרויקט הכולל שלנו במדריך הבא.
בהדרכה זו תזדקק ל:
- לוח האב טיפוס שלך
- גלגלת הקוביות שלך מתוך הדרכה 4
- מנתח הרישום שלך מתוך מדריך 5
- שני חוטים מחוברים
-
עותק של גליון הנתונים המלא (עדכון 2014):
www.atmel.com/images/Atmel-8271-8-bit-AVR-M…
-
עותק של מדריך ההוראות (עדכון 2014):
www.atmel.com/images/atmel-0856-avr-instruc…
להלן קישור לאוסף השלם של מדריכי הרכבת AVR שלי:
שלב 1: כיצד נוכל לגרום לשני מיקרו -בקרים לדבר זה עם זה?
מכיוון שאנו מתחילים להרחיב את הפרויקט שלנו כך שמוצר הקצה היחיד שלנו מורכב מאוסף של חלקים קטנים יותר, נזדקק ליותר סיכות ממה ש- Atmega328P יכול לספק. לכן אנו הולכים לעשות כל חלק מהפרויקט הכולל על מיקרו -בקר נפרד ואז לשתף אותם בנתונים ביניהם. אז הבעיה שעלינו לפתור היא כיצד נוכל למצוא שיטה פשוטה עבור הבקרים לדבר זה עם זה ולהעביר נתונים ביניהם? ובכן, דבר אחד בבקרים האלה הוא שהם מבצעים כל אחד 16 מיליון הוראות בשנייה. זה מתוזמן במדויק ולכן אנו יכולים להשתמש בתזמון זה להעברת נתונים. אם אנו משתמשים בעיכובים של אלפיות השנייה כדי ליצור את הנתונים, אז אנחנו לא באמת צריכים להיות כל כך מדויקים מכיוון שהמעבד מבצע 16, 000 הוראות באלפית השנייה. במילים אחרות, אלפית השנייה היא נצח עבור המעבד. אז בואו ננסה את זה עם לחמניות הקוביות. אני רוצה להעביר את התוצאה של גליל קוביות משבב גליל הקוביות לשבב המנתח. נניח שאתה עומד מעבר לרחוב ורציתי לסמן לך את התוצאה של זריקת זוג הקוביות שלי. דבר אחד שיכולתי לעשות, אם לשנינו היה שעון, יכולתי להדליק פנס, ואז כשאתה מוכן לקבל את הנתונים שלי אתה מדליק את הפנס ושנינו מפעילים את השעונים. אחר כך אני שומר את הפנס שלי על המספר המדויק של אלפיות השנייה כשהקוביות מגלגלות ואז סוגר אותו. אז אם הייתי מגלגלת 12 הייתי ממשיך להדליק את האור שלי במשך 12 אלפיות השנייה.עכשיו הבעיה עם האמור לעיל היא שבשבילך ובשבילי, אין סיכוי שנוכל לתזמן את הדברים מספיק כדי להבחין בין 5 אלפיות השנייה ל -12 אלפיות השנייה. אבל מה עם זה: נניח שהחלטנו שאשמור את האור שלי במשך שנה אחת לכל מספר על הקוביות? ואז אם הייתי מגלגלת 12 הייתי מאירה לך את האור במשך 12 שנים ואני חושבת שתסכימי שאין שום אפשרות שתטעה בלהבין את המספר נכון? אתה יכול לקחת הפסקה וללכת לשחק בייסבול, אתה יכול אפילו ללכת לשחק קשקושים בווגאס במשך 6 חודשים, כל עוד בשלב מסוים במהלך השנה להציץ מעבר לרחוב כדי לראות אם האור דולק אתה לא תחמיץ ספירה. ובכן, זה בדיוק מה שאנחנו עושים עבור בקרי המיקרו! אלפית שנייה אחת למעבד היא כשנה. אז אם אני מפעיל את האות למשך 12 אלפיות השנייה אין כמעט סיכוי שהמיקרו -בקר השני יבלבל אותו במשך 10 או 11 לא משנה מה יפריע ומה לא יקרה בינתיים. עבור בקרי המיקרו, אלפית השנייה היא נצח. אז הנה מה שנעשה. ראשית נבחר שתי יציאות בבקר שיהיו יציאות התקשורת שלנו. אשתמש ב- PD6 לצורך קבלת נתונים (נוכל לקרוא לזה Rx אם נרצה) ואני אבחר ב- PD7 להעברת נתונים (נוכל לקרוא לזה Tx אם נרצה). שבב המנתח יבדוק מעת לעת את סיכת ה- Rx שלו ואם הוא יראה אות הוא יירד ל"תת שגרת תקשורת "ולאחר מכן ישדר אות החזרה לגליל הקוביות שאומר שהוא מוכן לקבל. שניהם יתחילו לתזמן וגלגל הקוביות ישדר אות (כלומר 5V) למשך מילי -שניות למספר על הקוביה. אז אם הגליל היה שישי כפול, או 12, אז גלגלת הקוביות הייתה מגדירה את ה- PD7 שלו ל- 5V למשך 12 אלפיות השנייה ואז מחזירה אותו ל 0V. המנתח יבדוק את סיכת ה- PD6 שלו בכל אלפית השנייה, יספור בכל פעם, וכאשר הוא חוזר ל 0V ואז הוא פולט את המספר המתקבל לתצוגת המנתח, ומראה שתיים עשרה בינאריות על הלדים. אז זו התוכנית. נראה אם נוכל ליישם זאת.
שלב 2: תת שורות תקשורת
הדבר הראשון שעלינו לעשות הוא לחבר את שני הבקרים. אז קח חוט מ- PD6 על אחד וחבר אותו ל- PD7 מצד שני, ולהיפך. לאחר מכן אתחל אותם על ידי הגדרת PD7 ל- OUTPUT בשניהם ו- PD6 ל- INPUT בשניהם. לבסוף הגדר את כולם ל- 0V. באופן ספציפי, הוסף את הדברים הבאים למקטע Init או Reset של הקוד בכל מיקרו -בקר:
sbi DDRD, 7; PD7 מוגדר לפלט
cbi PortD, 7; PD7 בתחילה 0V cbi DDRD, 6; PD6 מוגדר לקלט cbi PortD, 6; PD6 בתחילה 0V clr הכולל; סה כ על קוביות בתחילה 0
עכשיו בואו נקים את תת-התוכנית לתקשורת על שבב גליל הקוביות. ראשית הגדירו משתנה חדש בחלק העליון שנקרא "סה"כ" שיאחסן את המספר הכולל שיורד על זוג הקוביות ויאתחל אותו לאפס.
לאחר מכן כתוב תת -תוכנית לתקשר עם מנתח:
לתקשר:
cbi PortD, 7 sbi PortD, 7; שלח המתנה לאות מוכן: sbic PinD, 6; קרא PinD ודלג אם 0V rjmp המתנה 8; עיכוב לסנכרן (מצא זאת בניסוי) שליחה: דק עיכוב כולל 2; עיכוב עבור כל מספר cpi cpi, 0; 0 כאן פירושו עיכובים במספר הכולל נשלחו breq PC+2 rjmp שלח cbi PortD, 7; סך הכול PD7 עד 0V clr; אפס את סך כל הקוביות ל- 0 ret
במנתח אנו מוסיפים rcall מהשגרה העיקרית לתוכנית המשנה לתקשר:
מנתח clr; להתכונן למספר חדש
sbic PinD, 6; בדוק את PD6 לאיתור תקשורת אותות 5V; אם 5V ללכת לתקשר מנתח mov, סה כ; פלט למנתח תצוגת rcall display
ולאחר מכן כתוב את תת התוכנית לתקשר כדלקמן:
לתקשר:
סך הכל; איפוס כולל ל 0 עיכוב 10; עיכוב להיפטר מקפיץ sbi PortD, 7; הגדר PB7 ל- 5V לאותת קבלה מוכנה: עיכוב 2; המתן למספר הבא כולל סך הכל; להגדיל את סך PinD sbic 6; אם PD6 חוזר ל- 0V סיימנו לקבל rjmp; אחרת לולאה לגבות נתונים נוספים cbi PortD, 7; אפס את PD7 בסיום ret
הנה לך! כעת כל מיקרו -בקר מוגדר לתקשר את התוצאה של זריקת הקוביות ולאחר מכן להציג אותה על מנתח.
ניישם דרך תקשורת הרבה יותר יעילה בהמשך כאשר נצטרך להעביר את תוכן הרשם בין בקרים במקום רק זריקת קוביות. במקרה זה, עדיין נשתמש רק בשני חוטים המחברים ביניהם אך נשתמש ב -1, 1 בכוונה "התחל בשידור"; 0, 1 פירושו "1"; 1, 0 פירושו "0"; ולבסוף 0, 0 פירושו "סוף שידור".
תרגיל 1: בדוק אם תוכל ליישם את השיטה הטובה יותר ולהשתמש בה להעביר את זריקת הקוביות כמספר בינארי של 8 סיביות.
אצרף סרטון המציג את שלי בפעולה.
שלב 3: מסקנה
צירפתי את הקוד המלא לעיונך. הוא לא נקי ומסודר כמו שהייתי רוצה, אבל אני אנקה אותו ככל שנרחיב אותו בהדרכות עתידיות.
מעכשיו אני רק אצרף את הקבצים המכילים קוד במקום להקליד הכל כאן. פשוט נכתוב את הסעיפים בהם אנו מעוניינים לדון.
זו הייתה הדרכה קצרה שבה מצאנו שיטה פשוטה לספר למיקרו-בקר המנתח שלנו מה התוצאה של זריקת הקוביות שלנו מהמיקרו-בקר-גלגל הקוביות תוך שימוש בשתי יציאות בלבד.
תרגיל 2: במקום להשתמש באות מוכן להראות מתי גלגל הקוביות מוכן לשדר ועוד כאשר המנתח מוכן לקבל, השתמש ב"הפרעה חיצונית "הנקראת" הפרעה לשינוי סיכה ". ניתן להשתמש בסיכות ב- atmega328p בדרך זו ולכן יש להן PCINT0 דרך PCINT23 לצידן בתרשים ה- pinout. אתה יכול ליישם זאת כהפרעה באופן דומה לזה שעשינו עם הפסקת הצפת הטיימר. במקרה זה "המטפל" המפריע יהיה תת התוכנית המתקשר עם גלגל הקוביות. בדרך זו אין צורך להתקשר למעשה לתת -התקשורת מרשת הראשי: היא תגיע לשם בכל פעם שיש הפרעה המגיעה משינוי מצב על הסיכה הזו.
תרגיל 3: דרך הרבה יותר טובה לתקשר ולהעביר נתונים בין מיקרו-בקר אחד לאוסף של אחרים היא שימוש בממשק הטורי 2-חוטי המובנה על המיקרו-בקר עצמו. נסה לקרוא את סעיף 22 של גליון הנתונים ובדוק אם תוכל להבין כיצד ליישם אותו.
נשתמש בטכניקות מתוחכמות יותר אלה בעתיד כאשר נוסיף בקרים נוספים.
העובדה שכל מה שעשינו עם המנתח שלנו היא לקחת את סך כל זריקת הקוביות ואז להדפיס אותו בינארי באמצעות נוריות LED היא לא מה שחשוב. העובדה היא שעכשיו מנתח שלנו "יודע" מהי זרוע הקוביות ויכול להשתמש בה בהתאם.
במדריך הבא נשנה את מטרת ה"מנתח "שלנו, נציג עוד כמה אלמנטים של מעגלים, ונשתמש בגליל הקוביות בצורה מעניינת יותר.
עד הפעם הבאה…
מוּמלָץ:
הדרכה להרכבת AVR 2: 4 שלבים
הדרכה להרכבת AVR 2: הדרכה זו היא המשך של " AVR Assembler Tutorial 1 " אם לא עברת את הדרכה 1 עליך לעצור כעת ולעשות זאת תחילה. במדריך זה נמשיך במחקר שלנו על תכנות שפת הרכבה של atmega328p u
הדרכה להרכבת AVR 8: 4 שלבים
הדרכה להרכבת AVR 8: ברוכים הבאים למדריך 8! במדריך קצר זה אנו הולכים לקחת קצת הסחה מהצגת היבטים חדשים של תכנות שפת הרכבה כדי להראות כיצד להעביר את רכיבי האב טיפוס שלנו ל " מודפס " לוח מגעים. ה
הדרכה להרכבת AVR 7: 12 שלבים
מדריך הרכבה AVR Assembler 7: ברוכים הבאים למדריך 7! היום אנו הולכים להראות תחילה כיצד לסנן לוח מקשים ולאחר מכן להראות כיצד להשתמש ביציאות הקלט האנלוגיות לתקשורת עם לוח המקשים. נעשה זאת באמצעות הפרעות וחוט יחיד כמו קֶלֶט. אנו נחווט את לוח המקשים כך ש
הדרכה להרכבת AVR 9: 7 שלבים
הדרכה למרכיבי AVR 9: ברוכים הבאים למדריך 9. היום נראה כיצד לשלוט על תצוגה בת 7 קטעים ותצוגה בת 4 ספרות באמצעות קוד השפה ATmega328P ו- AVR שלנו. במהלך פעולה זו נצטרך לקחת הסחות דעת כיצד להשתמש בערימה
הדרכה להרכבת AVR 11: 5 שלבים
הדרכה למרכיבי AVR 11: ברוכים הבאים למדריך 11! במדריך קצר זה, סוף סוף אנו הולכים לבנות את החלק הראשון של פרויקט הגמר שלנו. הדבר הראשון שעליך לעשות הוא לעבור לשלב האחרון של הדרכה זו ולצפות בסרטון. ואז תחזור לכאן. [עוצר בזמן שאתה