תוכן עניינים:

תחילת העבודה עם Bascom AVR: 5 שלבים
תחילת העבודה עם Bascom AVR: 5 שלבים

וִידֵאוֹ: תחילת העבודה עם Bascom AVR: 5 שלבים

וִידֵאוֹ: תחילת העבודה עם Bascom AVR: 5 שלבים
וִידֵאוֹ: תחילת עבודה עם אוריגמי 2024, יולי
Anonim
תחילת העבודה עם Bascom AVR
תחילת העבודה עם Bascom AVR

זוהי תחילתה של סדרה שתלמד אותך לתכנת את מיקרו -בקר ה- AVR שלך עם Bascom AVR.

למה אני עושה את זה.

את מרבית דוגמאות התוכנית בסדרה זו אתה יכול לעשות עם Arduino.

חלקם קלים יותר וחלקם קשים יותר, אך בסופו של דבר שניהם יפעלו על אותו בקר.

אך דרך התכנות שונה בכל סביבת פיתוח. Arduino צריך ספרייה לכל דבר למעט הפונקציות הבסיסיות. Bascom עובדת גם עם ספריות, אבל לעתים רחוקות אני צריך לכלול אחת. עם Arduino, כל ההגדרות הספציפיות לחומרה נעשות באמצעות הספריות. יש לך מעט מאוד השפעה על הכוח בפועל של המיקרו -בקר. החל מהטיימרים שיש לבקר. עם arduino אתה צריך שוב ספריה. אם יש לך את הטיימר עד שהוא יפעל, ייתכן שספרייה אחרת תתנגש בהגדרות שלך. ב- bascom יש לך גישה חופשית לחומרה השלמה כולל תחום האתחול שתופס arduino. לדוגמה, כמה ספריות בבאסקום שואלות אותך באיזה טיימר אתה רוצה להשתמש. מצד שני, מכיוון שארדואינו מקלה מאוד על יצירת ספרייה בעצמך, היא הופכת אותה מטבע הדברים לפלטפורמה שבה בדרך כלל יש חומרה וחיישנים חדשים ישירות ספרייה. מה שקשור לעיתים קרובות במחקרים רבים בבאסקום ובפונקציות שספרייה תטפל בהן בדרך כלל חייב להיות משולב בקפידה בקוד התוכנית. אבל חדשות טובות גם קהילת הבאסקום גדולה מאוד ולכן יש פתרון לכל רעיון.

אז זה תלוי בחלקו בפרויקט מה משמש לסביבת פיתוח ובחלקו בידע של איש התכנות.

אבל למה אני עושה את הסדרה הזאת. מצד אחד זה חוסך הרבה כסף. אני לא צריך לקנות לוח ארדואינו לכל פרויקט. לדוגמה: Uno Arduino uno עולה כ 12 € הבקר שעליו עולה רק 2.5 € עם המעגל המינימלי הנדרש לפונקציה יציבה, הוא עולה בסביבות 4 €. מצד שני יש לך את המבחר המלא של שבבי avr הנתמכים. atmegas 8 עד 256 ו- attiny 8 עד 2313 והרבה סוגים של xmega שאין לי ניסיון עליהם. אם אתה רק רוצה להשתמש בסרוו ובחיישן קולי שיכול לזהות יד למשל, ואז לפתוח מכסה של פח אשפה, תוכל להשתמש בשבב הקטן ביותר האפשרי. אז יש הרבה סיבות ללמוד שפה שנייה.

אז בואו נתחיל

אספקה

זוהי רשימת החלקים המינימליים הנדרשים להפעלה יציבה של השבב והתכנות.

לוח לחם לבדיקה

Atmega 8-16PU (עדיף שתקנה 2 או 3 אם תהרוג אותם בטעות)

ווסת מתח 7805 5V

נגד 10 קאוהם

קבל סרט 100nF

קבל אלקטרוליטי 10µF

קבל אלקטרוליטי 100µF

כמה חוטים ללוח לחם

Windows PC 7/8/8.1/10

מתכנת ספק שירותי אינטרנט (אני אשתמש כאן ב- USBasp אתה יכול לקנות אותו באמזון תמורת מעט כסף)

Bascom AVR (אתה יכול להוריד כאן DEMO. כל הפונקציות לא נעולות, אבל אתה יכול לכתוב קוד רק עד גודל 4Kb שמספיק להרבה קוד).

חלקים אופציונליים:

נוריות LED עם נגדים

מתגי לחיצה

חלקים ספציפיים לפרויקט

שלב 1: התקנת Bascom והתקנה

התקנה של Bascom והתקנה
התקנה של Bascom והתקנה
התקנה של Bascom והתקנה
התקנה של Bascom והתקנה
התקנה של Bascom והתקנה
התקנה של Bascom והתקנה

