הכירו את הטיינים החדשים

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

ATtiny817
ATtiny817

משפחה קטנה-גדולה

נתחיל בהקשר הרחב-יותר: ATtiny היא משפחה של מיקרו-בקרים 8-ביט בארכיטקטורת AVR, שהתחילו להופיע (אם אינני טועה) בשנת 2003. היא כוללת מספר דגמים מוכרים-יחסית כמו ATtiny85 כאמור, או ATtiny13 החלש, והרבה דגמים אחרים שרוב המייקרים מעולם לא שמעו עליהם, כגון ATtiny4 הסופר-מינימליסטי בעל ששת הפינים או ATtiny1634 עם 1K זיכרון RAM ושני UART בחומרה (תכל'ס עד התחקיר לפוסט הזה אפילו אני לא שמעתי עליו).

ה-ATtiny85 היה מעולה לזמנו, אבל האבולוציה של המיקרו-בקרים נמשכת, ובשנה-שנתיים האחרונות החלו לטפטף לשוק דגמי ATtiny חדשים מסדרה שנקראת 1-Series. השם הזה מסתיר מהפך יסודי במבנה הפנימי של המיקרו-בקר: מבחינה זו, הטיינים החדשים שונים מהישנים כמו שמשפחות ATmega או Xmega שונות מהם, אם לא יותר.

מה נשתנה

הדבר הראשון שבולט לעין, וגם מבאס, הוא שהטיינים החדשים – לפחות נכון להיום – לא קיימים במארזי DIP, והדגמים עם 24 פינים (אלה שהשם שלהם נגמר בספרה 7) לא קיימים אפילו ב-SOIC אלא רק במארזי QFN המתסכלים.

מבחינת זיכרונות, כל הדגמים החדשים מתקמצנים על ה-EEPROM: אפילו לנדיבים ביותר יש רק 256 בייטים, לעומת 512 ב-ATtiny85. גודל ה-FLASH לעומת זאת נע בין 2 ל-32 קילובייט (בשם של הרכיב זו הספרה או השתיים שלפני ה-"1", למשל ל-ATtiny1616 יש 16KB), וכמות ה-RAM נעה בין 128 בייטים בדגמים הכי חלשים ועד ל-2KB – כמו בארדואינו אונו.

מיקרו-בקר ATtiny1616 בהכנה לבדיקות
מיקרו-בקר ATtiny1616 בהכנה לבדיקות

תדר השעון המירבי הוא עדיין 20MHz (במתח 4.5V ומעלה), אבל בטיינים החדשים קיים מתנד פנימי שמסוגל להגיע למהירות הזו, כך שאם אתם מוכנים לסבול אחוז או שניים של סטייה תוכלו לחסוך את הבלגן (והפינים) של המתנד החיצוני. בנוסף, החדשים כוללים Two-cycle hardware multiplier, שיכול להאיץ משמעותית פעולות מסוימות.

אפרופו חיסכון בפינים, הטיינים החדשים עובדים עם "ממשק מאוחד לתכנות ולדיבוג" ("UPDI"), שעושה את שתי הפעולות האלה במלואן דרך פין ה-RESET של המיקרו-בקר. זאת אומרת שגם יש לנו אפשרות לדבג את הטיינים האלה לעומק, וגם פחות כאבי ראש בתכנון PCB עבורם או סתם בחיבור וניתוק של הצורב/מדבג ממעגל הבדיקה. החיסרון הוא שבשביל לעשות את כל זה צריך צורב מתאים, קרי ה-ATMEL ICE היקר, או לבצע קצת האקינג על אחד מלוחות ההדגמה של הטיינים, שכוללים צורב מובנה. אפרופו, אל תספרו לאף אחד שאמרתי, אבל הצורבים המובנים האלה מבוססים על ATmega32U4, כמו הארדואינו לאונרדו ותואמיו. אז בתיאוריה ייתכן שיש כאן פתח להאקינג עוד יותר יצירתי.

לוח ההדגמה של ה-ATtiny817
לוח ההדגמה של ה-ATtiny817 (רואים שתוכנן לפני הרכישה של Atmel על ידי Microchip…)

הדברים החשובים באמת

כפי שקוראי הבלוג הנאמנים כבר יודעים, התחרות האמיתית בעולם ה-8-ביט כבר מזמן לא מתמקדת בנפחי זיכרון ובמהירויות. מאמצי השכנוע של היצרנים השונים כיום מתמקדים בתכונות כמו חיסכון בחשמל ובמודולים הפריפריאליים – כל אותן יכולות אקסטרה שלמעשה פועלות בנפרד מה"מוח" של הרכיב. בגזרה הזו יש לכל הטיינים החדשים הרבה מה להראות בנוסף למה שאנחנו כבר מכירים: תקשורת UART (שאם הבנתי נכון יכולה להפוך גם למודול SPI נוסף), מודול דיגיטלי-לאנלוגי (DAC) 8-ביט, יחידה לוגית ניתנת-להתאמה (דומה ל-CLC שב-PIC החדשים), מודול חישה קיבולית, פינים חלופיים לפונקציות שונות ועוד.

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

מסקנות

משפחת ה-ATtiny עשתה קפיצת מדרגה רצינית, והדגמים החדשים ניצבים בכבוד בקו הראשון של ה-8-ביט מבחינת היכולות שלהם. בנוסף, הגב הרחב-מאוד של חברת Microchip והמחיר הנמוך-יחסית הופכים אותם לאופציה אטרקטיבית ביותר לפיתוח מערכות Embedded קטנות. המחיר של כל הפלוסים האלה הוא התרחקות מעולם המייקרים והמתחילים, אבל כמו שאומרים בפולנית: נו מילא. כמה זמן אפשר להמשיך לשחק רק עם ארדואינו?

למידע נוסף, הנה הסקירה של ג'יי קרלסון על ה-1-Series במסגרת הפרויקט המרתק "The amazing $1 Microcontroller".

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *