הלו טייני #1.5: צורב חלופי

פוסט זה לא היה חלק מהתוכנית המקורית של סדרת "הלו טייני" (מכאן המספור 1.5), אך הוא עשוי לעניין את אלה מביניכם שנרתעים מהמחיר הגבוה של צורב AVRISP MKII מקורי. אם לא אכפת לכם להשקיע עוד קצת עבודה בהכנות מקדימות ובתהליך הצריבה, תוכלו לחסוך שלושים ומשהו דולרים ולהעלות תוכנות ישירות למיקרו-בקר באמצעות צורב סיני זול.

הכלים

הצורב איתו נעבוד כאן נקרא USBasp. יש הרבה דגמים שלו באיביי ובאתרי הגאדג'טים הסיניים, במחירים של 3-10 דולר ליחידה – את שלי קניתי כאן. כצפוי, הוא מוגבל יחסית לצורב הרשמי ופחות משוכלל ממנו, אך לתחילת הדרך הוא יספיק בהחלט. אצלי במחשב (Windows 7) הוא זוהה בלי שהייתי צריך להתקין דרייברים כלשהם ידנית. תוספת מאוחרת: ב-Windows 8, ייתכן שתצטרכו לעשות מה שכתוב כאן.

צורב USBasp זול, ללא כבל החיבור
צורב USBasp זול, ללא כבל החיבור

כמו כן, נזדקק לתוכנה החינמית AVRDude, שמנהלת את הצריבה מצד המחשב. נכון לכתיבת שורות אלה, הגרסה העדכנית היא 6.0.1. זוהי תוכנת command line, ללא ממשק גרפי. מי שממש לא יכול בלי, מוזמן לנסות אחת מהתוכנות ש"מתלבשות" על AVRDude – למשל AVRDUDESS – אבל לא ניסיתי תוכנות כאלה ולא אתייחס אליהן בהמשך. אגב, עותק של AVRDude מגרסה ישנה יותר מסתתר בתיקיות של סביבת הפיתוח של ארדואינו, והוא זה שמנהל עבורה מאחורי הקלעים את הצריבה.

התיאוריה

כל קוד שאנחנו כותבים למיקרו-בקר (ולארדואינו) מתקמפל במחשב, בסופו של דבר, לקובץ בפורמט HEX. סביבת הפיתוח Atmel Studio שומרת את קובץ ה-HEX הסופי הזה בתיקיה של הפרויקט הספציפי, ואילו סביבת הפיתוח של ארדואינו שמה אותו במיקום זמני, אותו אפשר לראות לקראת סוף הפלט של הקימפול כשבוחרים בפלט מפורט תחת File->Preferences:

לפלט מפורט של תהליך הקימפול בסביבת הפיתוח של ארדואינו
לפלט מפורט של תהליך הקימפול בסביבת הפיתוח של ארדואינו

בעבודה רגילה, זהו שלב בדרך לצריבה שנסתר מעיני המשתמש, אבל אם אנחנו רוצים להיעזר בצורב AVRasp, אנחנו צריכים קודם כל לאתר ידנית את קובץ ה-HEX. שימו לב שהקובץ הותאם על ידי הקומפיילר לדגם ספציפי של מיקרו-בקר. אם הקובץ נוצר, למשל, על ידי סביבת הפיתוח של ארדואינו עבור לוח Arduino Uno, קובץ ה-HEX יתאים אך ורק למיקרו-בקרים מדגם ATmega328 שנמצא בלוחות ה-Uno.

החיבורים

כפי שראינו בפוסט הקודם, החיבור של הצורב למיקרו-בקר הוא בן שישה חוטים. אף על פי כן, ברבים מהצורבים הזולים (וגם בחלק מהיקרים) יש חיבור של 10 פינים. לא לדאוג, אפשר לקנות מתאמים – או לחווט לבד, אם נזהרים ובודקים כל שלב בתשומת לב.

קצה כבל החיבור של ה-USBasp
קצה כבל החיבור של ה-USBasp

עוד נקודה קריטית היא שבניגוד לצורב AVRISP MKII, שבו הפינים Vcc ו-GND שימשו לקריאה של המתח שהמיקרו-בקר מקבל, בצורב USBasp הפינים האלה משמשים לאספקת מתח למיקרו-בקר. לא ניכנס לפרטים, רק עיצרו וחישבו רגע לפני שאתם מחברים דבר כזה למיקרו-בקר שכבר מותקן בתוך מערכת פועלת. הנה הסידור של עשרת הפינים (פין מס' 10 מיוצג על ידי האות A), ומיד אחריו המקרא, שמציג רק את ששת הרלוונטיים:

13579
2468A

1 = MOSI
2 = Vcc
5 = Reset
7 = SCK
9 = MISO
10 = GND

ודאו שאתם יודעים בדיוק איפה פין 1 (מסומן במשולש שחור זעיר על גבי החיבור), ואל תתביישו לוודא עם מולטימטר שהמתח בין מה שאתם חושבים שהוא Vcc לבין GND הוא אכן חיובי ולא שלילי. אחרת, דברים עלולים להשתבש ולהתחמם מאד… ותאמינו לי, אני יודע! 😉

הצריבה

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

נניח שקובץ ה-HEX שלנו נקרא xyz.hex, ונניח בשביל הנוחות שהעתקנו אותו לאותה תיקיה שבה נמצא הקובץ AVRDude.exe. נפעיל את חלון שורת הפקודה (cmd), ונכתוב את הפקודה הבאה:

avrdude -c usbasp -p attiny85 -U flash:w:xyz.hex

הפרמטר הראשון, c usbasp- , אומר ל-AVRDude שהצורב שאיתו הוא עובד הוא מסוג USBasp.

הפרמטר השני, p attiny85-, אומר לו שהיעד לצריבה הוא מיקרו-בקר מדגם ATtiny85.

הפרמטר השלישי, U flash:w:xyz.hex-, אומר לו לצרוב (w אומרת כתיבה, Write) לפלאש את הקובץ xyz.hex.

אם כתבנו הכל כשורה ואין בעיה בחיבורים, הצריבה תתבצע, נקבל פלט כזה:

פלט של צריבה מוצלחת ב-AVRDude
פלט של צריבה מוצלחת ב-AVRDude

ואמנם יש שם כמה התראות, אבל שום שגיאה – והמיקרו-בקר יקבל ויריץ את התוכנה החדשה.

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

להרשמה
הודע לי על
6 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

למי שמעוניין לצרוב ישירות מהide tools-> external tools משהו כזה ניתן להגדיר כל צורב בכמה הגדרות פשוטות.

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

אתה כתבת בפוסט זה:
"שימו לב שהקובץ הותאם על ידי הקומפיילר לדגם ספציפי של מיקרו-בקר. אם הקובץ נוצר, למשל, על ידי סביבת הפיתוח של ארדואינו עבור לוח Arduino Uno, קובץ ה-HEX יתאים אך ורק למיקרו-בקרים מדגם ATmega328 שנמצא בלוחות ה-Uno."

ואיך אני משנה בסביבת הפיתוח של ארדואינו (Arduino IDE) לדגם ספציפי של מיקרו-בקר כמו במקרה שלנו ATtiny85?

תודה רבה עידו.

תודה, מאד עוזר.