הורד את הקובץ והתקן את Bascom AVR. התקן את כל חלקיו כולל תיבת הסימון האחרונה לאחר ההתקנה.

לאחר מכן הפעל מחדש את המחשב האישי אחרת bascom לא יתחיל.

לאחר האתחול מחדש, bascom.

עבור אל אפשרויות -> מתכנת ובחר USBasp מהרשימה, שמור את ההגדרות וסגור את Bascom.

השתמש בתוכנית זו להתקנת usbasp. לאחר מכן, הפעל מחדש את המחשב האישי שלך. כעת חבר את ה- USBasp למחשב האישי שלך והפעל את מנהל ההתקנים. USBasp אמור להופיע בהתקני libusb.

הצג שוב את Bascom וצור קובץ חדש. שמור אותו במחשב ולחץ על כפתור F7 במקלדת.

המהדר מתחיל ומרכיב את התוכנית הריקה. עכשיו אתה יכול לבדוק את הפונקציונליות של המתכנת.

לחץ על כפתור F4 במקלדת כדי להפעיל את חלון המתכנת. כעת עבור אל שבב -> זיהוי כדי להתחיל באינטראקציה. נוריות ה- LED מ- USBasp אמורות כעת להבהב קצר. אתה אמור לקבל הודעה כמו שבב מזהה FFFFFF לא יכול לקרוא את המכשיר. זה סימן טוב שהתכנת עובד אבל הוא לא מצא שבב.

כעת נוכל להתחיל לבנות את המעגל הראשון.

שלב 2: בואו נסתכל מקרוב על השבב

בואו נסתכל מקרוב על השבב
בואו נסתכל מקרוב על השבב

אם מסתכלים על סיכה של השבב נראה שלשבב אין דמיון ללוח הארדואינו. בטח, אנו משתמשים ב- Atmega8 ועל ה- Arduino uno יש Atmega328. אבל ה- Pinout הוא כמעט אותו שבב של הלוח של Arduino Uno בעל פונקציות נוספות. הנה שמות הסיכות. VCC ו- GND הם הסיכות לאספקת חשמל.

AREF ו- AVCC הם סיכות למתח ההתייחסות ואספקת החשמל לממיר האנלוגי לדיגיטלי.

PB 0-7 PC 0-6 PD 0-7 הם סיכות פלט קלט למטרות כלליות עם תפוסה מרובה.

איפוס סיס הוא מה שהשם אומר. כדי להפעיל מחדש את השבב. השורה שמעל שם האיפוס פירושה שלילה. כלומר, כדי לאפס את השבב עליך להוריד אותו ל 0V.

לסיכות הבאות נפרדים הוראות שימוש בקרוב.

RXD TXD הם סיכות חומרה לתקשורת טורית UART.

INT0 INT1 הם סיכות להפריע חומרה

מקור שעון XCK /T0 UART /טיימר /דלפק 0 מקור שעון

סיכות XTAL /TOSC מיועדות לקריסטל חיצוני עד 16MHz (דגמים שונים עד 20MHz) /סיכות קריסטל ל- RTC פנימי

T1 דומה ל- T0

סיכות AIN מיועדות למשווה האנלוגי

ICP1 דומה ל- T0/T1

OC1A הוא סיכת פלט החומרה עבור ערוץ pwm טיימר 1

שבב SS / OC2 שבב לבחור SPI / כמו OC1B אבל ערוץ B

MOSI MISO SCK / OC2 הם סיכות SPI החומרה והסיכות לתכנות / טיימר פלט PWM2

ADC0 עד ADC5 הן הכניסות האנלוגיות

SDA SCL הם הסיכות לחומרה I2C

השבב הרגיל יכול לעבוד מ 4, 5V ל 5, 5V Atmega 8L יכול לעבוד עם מתח נמוך בהרבה.

אתה רואה שאפילו השבב הזה יכול לעשות יותר ממה שאנדו ארדואינו לא יכול לעשות. אבל הארדואינו יכול לעשות זאת גם, אתה רק צריך לתכנת אותו.

שלב 3: המעגל הראשון

המעגל הראשון
המעגל הראשון
המעגל הראשון
המעגל הראשון

עכשיו הגיע הזמן לבנות את המעגל הראשון שלך.

מהו בדרך כלל המעגל הראשון? ימין! בוא נצמץ נורית.

הנורית מחוברת עם PB0. לנגד הצ'יפ יש 10k אוהם.

הנגד שלצד ה- LED הוא בעל 470 אוהם.

כעת תוכל לחבר את ה- USBasp עם ה- Atmega כפי שמוצג בתמונה.

אבל לפני שתפעיל את ההפעלה תן לנו לכתוב את התוכנית.

שלב 4: כתוב את התוכנית הראשונה

כתוב את התוכנית הראשונה
כתוב את התוכנית הראשונה

