לא מזמן, נשמה טובה שלחה לי שאלה שעלתה באחד הפורומים לגבי מקרה מוזר: פקודת delay של ארדואינו, שמוקמה בתוך פונקציית פסיקה (שהוגדרה באמצעות הפקודה attachInterrupt), רצה מהר מדי – ליתר דיוק, היא סיימה את פעולתה בערך ב-1/200 מהזמן הצפוי. הסתבר שכמה מהמגיבים בפורום השיבו, ובצדק, שמלכתחילה אסור לשים delay בתוך פונקציית פסיקה, ואף הפנו לתיעוד הרשמי של ארדואינו, שבו נכתב ש-delay לא תעבוד כלל במצב כזה. אבל עובדה שמשהו כן עבד, רק לא בקצב הנכון. אז מה באמת קרה שם?
ארכיון הקטגוריה: באגים
כל שמי מיסיסיפי
אנקדוטה מרתקת – או מזעזעת, תלוי איך מסתכלים על זה – מימי הפיתוח של מעבורת החלל, שמדגימה איך אפילו המומחה הכי גדול יכול לחולל פאשלה נוראית בגלל חוסר תשומת לב לפרט אחד קטן.
החיישן שנרדם בשמירה
…ולפעמים חיסכון בחשמל הוא כאב ראש לא קטן, כפי שהוכיח בדרך הקשה חיישן Hall effect תמים-למראה שחשבתי לשלב בפרויקט של לקוח. ועוד בפוסט: איך לסחוט מהחיישן ביצועים טובים יותר ממה שהמפרט מכיר.
רק בגלל הלוח: PCB ל-ATmega4809
ארכיטקטורת AVR (לפחות ב-8 ביט) מקבלת כיוון חדש, ונכון להיום ה-ATmega4809 הוא הנציג הבולט והמדובר ביותר של הכיוון הזה. אז השגתי כמה מיקרו-בקרים וניסיתי לתכנן להם PCB ייעודי, למרות לחץ זמן ועבודה. הנה מה שקרה בעקבות כך.
דע את החומרה
באג שקרה לי לא מזמן (ועוד בפרויקט חשוב!) חזר והדגיש את החשיבות של היכרות מעמיקה עם כלל המרכיבים של המערכת – כולל מוצרי מדף שיושבים מחוץ למיקרו-בקר.
ארדואינו: סוד האתחול הנעלם
על מקרה מעניין בו ניסיתי להכין פרויקט קטן, שידגים איך ארדואינו מגביל אותנו, אבל לא הצלחתי כי ארדואינו הגביל אותי!
טלאי על הבאג: הסכנה בכשלים שקטים
האם מנגנונים להגנה מפני שינויים לא רצויים בהגדרות המערכת הם דבר טוב, או שאולי הם מסוכנים יותר מאשר הם מביאים תועלת? נושא עקרוני בכתיבת תוכנה למיקרו-בקרים, שעלה בעקבות למידה של הגדרות השעונים ב-ATtiny החדשים – נושא מעניין למדי כשלעצמו.
ראש בראש: מיהו קיט הרובוט הכי גרוע בעולם?
כשאנחנו קונים קיט רובוט למתחילים, מה אנחנו רוצים בסך הכול? שיהיו הוראות הרכבה ברורות, שהחלקים יתאימו זה לזה בקלות יחסית, ושהרובוט המורכב יעשה מה שהוא אמור לעשות. בעולם המוצרים הסיניים הזולים, אף אחד מהדברים האלה אינו מובן מאליו. הנה שתי דוגמאות נוראות במיוחד שנתקלתי בהן לאחרונה.
התו שכמעט חיסל את התוכנה שלי
לפני שנתיים ומשהו כתבתי תוכנת Desktop כתחליף משוכלל לסריאל מוניטור המוגבל-מאוד של ארדואינו. מאז השתמשתי בה לעתים קרובות, עד שבאג מסתורי צץ משום מקום ואיים להרוס את כל העבודה שעשיתי. הנה הסיפור על זיהוי הבעיה ועל הפתרון הלא-פשוט.
דברים שלמדתי מרובוט מקולקל
רובוט משליך כדורים – אחת האטרקציות הגדולות ב"ליל המדענים" המקומי – נתקל ברגע האמת בבאג שמנע ממנו להגשים את ייעודו במשך רוב האירוע. מה קרה שם, ומה אפשר ללמוד מזה על בניית ודיבוג מערכות?