ארכיטקטורת AVR (לפחות ב-8 ביט) מקבלת כיוון חדש, ונכון להיום ה-ATmega4809 הוא הנציג הבולט והמדובר ביותר של הכיוון הזה. אז השגתי כמה מיקרו-בקרים וניסיתי לתכנן להם PCB ייעודי, למרות לחץ זמן ועבודה. הנה מה שקרה בעקבות כך.
ה-ATmega4809, הרכיב בעל הכי הרבה זיכרון ופינים בסדרתATmega 0-Series החדשה, התפרסם בחוגי המייקרים בתור ה"יורש" של ה-328P בדגם הארדואינו Uno הבא עלינו לטובה. בפורומים קצת יותר מקצועיים יש מי שמכנה אותו בשם "ATxmega בעור של כבש". מבחינת הארגון הפנימי של החומרה הוא אכן קרוב הרבה יותר לרכיבי ATxmega המשוכללים מאשר ל-ATmega, אבל במובנים אחרים הוא עדיין mega "רגיל": בין השאר הוא מסוגל לפעול ב-5V, ותומך בתדר שעון רק עד 20MHz (אם כי בניגוד ל-328P יש לו מתנד פנימי שמסוגל להגיע לתדר כזה)
החיפזון מן השטן
במשך זמן רב התלבטתי בקשר ל-4809. האם כדאי להתנסות ולהשקיע במיקרו-בקר עם Errata מפוקפקת שכזו? אין שם הרבה תקלות (יחסית), אבל אלה שיש עלולות להיות רלוונטיות לדברים שאני עשוי לרצות לבצע. למרות זאת, כשהופיעה הזדמנות לצרף כמה ג'וקים להזמנת רכיבים אחרת, לא התאפקתי ורכשתי ארבעה. המארז שלהם הוא TQFP-48 צפוף (פינים בקפיצות של 0.5 מ"מ), מה שמחייב או עבודה לא נוחה עם PCB מתאם סטנדרטי, או לחלופין יצירה של PCB ייעודי.
בערך באותו זמן, בדיוק שהייתי בלחץ לתכנן ללקוחות שלושה PCB שונים ולעדכן לוח רביעי, צצה הזדמנות אחרת – להזמין לוחות בזול. הקאץ' היה שחלון הזמן מוגבל מאוד, אז תכננתי משהו בזריזות ושלחתי אותו לייצור כמעט בלי בדיקות – מתכון ידוע לבעיות.
את הבעיה הראשונה גיליתי בערך יום אחרי שהייצור התחיל. סתם הסתכלתי על התכנון שלי במחשב, והבחנתי פתאום ששכחתי לערוך טקסט שעשיתי לו העתק-הדבק, ועל הלוח שלי יהיו שני פינים שמסומנים בכיתוב CLKOUT (במקום אחד CLKOUT ואחד CLKIN). פאדיחה!
כשהלוחות הגיעו זיהיתי פאדיחה גרפית נוספת: ה-Footprint שבחרתי לשני הלדים אמנם הייתה בגודל הנכון (לרכיבי 0805), אבל היא הייתה גנרית, ללא הסימון הגרפי של כיוון הלד. כדי להלחים אותם בכיוון הנכון צריך לפיכך להכיר את המעגל או לעקוב אחרי המוליכים. וכאן יש בעיה שלישית: מתוך סקרנות, וכיוון שהאופציה הייתה בחינם, בחרתי שהלוחות יהיו לבנים, ומסתבר שהלבן הוא אחד הצבעים הכי לא נוחים שיש מבחינת מעקב אחרי המוליכים…
כל הבעיות האלה מתגמדות לעומת הסיפור של מחבר ה-USB (שמשמש כאן לאספקת חשמל בלבד, לא לתקשורת). את המחברים האלה קניתי לפני זמן רב בשביל פרויקט שבוטל מאז, וחשבתי שזו הזדמנות מצוינת להפיק מהם תועלת. לכל מחבר יש חמישה פינים אופקיים זעירים שמולחמים לפדים רגילים, וארבע רגלי מתכת אנכיות שמעגנות אותו ללוח. את החורים עבור הרגליים האלה מיקמתי בצורה מושלמת, אבל בטעות הגדרתי אותם בתוכנת עיצוב ה-PCB כ-Mechanical ולא כ-Through-hole, מה שאומר שהם חורים נטו, בלי נחושת להלחמה. כמו כן, הרגליים של המחבר קצרות מאוד ואפילו לא מגיעות לצד השני של ה-PCB, כך שאי אפשר לכופף אותן כמו במהדק סיכות. בקיצור, אין מה שיחזיק את המחבר על הלוח!
הלוח עם החורים הבעייתיים, והמחבר בצורתו המקורית (הפוך). לחצו להגדלה.
עשיתי כמה נסיונות נפל עם דבקים שונים, ואז צץ במוחי רעיון חדש. לקחתי פס מתכת דק (מרגל ארוכה של Stackable header) והשחלתי אותו, כמו סיכה של מהדק, מהצד התחתון של הלוח דרך שני החורים הצדדיים שמיועדים למחבר. את הזנבות הבולטים של הפס כופפתי כלפי חוץ, לצדדים, וכופפתי גם את הרגליים של המחבר עצמו כך שיפנו הצדה ולא למטה. כעת יכולתי להלחים את הרגליים האלה אל פס המתכת, ועל ידי כך בעצם לעגן את המחבר למקומו. אמנם שתי הרגליים האחרות של המחבר נותרו ללא חיזוק, אך הסתבר שהפתרון הזה בכל זאת לא רע, ועומד באופן סביר בהחלט בלחצים המכניים.
מה בלוח
אחרי כל הבלגנים האלה, בואו נדבר על מה שכן עובד בלוח. בצד הנגדי למחבר נמצא חיבור 2×3 פינים ל-UPDI, הלא הוא ממשק הצריבה והדיבוג החדש של ה-4809 ומשפחתו. יש לחצן לאיפוס, וגישה נוחה לכל הפינים של המיקרו-בקר, מסודרת לפי הפורטים השונים. אפשר להלחים ללוח מייצב מתח ל-3.3V ולנתב את אספקת החשמל דרכו, או להשתמש ישירות במתח הגולמי שמסופק למערכת. לד אחד מאיר ברציפות כשיש אספקת חשמל, והלד השני נשלט על ידי התוכנה, דרך פין PC6.
אל הצד התחתון של הלוח אפשר להלחים גביש 32.768KHz, ולהיעזר בו כשעון מדויק עבור מודול ה-RTC של ה-4809. לחלופין אפשר להלחים שני גשרי בדיל ולהנציל את שני הפינים שקשורים לגביש כפיני GPIO רגילים. לסיום, הכנתי גם מקום לנגדי pull-up חיוניים עבור כל הפינים שעשויים לשמש, בקונפיגורציות שונות, לתקשורת I2C.
תוך כדי תכנון השתדלתי לשלב בלוח כמה שיותר רכיבים שכבר יש לי במלאי, כדי שלא אצטרך לקנות במיוחד. על מחבר ה-USB כבר דיברתי. הגביש הוא זה שהגיע עם לוחות ה-MSP430G2 Launchpad (היו ימים… זוכרים?), לחצן האיפוס הוא מהסוג שקניתי בשביל פרויקט פיקאדום, מייצב המתח הוא מדגם שהצטיידתי בו פעם וכדומה.
ומה עם התוכנה?
אחרי האילתור לחיזוק מחבר ה-USB, וקצת טיפקס למחיקת ה-"OUT" המיותר (כאן הצבע הלבן של הלוח דווקא התאים), הגיע הזמן לשבת ולכתוב את התוכנה. על כך – בפוסט הבא…