בפוסט ארוך ועתיר תמונות זה אראה, צעד אחרי צעד, איך לגרום ל-ATtiny85 להדליק ולכבות לד פעם בשניה (פרויקט "Blink" המוכר) בעזרת הכלים שהצגתי בקצרה בפוסט הקודם – סביבת הפיתוח Atmel Studio 6.1 וצורב AVRISP MKII. אם אין לכם ניסיון קודם איתם, מומלץ לקרוא בתשומת לב עד הסוף – יש שם משהו שיחסוך לכם שעות של תסכול. וכרגיל, אני בעצמי לא מומחה לתכנות וצריבה של מיקרו-בקרים, ואת רוב הדברים שמופיעים כאן למדתי מבלוגים אחרים ומניסוי וטעיה – אז אם יש משהו שפספסתי או יכולתי לעשות יותר טוב, אשמח לשמוע בתגובות.
בשביל הפרויקט הזה נצטרך, מלבד המיקרו-בקר, גם מטריצה, נגד בערך של 200-300 אום, נורית LED רגילה, מקור כוח של 5V (כגון לוח ארדואינו או כבל USB שנחתך והותאם למשימה), שישה חוטי גישור (Jumper wires) צבעוניים, ולמי שרוצה, גם קבל בערך של מיקרו-פאראדים ספורים.
שלב ראשון: היכרות עם החיווט של חיבור ISP
בתמונה למעלה מוצג הצורב. בצד האחורי, שהוא דווקא הקדמי בתמונה, ממוקמת כניסת USB (סוג B נקבה, כמו של רוב המדפסות) ומקדימה יוצא פס עם שישה חוטים, שמסתיים בחיבור פינים מסוג נקבה. הנה תקריב של החיבור הזה:
שימו לב לסימון המשולש העדין למעלה, בצמוד לקצה החוט הקרוב ביותר למצלמה. הוא מצביע על פין מס' 1 בחיבור. פין מס' 2 הוא זה שמתחתיו, והבאים ממשיכים לפי אותה תבנית:
135
246
הנה המקרא עבור הפינים השונים, בתוספת צבע החוט שהשתמשתי עבור כל אחד מהם וטריקים שיעזרו לכם, בשאיפה, לזכור את הצבעים – זה מונע הרבה בלבולים ובעיות בחיווט בהמשך.
1 – MISO, אחד משלושת הקווים הבסיסיים של ממשק SPI. בחרתי בשבילו את הצבע החום, כמו זה של ממרח המיסו היפני (לפחות לפי גוגל תמונות, כי אני לא מתמחה באוכל יפני…).
2 – Vcc, מתח. המתח מקבל כמובן את החוט האדום, אך שימו לב – זהו אינו מתח להזנה של המיקרו-בקר, אלא חוט שמיועד לבדיקה של המתח שהמיקרו-בקר מקבל בלי קשר לצורב, מהמערכת שבה הוא נמצא!
3 – SCLK, אות השעון של ממשק SPI. הוא מקבל חוט כחול בלי סיבה טובה. אולי כי "כחול" ו-Clock מתחילים באותו עיצור?
4 – MOSI, הקו השלישי והאחרון של ה-SPI. הצבע שלו ירוק, על סמך האסוציאציה הצלילית עם Mossy באנגלית – טחוב, וטחב כידוע הוא בדרך כלל ירוק.
5 – RESET, אתחול, עם חוט לבן – המיקרו-בקר מאותחל ומתחיל מאפס, כמו דף לבן…
6 – GND, אדמה שמסומנת כמו תמיד בשחור.
זהו, החוטים מחוברים? בואו נעבור למחשב.
שלב שני: יצירת פרויקט ב-Atmel Studio
נפעיל את התוכנה. אני מדלג בכוונה על ההתקנה שלה, ההגדרות הראשוניות והעדכונים. אם התקנתם תוכנות בעבר, זה לא אמור להיות מסובך (דגש על "אמור"). רק קחו בחשבון שזה סיפור ארוך. הנה "דף ההתחלה" שיופיע לכם כברירת מחדל – לחצו להגדלה:
מכיוון שאנחנו יוצרים פרויקט חדש מאפס, נבחר בתפריט הראשי File->New->Project ונקבל את הטופס הזה:
מכיוון שאת הקוד לתוכנת הבלינק נכתוב בשפת C, נבחר מבין האופציות שבמרכז את הראשונה (פרויקט ב-C, בניגוד לפרויקט בשפת ++C או לספריה). בנוסף, נבחר למטה שם לפרויקט ותיקיה שבה הוא יישמר. השדה Solution name יתעדכן אוטומטית בהתאם ל-Name, אז לא חייבים להתעסק איתו. נלחץ על OK ונקבל טופס חדש לבחירת ה-Device, הלא הוא המיקרו-בקר. הקפידו לבחור את הדגם המדויק של המיקרו-בקר שלכם, ואל תדאגו – אם בעתיד תרצו להעביר את הפרויקט למיקרו-בקר אחר של Atmel, אפשר לשנות את הבחירה באמצעות לחיצה על התפריט Project->Properties, ובחלון שייפתח, בחירה בלשונית Device ולחיצה על הכפתור Change Device.
בשלב זה, הצורב והמיקרו-בקר לא צריכים להיות מחוברים, זוהי רק הגדרה. נלחץ על OK ונוחזר לטופס הראשי של התוכנה, שאוכלס עבורנו אוטומטית בשלד של תוכנית:
נישאר בינתיים עם הקוד הזה, עד שנטפל בחיבורים הפיזיים ונוודא שהם תקינים.
שלב שלישי: הכנת הצורב
כעת הגיע הזמן לחבר את הצורב למחשב (אם עוד לא עשיתם את זה). אמורות לדלוק בו שתי נוריות LED פנימיות: ירוקה ליד כניסת ה-USB, ואדומה בצד השני. זה תקין. נחזור לתוכנה ונבחר בה את הצורב, בתיבת הבחירה למעלה מימין שכתוב בה כרגע "No Tool", ושמסומנת בתמונה הבאה בחץ הצהוב:
תיפתח לשונית חדשה לצד קוד התוכנה, שבה תפריט נפתח לבחירת הצורב. האופציה הנוספת בתפריט זה היא סימולטר, אבל לא ניכנס לזה כאן ונלך ישר על ה-AVRISP MKII:
מיד נקבל את הטופס הבא, שבו נצטרך להגדיר מהירות שעון עבור הצורב. ברירת המחדל היא 125 קילוהרץ, ועדיף לא לדעת בזה אם לא חייבים. ההנחיה היא שמהירות השעון חייבת להיות רבע או פחות ממהירות השעון שבה המיקרו-בקר עצמו עובד, ושימו לב: לא המהירות המקסימלית שהוא יכול לעבוד, אלא המהירות שבה הוא עובד כרגע. הגדרות בית החרושת של מיקרו-בקרים מסוג ATtiny85 גורמות להם לעבוד במהירות שעון של 1 מגהרץ, כלומר שהגבול העליון לצורב עבור מיקרו-בקר טרי שכזה הוא 250 קילוהרץ. בפועל, גם עשירית מזה תגמור את הצריבה בזמן אפסי, אז כאמור – לא לגעת.
אם תסתכלו על הלשונית של הטופס הזה (בצבע בז' בתמונה, עם הכיתוב "TinyBlinkTest1") תראו שיש שם גם כוכבית. פירוש הדבר שתוכן הדף הזה לא נשמר. לחצו Ctrl+S או בתפריט File->Save Selected Items כדי לשמור את ההגדרות.
שלב רביעי: חיווט הרכיבים
נחבר למטריצה את המיקרו-בקר שלנו, כל פין ("רגל") בחמישיית חורים נפרדת כמובן. אחת הפינות של המיקרו-בקר מסומנת בשקע עגול קטנטן. זהו הסימון של פין מס' 1 (אין שום קשר למספור הפינים של הצורב!), וכמו בכל ג'וק, את הפינים הבאים אנחנו סופרים מפין מס' 1 והלאה, נגד כיוון השעון. את רגל ה"פלוס" של הלד נחבר לפין מס' 5, שנמצא בפינה הנגדית לפין מס' 1, ואת רגל ה"מינוס" נחבר בשורת חורים נפרדת אל הנגד, שיתחבר בצדו השני לפין 4 (מול פין 5). פין 5 משמש לקלט/פלט של המיקרו-בקר, ואילו פין 4 הוא האדמה (GND).
המשקיענים מוזמנים להוסיף למטריצה גם קבל, שמטרתו לייצב קצת את המתח שהמיקרו-בקר יקבל. בתמונה השתמשתי, בלי סיבה מיוחדת, בקבל אלקטרוליטי בערך של 1 מיקרו-פאראד. רגל המינוס שלו מתחברת לפין 4 כמובן, ורגל הפלוס לפין 8 שהוא כניסת המתח.
עכשיו נחבר את חוטי אספקת החשמל. עוד לא לחבר את החשמל עצמו (לקיר, ליציאת USB או לכל מקור אחר) – זה דבר שעושים רק ממש בסוף. החיבור נעשה לאותם פינים כמו של הקבל.
המערכת מוכנה, ואחרי צריבת הקוד זה כל מה שהיא תצטרך כדי לעבוד. בינתיים, בכל אופן, אנחנו זקוקים גם לחיבורים של הצורב. את זה נעשה באמצעות קריאה זהירה של תיאור הפינים מה-datasheet של המיקרו-בקר והתאמה ביניהם לבין הפינים שהזכרנו כשדיברנו על הצורב.
התוצאה הסופית צריכה להיראות כך, ואז אפשר סוף כל סוף לחבר את העסק לחשמל. בשלב זה עדיין לא יקרה שום דבר, וזה הגיוני לגמרי.
שלב חמישי: זיהוי המיקרו-בקר וצריבת ניסיון
אמנם קבענו קודם שהפרויקט מיועד ל-ATtiny85, אך התוכנה והצורב לא יודעים אם זה באמת המיקרו-בקר שמחובר אליהם כרגע. לשם כך יש לבצע עוד כמה פעולות. נחזור לתוכנה ונבחר בתפריט Tools->Device Programming. בטופס שייפתח, משמאל למעלה, נוודא שהמידע שמופיע הגיוני ואז נלחץ על Apply:
אם החיווטים נכונים והמיקרו-בקר מקבל חשמל, נקבל את הטופס המעודכן הבא. שימו לב שגם השדות Device Signature ו-Target Voltage, מימין למעלה, התמלאו אוטומטית:
אפשר ללחוץ על Close למטה כדי לסגור את החלון, והנה רגע האמת – נלחץ על כפתור ההפעלה (אפשר גם על F5). אם הכל תקין, הקוד הבסיסי שנוצר קודם יקומפל וייטען למיקרו-בקר. כך נראות השורות האחרונות של פלט קומפיילר תקין (בחלק "Output" למטה):
נראה סבבה, אלא שכמו שהזכרתי בהתחלה, יש כאן בעיה קשה שעוד לא התגלתה. נחכה איתה עוד רגע, ועד אז נכתוב ונקמפל קוד שיבצע את ההבהוב הרצוי. לא אכנס כאן לפרטים של הקוד, כי זה נושא לפוסט(ים) אחר(ים) לגמרי. הנה הקוד הסופי בסביבת הפיתוח:
כשניסיתי את זה בפעם הראשונה זה לא עבד, בזמן הצריבה הלד הבהב לחלקיק שניה (בגלל הפעילות בפין MOSI), ואחרי זה השתתק. בואו לא ניכנס לפרטים של כמה זמן וקללות זה לקח… העיקר שבסוף גיליתי את ההגדרה הקטנה שהסתתרה עמוק במערכת ודפקה את כל העסק. גשו לתפריט Project->Properties (האופציה האחרונה בתפריט Project, שתופיע בתוספת שם הפרויקט שבחרתם). כן, את הטופס שייפתח כבר ראינו קודם – רק הפעם, שימו לב גם לתפריט הנפתח למטה:
במקום ההגדרה Erase only program area (מחק רק את שטח התוכנית) שהיתה שם קודם, בחרו ב-Erase entire chip (מחק את כל השבב). מסתבר, בדיעבד כמובן, שזו בעיה ידועה של סביבת הפיתוח, שמסיבות שונות ומשונות צורבת זבל למיקרו-בקר כשההגדרה הראשונה מופעלת. בכל אופן, עכשיו באמת הכל מוכן לצריבה שגם תעבוד, וככה זה נראה:
תודה וכל הכבוד למי שהגיע/ה עד לכאן… להתראות בפוסט הבא!
שלום עידו אתה אלוף אלוף אלוף! כל מדריך שלך –זהב! כל הכבוד!!! בעקבות המאמר שלך, ראיתי פוסט דומה באנגלית, כאן: https://circuitdigest.com/microcontroller-projects/getting-started-with-stm32-development-board-stm32f103c8-using-arduino-ide אם נשלב את המאמר הזה, ביחד עם המאמר שם, אני מבין שבעיקרון אין בעיה להשתמש עם הSTM8S בסביבת פיתוח של ארדואינו. התוכנה של ארדואינו תדע גם לצרוב את זה. חשבתי לנסות את זה רק אם תואיל לתת מעט מנסיונך העשיר א. אני רואה שהוא חיבר את הSTM8 ללוח "FTDI board" אדום בצד ימין על המטריצה- לאיפה זה ממשיך? האם לצורב? או שזה היציאה של המחשב בתור ארדואינו? ב. האם לפרוייקט שם, גם צריך לקנות את הצורב הזול? למשל: https://he.aliexpress.com/item/32649400326.html… לקרוא עוד »
תודה 🙂 המאמר שמצאת מדבר על לוח ספציפי שכולל מיקרו-בקר STM32, לא STM8. הלוח הזה מאוד זול ומוכר, אבל לא בטוח שהוא תמיד עדיף על פני ארדואינו רגיל. הלוח האדום הוא מתאם USB-to-UART שמתחבר ישר למחשב, וזה לא חייב להיות FTDI – כל סוג שמתאים ל-5V ויש לו RX ו-TX יעבוד.
סדרת פוסטים מצויינת, עזרה לי מאוד להתחיל להתעסק במיקרובקרים בעצמי 🙂 מה שטוב בפוסטים האלה זה לא רק שהם כתובים בצורה ברורה ומובנת, אלא גם שהם מאוד ממוקדים בדברים הבסיסיים ומאפשרים להתחיל ללמוד ולצבור אינטואיציה וניסיון בלי לקרוא על ההתחלה 200 עמודי datasheet. ישר כוח! D:
קודם כל ישר כח על הבלוג.
אתה יכול בכל זאת לפרט על הקוד או להפנות למקום עם הסברים.
זה נראה לעין חובבנית כאילו אין קשר בין הקוד לטייני לבין קוד לארדואינו..
תודה
למעשה, צריך עין די מתקדמת כדי להבין את הקשר בין זה לבין ארדואינו! בפוסטים הבאים בסדרה הזו אני מסביר קצת יותר על הקוד, ועל הקשר בין קוד C כזה לבין מה שכותבים לארדואינו אדבר בנפרד, מתישהו בעתיד.
זה רק אני, או שהAtmel Studio נראה בול כמו הVisual Studio?
והאם אפשר לעבוד עם התוכנה הזאת גם על הMSP430 או על הארדואינו? (אני עובד ביום יום על הVisual Studio אז יהיה לי קל יותר להתרגל).
תודה רבה על כל הפוסטים!!!
זה לא רק אתה – הסתכל בתמונה של מסך הפתיחה (שלישית מלמעלה), בפינה הימנית התחתונה 🙂
אין שום קשר בין זה לבין MSP430 – הוא של חברה מתחרה. אמורים להיות תוספים לתוכנה שמותאמים ספציפית ללוחות ארדואינו, פשוט לא יצא לי לעבוד איתם. בעיקרון, אתה יכול גם לצרוב ישירות מהתוכנה את המיקרו-בקר שעל הארדואינו, אבל אז אתה תאבד את ה-Bootloader שמותקן עליו, ועד שתשחזר אותו הארדואינו לא יוכל לעבוד שוב דרך חיבור ה-USB הרגיל.
לא שמתי לב 🙂
מחיפוש בגוגל הסתבר לי שיש הרחבה לVS שמאפשרת לעבוד עם הMSP430 מהVS.
תסתכל כאן
והנה אחד (חינמי) לארדואינו
http://www.visualmicro.com/
תודה, רק שיהיה ברור שאין קשר בין התוספים האלה לבין Atmel Studio (חוץ מזה שכולם עובדים על בסיס Visual Studio).
מדריך מצוין ומפורט!