ארכיון הקטגוריה: אופטימיזציה

מארת המכפלה

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

להמשיך לקרוא מארת המכפלה

סיפורי אופטימיזציה: משואת IR חסכונית

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

משואת אינפרה-אדום (אבטיפוס)
משואת אינפרה-אדום (אבטיפוס)

להמשיך לקרוא סיפורי אופטימיזציה: משואת IR חסכונית

להגדיל את טווח האינפרה-אדום

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

להמשיך לקרוא להגדיל את טווח האינפרה-אדום

שליטה במנועי סרבו מרובים

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

מנועי סרבו
מנועי סרבו

להמשיך לקרוא שליטה במנועי סרבו מרובים

קול דממה דקה

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

להמשיך לקרוא קול דממה דקה

סיפורי אופטימיזציה: לעקוף ת'עז

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

עיזים (למצולמות אין קשר לכתבה)
עיזים (למצולמות אין קשר לכתבה)

להמשיך לקרוא סיפורי אופטימיזציה: לעקוף ת'עז

אנרגיות חיוביות

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

להמשיך לקרוא אנרגיות חיוביות

המחיר של הנקודה

כידוע, שימוש במשתנים בעלי נקודה עשרונית (floating-point) אינו מומלץ במיקרו-בקרים טיפוסיים, מכיוון שכל פעולה שנעשית איתם גוזלת זמן רב בהרבה מפעולה מקבילה על מספרים שלמים (integer) . מה שקצת פחות ידוע הוא שיש לעבודה איתם גם מחיר כבד בדרישות הזיכרון. הנה דוגמה מעשית קטנה.

קוד ב-Atmel Studio
קוד ב-Atmel Studio (סתם בשביל להוסיף קצת צבע לפוסט – אל תנסו לקרוא את זה…)

להמשיך לקרוא המחיר של הנקודה

סיפורי אופטימיזציה: אקראיות זולה

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

צילום מסך מתוך Yar's Revenge, באמולטור Atari 2600 ל-PC
צילום מסך מתוך Yar's Revenge, באמולטור Atari 2600 ל-PC

להמשיך לקרוא סיפורי אופטימיזציה: אקראיות זולה

המירוץ נגד הקרניים: ללמוד מזקני השבט

ככל שמיקרו-בקרים ולוחות פיתוח הולכים ונעשים זולים וחזקים יותר, כך גוברת הנטיה – גם ברמת החובבים וגם מעבר לה – להתמודד עם אתגרי פיתוח שונים, אפילו בסיסיים, על ידי הקצאה של עוד ועוד כוח מיחשוב גולמי. לפעמים זה פתרון הגיוני ונוח, במיוחד אם הדרישות מהמערכת בכללותה הן צנועות יחסית; אבל אם אנחנו רוצים ליצור משהו מדהים באמת, מוטב ללמוד מהמאסטרים של הדור הקודם – למשל, האנשים שהפכו מערכת עם מעבד עלוב של 1.2MHz ו-128 בייטים בלבד של RAM לאחת מקונסולות המשחקים הביתיות המצליחות בהיסטוריה. להמשיך לקרוא המירוץ נגד הקרניים: ללמוד מזקני השבט