תוכן עניינים:
- שלב 1: בנה לוח בדיקה
- שלב 2: התקן את Assembler ו- Avrdude
- שלב 3: שלום עולם
- שלב 4: Hello.asm שורה אחר שורה
- שלב 5: מסקנה
וִידֵאוֹ: מדריך הרכבה של AVR 1: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:11
החלטתי לכתוב סדרת הדרכות כיצד לכתוב תוכניות שפת הרכבה עבור Atmega328p שהוא המיקרו -בקר המשמש בארדואינו. אם אנשים יישארו מעוניינים אני אמשיך להוציא שבוע בערך עד שייגמר לי הזמן הפנוי או שאנשים יפסיקו לקרוא אותם.
אני מפעיל את Arch linux ואני עובד על atmega328p-pu שהוקם על לוח לחם. אתה יכול לעשות את זה בדיוק כמוני או שאתה יכול פשוט לחבר ארדואינו למחשב שלך ולעבוד על הבקרה כך.
אנו נכתוב תוכניות עבור 328p כמו זו שנמצאת ברוב הארדואינו, אך עליך לשים לב שאותן תוכניות וטכניקות אלה יעבדו גם עבור כל אחד מבקרי המיקרו Atmel ובהמשך (אם יש עניין) נעבוד עם כמה גם האחרים. את הפרטים של המיקרו -בקר ניתן למצוא בגיליונות הנתונים של Atmel ובמדריך סט ההוראות. אני מצרף אותם להנחיה הזו.
להלן מה שתצטרך:
1. לוח לחם
2. ארדואינו, או רק המיקרו -בקר
3. מחשב שמריץ לינוקס
4. מכלול אברה באמצעות git: שיבוט git https://github.com/Ro5bert/avra.git או אם אתה משתמש באובונטו או במערכת מבוססת דביאן פשוט הקלד "sudo apt install avra" ותקבל את שני ה- avr assembler ו- avrdude. עם זאת, אם תקבל את הגירסה העדכנית ביותר באמצעות github, תקבל גם את כל הקבצים הדרושים לכלול, במילים אחרות יש לו כבר את הקבצים m328Pdef.inc ו- tn85def.inc.
5. avrdude
את הסט המלא של מדריכי הרכבת AVR שלי תוכלו למצוא כאן:
שלב 1: בנה לוח בדיקה
אתה יכול פשוט להשתמש בארדואינו שלך ולעשות הכל במדריכים האלה על זה אם תרצה. עם זאת, מכיוון שאנו מדברים על קידוד בשפת הרכבה הפילוסופיה שלנו היא מטבעה להפשיט את כל הפריפררים ולתקשר ישירות עם המיקרו -בקר עצמו. אז אתה לא חושב שיהיה יותר כיף לעשות את זה ככה?
לאלו מכם שמסכימים, תוכלו לשלוף את המיקרו -בקר מהארדואינו ולאחר מכן להתחיל בבניית "ארדואינו ללוח -לחם" על ידי ביצוע ההנחיות כאן:
בתמונה אני מציג את המערך שלי המורכב משני Atmega328p עצמאיים על קרש לחם גדול (אני רוצה להיות מסוגל לשמור את ההדרכה הקודמת מחוברת ונטענת על מיקרו -בקר אחד בזמן העבודה על הבא). יש לי את אספקת החשמל מוגדרת כך שהמסילה העליונה היא 9V וכל השאר 5V מווסת המתח. אני משתמש גם בלוח פריצה FT232R כדי לתכנת את השבבים. קניתי אותם ושמתי עליהם מטענים בעצמי, אבל אם רק שלפת אחד מארדואינו אז זה כבר בסדר.
שים לב שאם אתה מנסה את זה עם ATtiny85, תוכל פשוט להשיג את מתכנת Sparkfun Tiny כאן: https://www.sparkfun.com/products/11801# ולאחר מכן פשוט חבר אותו ליציאת ה- USB במחשב שלך. תחילה יהיה עליך להתקין מטען אתחול ב- Attiny85 והדרך הקלה ביותר היא פשוט להשתמש ב- Arduino IDE. עם זאת, יהיה עליך ללחוץ על הקובץ ועל ההעדפות ולאחר מכן להוסיף את כתובת האתר החדשה של לוחות: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json אשר מאפשר לך להתקין את מטען האתחול (אם ATtiny85 שלך לא הגיע עם אחד כבר).
שלב 2: התקן את Assembler ו- Avrdude
כעת תוכל להוריד ולהתקין את האסמבלר וה- avrdude מהקישורים שניתנו בשלב הראשון של מדריך זה. סביר להניח שאם כבר עבדת עם Arduino's אז כבר התקנת avrdude.
לאחר התקנת אברה תבחין כי יש תת -ספרייה שמגיעה איתו בשם "מקורות" ובתוך הספרייה הזו יש חבורה של קבצי כולל. כל אלה הם בקרי המיקרו שתוכל לתכנת עם אברה. מיד תבחין כי אין קובץ ל- 328p שבו אנו משתמשים כאן. צירפתי אחד. הקובץ צריך להיקרא m328Pdef.inc ואתה צריך להכניס אותו לספריית כולל או בכל מקום אחר שאתה אוהב. נכלול אותו בתוכניות שפת ההרכבה שלנו. כל זה הוא לתת לכל אחד מהרשמים בשמות המיקרו -בקר מתוך גליון הנתונים כך שלא נצטרך להשתמש בשמותיהם הקסדצימליים. הקובץ הכולל לעיל מכיל "הוראות פרגמה" מכיוון שהוא תוכנן לתכנות C ו- C ++. אם נמאס לך לראות את המאסף יורק תלונות "מתעלמות מהנחיית פרגמה" פשוט היכנס לקובץ ומחק או פרסם את כל השורות המתחילות ב- #pragma
אוקיי, עכשיו כשיש לך את המיקרו -בקר מוכן, המאסף שלך מוכן והתכנת שלך מוכן, נוכל לכתוב את התוכנית הראשונה שלנו.
הערה: אם אתה משתמש ב- ATtiny85 במקום ב- ATmega328P, עליך לקבל קובץ כולל שונה הנקרא tn85def.inc. אני אצרף אותו גם (שים לב שהייתי צריך לקרוא לזה tn85def.inc.txt כדי שהמדריכים יאפשרו לי להעלות אותו.) עם זאת, אם קיבלת את אברמבלר מ- github אז כבר יש לך את שני הקבצים האלה איתו. אז אני ממליץ להשיג אותו ולרכז אותו בעצמך: שיבוט git
שלב 3: שלום עולם
מטרת הדרכה ראשונה זו היא לבנות את התוכנית הראשונה הסטנדרטית שכותבים כאשר לומדים כל שפה חדשה או בוחנים כל פלטפורמת אלקטרוניקה חדשה. "שלום עולם!." במקרה שלנו אנחנו פשוט רוצים לכתוב תוכנית שפת הרכבה, להרכיב אותה ולהעלות אותה למיקרו -בקר שלנו. התוכנית תגרום לנורית להידלק. לגרום לנורית "למצמץ" כמו שהם עושים עבור התוכנית הרגילה של ארדואינו שלום עולם היא למעשה תוכנית הרבה יותר מסובכת בשפת הרכבה ולכן לא נעשה זאת עדיין. אנו הולכים לכתוב את הקוד הפשוט ביותר של "עצמות חשופות" עם מינימום מיותרים מיותרים.
תחילה חבר נורית מ- PB5 (ראה תרשים ה- pinout) הנקראת גם Digital Out 13 על ארדואינו, לנגד 220 אוהם ולאחר מכן ל- GND. כְּלוֹמַר.
PB5 - LED - R (220 אוהם) - GND
עכשיו לכתוב את התוכנית. פתח את עורך הטקסט האהוב עליך וצור קובץ בשם "hello.asm"
; שלום.אסם
; מדליק נורית שמחוברת ל- PB5 (יציאה דיגיטלית 13). כולל "./m328Pdef.inc" ldi r16, 0b00100000 out DDRB, r16 out PortB, r16 Start: rjmp Start
האמור לעיל הוא הקוד. נעבור על זה שורה אחר שורה בעוד דקה, אך ראשית נוודא שנוכל לגרום לזה לפעול במכשיר שלך.
לאחר שיצרת את הקובץ, במסוף אתה מרכיב אותו כדלקמן:
avra hello.asm
זה ירכיב את הקוד שלך וייצור קובץ בשם hello.hex שנוכל להעלות אותו כדלקמן:
avrdude -p m328p -c stk500v1 -b 57600 -P /dev /ttyUSB0 -U פלאש: w: hello.hex
אם אתה משתמש בארדואינו עם קרש לחם, יהיה עליך ללחוץ על כפתור האיפוס על הארדואינו של לוח הלחם ממש לפני שתבצע את הפקודה לעיל. שים לב כי ייתכן שיהיה עליך להוסיף סודו מלפנים או לבצע אותו כשורש. שים לב גם שבחלק מהארדואינו (כמו ה- Arduino UNO) סביר להניח שתצטרך לשנות את קצב הסיביות ל- -b 115200 ואת היציאה -P /dev /ttyACM0 (אם תקבל שגיאה מ- avrdude על חתימת מכשיר לא חוקית, פשוט הוסף - F לפקודה)
אם הכל עבד כפי שהוא אמור להדליק כעת נורית LED ….. "שלום עולם!"
אם אתה משתמש ב- ATtiny85 אז הפקודה avrdude תהיה:
avrdude -p attiny85 -c usbtiny -U flash: w: hello.hex
שלב 4: Hello.asm שורה אחר שורה
לסיום מדריך מבוא זה נעבור על התוכנית hello.asm שורה אחר שורה כדי לראות כיצד היא פועלת.
; שלום.אסם
; מדליק נורית שמחוברת ל- PB5 (יציאה דיגיטלית 13)
הכל לאחר נקודה -פסיק מתעלם על ידי המאסף ומכאן ששתי השורות הראשונות הללו הן פשוט "הערות" המסבירות מה התוכנית עושה.
.כלול "./m328Pdef.inc"
שורה זו אומרת למאסף לכלול את הקובץ m328Pdef.inc שהורדת. ייתכן שתרצה להכניס את זה לספרייה של קבצים כלולים דומים ולאחר מכן שנה את השורה למעלה כדי להצביע עליה שם.
ldi r16, 0b00100000
ldi מייצג "עומס מיידי" ואומר למרכיב לקחת רישום עבודה, r16 במקרה זה, ולהטעין לתוכו מספר בינארי, 0b00100000 במקרה זה. ה- 0b מלפנים אומר שהמספר שלנו בינארי. אם היינו רוצים היינו יכולים לבחור בסיס אחר, כמו הקסדצימלי. במקרה זה המספר שלנו היה 0x20 שהוא הקסדסימלי עבור 0b00100000. או שיכולנו להשתמש ב- 32 שהוא בסיס 10 עשרוני עבור אותו מספר.
תרגיל 1: נסה לשנות את המספר בשורה למעלה ל- hexidecimal ולאחר מכן לעשרוני בקוד שלך וודא שהוא עדיין פועל בכל מקרה.
השימוש בינארי הוא הפשוט ביותר אם כי בגלל האופן שבו פורטים ורשמים עובדים. נדון ביציאות והרשמים של ה- atmega328p בפירוט רב יותר במדריכים עתידיים, אך לעת עתה רק אציין כי אנו משתמשים ב- r16 כ"רשם העבודה "שלנו, כלומר אנו הולכים להשתמש בו כמשתנה שאנו מאחסנים. מספרים. "רישום" הוא קבוצה של 8 סיביות. כלומר 8 נקודות שיכולות להיות 0 או 1 ("כבוי" או "מופעל"). כאשר אנו מעמיסים את המספר הבינארי 0b00100000 לרשם באמצעות השורה לעיל פשוט שמרנו את המספר הזה ברשם r16.
יוצא DDRB, r16
שורה זו אומרת למהדר להעתיק את תוכן הרשם r16 לרשם DDRB. DDRB מייצג "Register Direction Data B" והוא מגדיר את "הסיכות" ב- PortB. על מפת ה- pinout של 328p אתה יכול לראות שיש 8 סיכות המסומנות בשם PB0, PB1,…, PB7. סיכות אלה מייצגות את "הביטים" של "PortB" וכאשר אנו מעמיסים את המספר הבינארי 00100000 לרשם ה- DDRB אנו אומרים כי אנו רוצים ש- PB0, PB1, PB2, PB3, PB4, PB6 ו- PB7 יוגדרו כסיכות INPUT מכיוון שיש להם 0 בתוכם, ו- PB5 מוגדר כסיכת OUTPUT מכיוון ששמנו 1 בנקודה זו.
יוצא PortB, r16
כעת, לאחר שתיקנו את כיווני הפינים נוכל כעת להגדיר עליהם את המתחים. השורה לעיל מעתיקה את אותו מספר בינארי מרשם האחסון שלנו r16 לפורטב. זה מגדיר את כל הפינים ל- 0 וולט למעט סיכה PB5 ל- HIGH שהוא 5 וולט.
תרגיל 2: קח מולטימטר דיגיטלי, חבר את ההובלה השחורה לאדמה (GND) ולאחר מכן בדוק כל אחד מהסיכות PB0 דרך PB7 עם ההובלה האדומה. האם המתחים בכל אחד מהסיכות הם בדיוק המתאימים להכנסת 0b00100000 ל- PortB? אם יש כאלה שלא, מדוע אתה חושב שכן? (ראו את מפת הסיכות)
הַתחָלָה:
rjmp התחל
לבסוף, השורה הראשונה למעלה היא "תווית" המתייגת נקודה בקוד. במקרה זה תיוג נקודה זו כ"התחלה ". בשורה השנייה כתוב "קפיצה יחסית לתווית התחל". התוצאה נטו היא שהמחשב ממוקם בלולאה אינסופית שפשוט ממשיכה לרכוב בחזרה לסטארט. אנחנו צריכים את זה כיוון שהתוכנית לא יכולה להסתיים או ליפול מצוק, התוכנית צריכה להמשיך לפעול על מנת שהאור יישאר דולק.
תרגיל 3: הסר את שתי השורות שלעיל מהקוד שלך כך שהתוכנית תיפול מצוק. מה קורה? אתה אמור לראות משהו שנראה כמו התוכנית ה"מצמץ "המסורתית בה השתמש ארדואינו כ"עולם שלום!". למה אתה חושב שזה מתנהג כך? (תחשוב מה חייב לקרות כשהתוכנית נופלת מצוק …)
שלב 5: מסקנה
אם הגעתם עד כאן אז מזל טוב! כעת תוכל לכתוב קוד הרכבה, להרכיב אותו ולהטעין אותו על המיקרו -בקר שלך.
במדריך זה למדת כיצד להשתמש בפקודות הבאות:
ldi hregister, מספר טוען מספר (0-255) לרשום חצי עליון (16-31)
יוצא ioregister, הרשמה מעתיקה מספר מרשם עבודה לרשום קלט/פלט
תווית rjmp קופצת לשורת התוכנית שכותרתה "תווית" (שאינה יכולה להיות רחוקה מ -204 הוראות - כלומר קפיצה יחסית)
כעת, כאשר היסודות הללו אינם מהדרך, אנו יכולים להמשיך ולכתוב קוד מעניין יותר ומעגלים והתקנים מעניינים יותר מבלי לדון במכניקה של הידור והעלאה.
אני מקווה שנהנית מההדרכה המקדימה הזו. במדריך הבא נוסיף רכיב מעגל נוסף (כפתור) ונרחיב את הקוד כך שיכלול יציאות קלט והחלטות.
מוּמלָץ:
[2021] מדריך הרכבה לרכבי שטח Valenta: 23 שלבים
[2021] מדריך הרכבה לרכב שטח מסוג Valenta: Valenta Off-Roader Valenta Off-Roader היא מכונית שטח שטח מופעל מיקרו: ביט. הוא תואם לגו טכניקה ומצויד בשני מנועי מיקרו הילוכים (x2) על הגלגלים האחוריים ו (x1) סרוו היגוי מובנה המבוסס על מנגנון זרוע שיווי משקל של רוברוואל
ערכת DIY לאוסילוסקופ - מדריך הרכבה ופתרון בעיות: 10 שלבים (עם תמונות)
ערכת אוסצילוסקופ עשה זאת בעצמך - מדריך הרכבה ופתרון בעיות: אני צריך לעתים קרובות מאוד בעת עיצוב גאדג'ט אלקטרוני כלשהו אוסצילוסקופ בכדי להתבונן בנוכחות ובצורת האותות החשמליים. עד עכשיו השתמשתי באוססילוסקופ CRT אנלוגי ערוץ יחיד (1988). זה עדיין מתפקד
מדריך הרכבה למחשב האישי: 9 שלבים
מדריך הרכבה למחשב האישי: ברוכים הבאים למדריך ההרכבה של המחשב האישי. אתה כנראה כאן כי אתה רוצה לדעת איך להרכיב מחשב. ובכן, אל תדאג, כיסינו אותך! במדריך זה לא תלמד רק כיצד להרכיב מדריך, אתה תלמד: המרכיבים העיקריים של
מדריך הרכבה של שעון צינור IV-11 VFD: 6 שלבים
מדריך הרכבה של שעון צינור IV-11 VFD: להלן שעון רטרו פונקציונאלי העשוי עם 6 ערכות DIY צינור IV-11 VFD, יש לו תצוגת אזעקה וטמפ ', עם שלט רחוק לעריכת השעון ושינוי מצב לד. הוראות להדפסה: https: //drive.google.com/open?id=0B3w2uIW46VgQWW1B…~ צריך הלחמה
מדריך הרכבה רובוטי D2-1 להמשך קו - ערכת רובוטים זולה במיוחד: 17 שלבים
מדריך הרכבה רובוטי D2-1 להמשך-ערכת רובוטים זולה במיוחד: הטכנולוגיה מדהימה, וכך גם המחירים על מוצרי אלקטרוניקה מסין! אתה יכול להשיג את ערכות הרובוט האלה העוקבות בקו בכ- 4.50 $ ליחידה ב- eBay, עם משלוח חינם. החיסרון היחיד הוא שהם מגיעים רק עם הוראות סיניות- אין הרבה שימוש ב