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

האם אפשר לנסח אלגוריתם לקריאה של מקודד סיבובי, שפותר לגמרי את בעיית ה-Bounce מצד אחד, ומצד שני לא נופל בפח של היפוך כיוון הסיבוב כפי שקרה לאלגוריתם הקודם שלי?
בחינה של האותות שמתקבלים ממקודד סיבובי פשוט (Rotary encoder) הראתה שכאשר פיני הפלט שלו עוברים בין מצבים, קפיצות המתח האקראיות (Bounce) יכולות להיות קצרות מאוד או ארוכות מאוד, בהתאם למהירות הסיבוב של המקודד – עד כדי אי יכולת להבדיל בין קפיצה כזו לבין אות לגיטימי. האם אפשר ליצור קוד שיתגבר על כך וייתן לנו קריאה מדויקת של הסיבובים על פני כל טווח המהירויות?
לפני שלוש שנים, בעודי לומד מה-Datasheet את התכונות הבסיסיות של המיקרו-בקר ATtiny85, גיליתי שאני יכול להפעיל אותו על בסיס אות שעון חיצוני בקצב איטי עד כדי גיחוך של 1Hz. בדיון הזעיר שהתנהל בנושא העליתי את הרעיון של עבודה בקצב איטי עוד יותר – עליית שעון אחת ביום, או 0.000011574Hz – כדי ליצור מערכת שמדליקה לד מדי שבת, כאשר אות השעון מבוסס איכשהו על המחזור הטבעי של יום ולילה.
הרעיון הזה מטופש מכדי להשאיר אותו לנצח בגדר תיאוריה, נכון? 🙂
אחד הדברים הראשונים שמשתמשי ארדואינו לומדים הוא לקשר מספרי פינים מסוימים עם פונקציות ספציפיות: פינים 0 ו-1 הם RX ו-TX של Serial, פין 5 הוא אחד מהשישה שמסוגלים להוציא פלט PWM, וכן הלאה. במיקרו-בקרים מודרניים יותר, מוסכמות כאלה לא תמיד תופסות – לטוב ולרע. הנה כמה הסברים ודוגמאות.
להמשיך לקרוא תעביר את זה הלאה: הקצאת פינים דינמית במיקרו-בקרים
בקושי שלושה חודשים עברו מאז שקניתי את לוח הפיתוח של ה-EFM8 Busy Bee, וכבר התפניתי לשחק איתו קצת ולכתוב קוד בלינק בסיסי למיקרו-בקר המבטיח מבית Silicon Labs. הנה הפרטים הראשונים…