צור קובץ חדש ב- Bascom והקלד את הטקסט הבא.

$ regfile "m8def.dat"

$ crystal = 1000000 portb.0 config = הפלט עשה portb.0 = המתן 1 portb.0 = 0 המתן לולאה אחת

לאחר מכן הידור זה על ידי לחיצה על F7 במקלדת.

כעת אנו יכולים לתכנת את השבב על ידי לחיצה על F4. חלון המתכנת מופיע. עכשיו הגיע הזמן להדליק את החשמל מלוח הלחם. עליך ליישם משהו בין 6 ל -12 וולט.

כעת עבור אל שבב -> תכנית אוטומטית. אם חלון המתכנת נסגר אוטומטית התכנות הצליח.

הנורית צריכה להבהב בתדר שניה אחת.

עכשיו תסתכל מקרוב על התוכנית כדי להבין את התחביר.

$ regfile "m8def.dat"

קריסטל $ = 1000000

עם $ regfile אנו מספרים למהדר את סוג השבב המשומש שם שבב ה- Arduino יהיה "m328pdef.dat"

עם קריסטל $ אנו אומרים לו את מהירות המעבד בערך 1MHz.

config portb.0 = פלט

זה אומר ש- PB0 אמור לפעול כפלט.

אגב, הקיצור PB0 פירושו יציאה B bit 0. השבב מחולק למספר יציאות. לכל יציאה ניתן מכתב לזיהוי ברור. וכל portpin קצת מ- 0 עד 7. לדוגמה, אני יכול לכתוב בייט שלם לרשם פלט היציאות, שיוציא באמצעות סיכות היציאה הבודדות.

לַעֲשׂוֹת

לוּלָאָה

זה מה שאומר בארדואינו הצהרת לולאת החלל. בין כל אלה שתי פקודות יחזרו לנצח. (למעט כמה יוצאים מן הכלל אך בהמשך עוד על כך)

Portb.0 = 1

המתן 1 portb.0 = 0 המתן 1

כאן אנו מגבירים את מצמוץ הלדים.

Portb.0 = 1 אומר לשבב להחליף את פלט PB0 ל- 5V

הפקודה wait 1 הניחה לשבב לחכות שנייה אחת. אם אתה רוצה להחליף את ה- LED מהר יותר, עליך להחליף את פקודת ההמתנה ב- waitms כעת תוכל להזין זמן מה כעת באלפיות השנייה למשל. waitms 500. (waitus פירושו לחכות בננו -שניות)

Portb.0 = 0 אומר לשבב להחליף את פלט PB0 ל 0V.

שלב 5: הוסף לחצן לשימוש בכניסות

הוסף כפתור לשימוש בכניסות
הוסף כפתור לשימוש בכניסות

כעת נוסיף כפתור להדלקת הלייד אם הכפתור נלחץ.

הכנס את הכפתור כפי שמוצג בתמונה.

כעת הקלד את תוכנית המעקב.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = יציאת config config.7 = קלט Portd.7 = 1 עשה אם pind.7 = 0 אז portb.0 = עוד portb.0 = לולאה 0

אם אתה מעלה את התוכנית לשבב, הלייד נדלק רק כאשר לוחצים על הכפתור. אבל למה?

התוכנית מתחילה באופן זהה כמו הקודמת עד

config portd.7 = קלט. כלומר, סיכה PD7 שהתחברה עם כפתור משמשת כקלט.

Portd.7 = 1 אינו מעביר את הסיכה לגבוהה, אך היא מפעילה את הנגד הפנימי כלפי מעלה של ה- Atmega.

ה- statemend אם נראה קצת מוזר אם אתה רגיל לארדואינו.

אם אתה משתמש בהצהרת if עליך להשתמש בהצהרת "אז". במדגם זה נעשה שימוש במשפט if לפעולות פקודה בודדות. אם אתה רוצה להשתמש בפקודות נוספות, עליך לכתוב זאת כך.

אם pind.7 = 0 אז

portb.0 = 1 קוד כלשהו קוד קוד כלשהו קוד אחר portb.0 = 0 סוף אם

עבור שימוש זה בהצהרת if עליך להשתמש בהצהרת "סוף אם" בסוף.

מה שעדיין חשוב. אולי כבר ראית את זה. הקלטים אינם נלקחים בשאילתות עם portx.x, אלא עם pinx.x. אתה יכול לזכור זאת בקלות. ביציאות יש את "o" (יציאה) במילה ולכניסות יש את "i" (סיכה).

עכשיו הגיע תורך לשחק קצת.

ההוראה הבאה שלי תגיע בקרוב (אמירות סטנדרטיות כמו while, select case, for, and משתנים.)

אם אתה אוהב את ההדרכה שלי ורוצה עוד ספר לי בתגובות.

מוּמלָץ: