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

בחינה של האותות שמתקבלים ממקודד סיבובי פשוט (Rotary encoder) הראתה שכאשר פיני הפלט שלו עוברים בין מצבים, קפיצות המתח האקראיות (Bounce) יכולות להיות קצרות מאוד או ארוכות מאוד, בהתאם למהירות הסיבוב של המקודד – עד כדי אי יכולת להבדיל בין קפיצה כזו לבין אות לגיטימי. האם אפשר ליצור קוד שיתגבר על כך וייתן לנו קריאה מדויקת של הסיבובים על פני כל טווח המהירויות?
אחד הדברים הראשונים שמשתמשי ארדואינו לומדים הוא לקשר מספרי פינים מסוימים עם פונקציות ספציפיות: פינים 0 ו-1 הם RX ו-TX של Serial, פין 5 הוא אחד מהשישה שמסוגלים להוציא פלט PWM, וכן הלאה. במיקרו-בקרים מודרניים יותר, מוסכמות כאלה לא תמיד תופסות – לטוב ולרע. הנה כמה הסברים ודוגמאות.
להמשיך לקרוא תעביר את זה הלאה: הקצאת פינים דינמית במיקרו-בקרים
בקושי שלושה חודשים עברו מאז שקניתי את לוח הפיתוח של ה-EFM8 Busy Bee, וכבר התפניתי לשחק איתו קצת ולכתוב קוד בלינק בסיסי למיקרו-בקר המבטיח מבית Silicon Labs. הנה הפרטים הראשונים…
איך שכחתי לרגע עקרון בסיסי של עבודה עם מיקרו-בקרים, ויצרתי לעצמי בעיה שנראתה כמו משהו אחר ומטורף לגמרי.
קיבלתי ערמה קטנה של מחוונים אנלוגיים ישנים, שנאספו מכל מיני מקורות מוזרים, ויחד איתם משימה: לשלוט בהם בעזרת ארדואינו כך שזה ייראה כאילו הם מגיבים למשהו אמתי. הגיע הזמן לשלוף את הנוסחאות, את המחשבון ואת קיט הנגדים הגדול ביותר במגירה!
באירוע האקתון הארדואינו חילקתי מספר קיטים של "כרטיס ביקור סריאלי" שיצרתי. הקיט מבוסס על מיקרו-בקר PIC12F675, שיש לו זיכרון Flash בגודל 1.75KB וזיכרון RAM של 64 בייטים בלבד.
הקיט בידיים שלכם? הנה הוראות ההרכבה והשימוש. קיראו אותן בתשומת לב, שלא יהיו פאדיחות!
ניסיון תמים להגדיר טיימר של מיקרו-בקר PIC לתזמונים מדויקים מוכיח – שוב – שהסיבות לבאגים הכי מוזרים יכולות להסתתר ממש מתחת לאף. הנה ההסבר המפורט, שעשוי לחסוך לכם הרבה זמן… תרתי משמע.
לקראת פרויקט חדש, התחלתי ללמוד נושא שדי התחמקתי ממנו עד כה: כיצד כותבים Bootloader. בפוסט זה אדבר על הצרכים והשיקולים בכתיבה של Bootloader למיקרו-בקרים באופן כללי.