לא כל כך שימושי למייקר הטיפוסי, אבל שווה להכיר ולו רק בשביל הגימיק: PIC10F206, אחד המיקרו-בקרים הקטנים ביותר שיש. הנה צילום שלו מונח על מיקרו-בקר אחר!
את המיקרו-בקר הפיצפון הזה פגשתי במקרה, כשהייתי זקוק בדחיפות לאיזשהו פריט ספציפי ונדיר יחסית. האופציה הכי רלוונטית באותו רגע היתה קיט שכלל גם את ה-PIC10F206, אז הזמנתי את הקיט כולו ונשארתי עם המיקרו-בקר. מה עושים עם כזה דבר?
מדובר בדגם ישן (2004) וחלש מאד, בסטנדרטים מודרניים: הוא מסוגל לבצע רק מיליון פעולות בשניה, יש לו כחצי(!) קילובייט זיכרון Flash ו-24 בייטים של RAM בלבד. הוא כולל גם Comparator (להשוואה של מתחים), Watchdog בסיסי וכן טיימר/מונה יחיד של 8 ביטים. אפשר להכניס אותו למצב שינה ולהעיר אותו באמצעות שינוי מתח על פינים, אבל אין לו פסיקות. מה שווה טיימר בלי פסיקות, אתם שואלים? לא הרבה, וזו אחת הסיבות לכך שהמיקרו-בקר הזה מתאים רק ליישומים הבסיסיים והפשוטים ביותר.
חיסרון נוסף הוא שמטעמי חיסכון, לא כל הרגיסטרים ממופים לזיכרון. המשמעות של זה היא שכדי להגיע לביטים מסוימים ברגיסטרים ולשנות אותם – ואת זה צריך לעשות בעצם בכל תוכנה – צריך לכתוב ידנית מספר פקודות באסמבלי גם אם שאר התוכנה היא ב-C.
הנה הקוד המלא של התוכנה שכתבתי, שיוצרת מעין PWM לשינוי מחזורי של עוצמת ההארה של נורית LED, ו"מקפיאה" את העוצמה כל עוד לחצן קלט נשאר לחוץ. התוכנה הזו תופסת 6 בייטים ב-RAM (רבע מהזיכרון הזמין), ו-9% מהמקום הזמין ב-Flash.
// LED Breather for the PIC10F206 // by Ido Gendel, 2016 #pragma config WDTE = OFF #pragma config CP = OFF #pragma config MCLRE = ON #include <xc.h> // Duty Cycle unsigned char dc = 0, c = 0; void setup(void) { // GP1 <- input button // Enable WPU resistors // OPTION isn't memory-mapped, so... asm("MOVLW 191"); // b 1011 1111 asm("OPTION"); // GP0 -> LED // Turn off comparator CMPON = 0; // TRIS isn't memory-mapped either asm("MOVLW 14"); // b 0000 1110 asm("TRIS 6"); } void cycle(void) { do { GP0 = (c <= dc); ++c; } while (c); } void main(void) { setup(); while (1) { // Breath in do { cycle(); if (GP1) ++dc; } while (dc); // Breath out do { if (GP1) --dc; cycle(); } while (dc); } }
ההלחמה של הרכיב היתה אתגר מעניין. לקחתי את ראש המלחם ואת הבדיל הכי דקים שיש לי, קיבעתי את הג'וק לחתיכת PCB ולמשטח העבודה בעזרת סרט קפטון (Kapton tape, מעין נייר דבק עמיד לחום), והלחמתי לכל רגל של הג'וק קטע של חוט נחושת מצופה. הציפוי המבודד נשרף ונעלם במגע ישיר עם המלחם (אם הוא חם מספיק), וכך הנחושת באותה נקודה נחשפת ו"תופסת" את הבדיל.
אני לא אגיד שזה היה קל, אבל זה היה פחות קשה ממה שציפיתי. השחלתי את הקצוות החופשיים של החוטים לחורים ב-Stripboard, הלחמתי אותם, והוספתי שורת Female Headers אחת לגישה לפינים, ושורת Male Headers בצד השני עבור הצורב PICKIT 2.
יש מיקרו-בקרים משוכללים יותר מה-PIC10F206 במארזים קטנים עוד יותר (למשל WLCSP), אם כי – למיטב ידיעתי – לא כאלה שאפשר להלחים ביד. אם אי-פעם אצטרך לבנות מעגל צ'קלקה קטן מספיק כדי להלביש אותו על דבורה או משהו, זה כנראה יהיה הפתרון שאבחר 🙂
נ.ב. הנה סרטון באנגלית עם הפרויקט ועם הסבר מפורט יותר על הקוד.
לפי החדשות של היום, בים תופסים פוקימונים ולא דגים!
הפוקימון הזה מצוין לכולם: השחקנים יכולים להתעסק בזה כל היום בלי להפעיל את המוח, והכתבים בתקשורת – גם :-/
אין ספק שקהילת המייקרים נהרה אחר פלטפורמת הavr בעקבות הארדואינו, אך למשפחת הpic יש מקום של כבוד בזכות ולא בחסד.
מחוץ לנישה הזעירה של המייקרים, רק מעטים מסתכלים בכלל על AVR… 🙂
לטעמי יש ל-AVR כמה יתרונות, אם כי הם מתקזזים עם השכלולים של ה-PIC החדשים. אם פעם הייתי הולך אוטומטית על AVR לפרויקט חדש כי זה מה שהכרתי, היום ההתלבטות הרבה יותר קשה.
וכמובן יש עוד דגים בים, אולי גם אליהם אגיע מתישהו!
מגזין edn עשו פעם סקר לגבי השיקולים של מהנדסים בבחירת מעבד לפרויקט חדש. בניגוד לציפיות, רוב האנשים לא רשמו יכולות/ביצועים או מחיר, אלא דווקא כלי פיתוח והתמיכה של היצרן….
אגב, זה לא מדויק לגבי השavr. ראיתי לו הרבה שימושים גם בעולם ה״אמיתי״. יש בהחלט מקום לכולם (וכמובן הכי כבוד ל-8051 🙂 )
זה נכון, וכשהזכרתי את היתרונות של AVR, התכוונתי גם לסביבת הפיתוח. קומפיילר חינמי בלי הגבלות ועורך קוד/פרויקטים טוב שווים לא פחות מעוד כמה מגהרצים על הסיליקון, וזה עוד לפני שבדקנו עד כמה ה-datasheet ברור ומובן.
אפרופו 8051, יש כמה צ'יפים חדשים ומעניינים של Silicon Labs (מסדרת EFM8) שאני רוצה לנסות – ברגע שאצליח להבין איך משיגים אותם בלי שחברות השילוח ישתו לי את כל החסכונות בדרך 🙂
נראה מעניין. אם כי באופן אישי יש לי מלאי של esp8266 שמחכים לזמן פנוי….
אני מתוכנן להיות בארה״ב בחצי השני של ספטמבר, אם עדיין יהיה רלוונטי, אשמח לבצע את ההובלה לארץ
האם נמצא כבר Datasheet אמתי ל-ESP8266, או שאתה מתכוון לעבוד עליו רק ב-high level?
אני מקווה למצוא פתרון לפני ספטמבר, תודה בכל אופן – אולי אציק לך עם משהו אחר 🙂