מכיוון שכבר דיברתי על גלים ריבועיים ועל אותות לשליטה במנוע סרבו, הגיע הזמן לסגור מעגל קטן ולתאר כיצד מפיקים אותות PWM במיקרו-בקר ATtiny85.
ארכיון הקטגוריה: הלו טייני
הלו טייני #6.6: ביטים על הגל
עברנו דרך ארוכה בפוסט הקודם כדי ליצור גל ריבועי בתדר 38KHz על פין 5 של ה-ATtiny85. אם נחבר לפין הזה נורית IR LED, כל חיישן IR קרוב שמכוון לתדר המתאים יקלוט את הבהובי האור המהירים ויזהה אותם כסיגנל שידור. אלא שכדי שנוכל להעביר נתונים של ממש מצד לצד, אנחנו צריכים יותר מאשר זיהוי בלבד, וזה יהיה הנושא שלנו הפעם.
הלו טייני #6.5: שלושים ושמונה קילוהרץ
הטיימרים (Timers) שב-ATtiny85, ולמעשה בכל מיקרו-בקר אחר כמעט, הם כלי עבודה חזקים מאד שכוללים מגוון של אופני פעולה ואופציות. בפוסט זה ניגע רק בפינה אחת קטנה של אחד הטיימרים, למטרה מאד ספציפית: יצירת גל ריבועי בתדר של 38KHz בדיוק.
הלו טייני #6: כלב טוב!
אנחנו ממשיכים בסקירה של מנגנון ה-Watchdog הרב-שימושי של הטייני, והפעם אסביר איך לכבות אותו, איך לגלות אם הוא פעל – וגם איך ולמה להשתמש בפונקציונליות הפסיקה (interrupt) המובנית שלו.
הלו טייני #5: לאלף את הכלב
בפוסט זה נתחיל לדבר על מנגנון קטן ומרתק בתוך הטייני, שנקרא Watchdog ("כלב שמירה"), ושלמען הקיצור נקרא לו פשוט WD. ה-WD כולל טיימר עצמאי שמוקדש רק לו, בעל תדר קבוע של כ-128KHz, והוא מהווה את קו ההגנה האחרון של מערכת מבוססת מיקרו-בקר לפני כשל טוטאלי. מכיוון שהתפקיד שלו חשוב כל כך, הוסיפו לו כמה שכבות של הגנה מפני שימוש רשלני, והעבודה איתו אינה מובנת מאליה. עם זאת, ברגע שמבינים איך הוא עובד, אפשר לנצל את היכולות שלו גם למשימות מעניינות ושימושיות אחרות.
הלו טייני #4: המרת ADC בסיסית
בפרקים הקודמים בסדרת פוסטים זו על ה-ATtiny85 דיברנו על סביבת הפיתוח, על צורבים, הגדרות שעון, ועל גישה לקלט/פלט דיגיטלי באמצעות הרגיסטרים של הפורטים. הפעם נדבר על קלט אנלוגי, וליתר דיוק המרה של מתח חשמלי בפין קלט למספר, כפי שעושה פקודת analogRead בארדואינו. ראשית, הנה התקן שבניתי שמבוסס על פעולה זו ממש: הוא קורא את המתח שנוצר כתוצאה מסיבובי המדחף, וממיר את התוצאה למהירות העדכון של תצוגת לדים:
הלו טייני #3.5: רק רגע, בבקשה!
בפוסט מס' 2 בסדרה דיברתי על הגדרות שעון שאפשר לבחור עבור ה-ATtiny85 (ומיקרו-בקרים אחרים ממשפחת AVR) באמצעות צריבת פיוזים. מבחר האפשרויות היה כה גדול, עד שבחרתי לדלג שם על חלק מהפרמטרים ולהתרכז אך ורק במקור השעון ובתדר שנבחר עבורו. כעת נתקלתי, לראשונה, במצב בו גם הפרמטרים הנוספים חשובים. אז כהשלמה קטנה לפוסט על הגדרות השעון, בואו נדבר על השהיה באתחול.
הלו טייני #3: פורט אחד קטן
פוסט קצר וקל זה עוסק בפורט (Port) של ה-ATtiny85 – אמצעי הגישה שלנו לקריאה וכתיבה של ערכים דיגיטליים בפיני הקלט/פלט. לטייני יש אמנם פורט אחד בלבד, שמסומן באות B, אך גם מיקרו-בקרים אחרים ממשפחת AVR עובדים באותה שיטה, כך שמה שאציג כאן מתאים – עם התאמות מינימליות – גם לעבודה בארדואינו.
הלו טייני #2: הגדרת שעון
כל מה שקורה בתוך המיקרו-בקר תלוי בשעון. פעימה של השעון היא עבורו היחידה האטומית, המינימלית, של זמן: זהו הרגע שבו משהו קורה, ובין שתי פעימות עוקבות לא קורה בעצם שום דבר – בין אם הרווח ביניהן הוא ששים ושתיים מיליארדיות השניה או שנה שלמה.
כמובן, הפעולות שמתבצעות במיקרו-בקר תלויות בתנועה של אלקטרונים בתוך החומרה, והתנועה הזו לוקחת זמן "ממשי" וגם יוצרת חום – שני אלמנטים שמציבים גבול עליון למהירות הפעולה. אף על פי כן, השעון במיקרו-בקרים רבים הוא אלמנט גמיש להפליא, הרבה יותר ממה שניתן לחשוב בעקבות עבודה בסיסית עם ארדואינו למשל. בפוסט זה אציג אפשרויות שעון שונות של ה-ATtiny85, מה הן נותנות לנו ואיך ניגשים אליהן. כמעט כל המידע, אגב, רלוונטי גם למיקרו-בקרים אחרים בארכיטקטורת AVR.
הלו טייני #1.5: צורב חלופי
פוסט זה לא היה חלק מהתוכנית המקורית של סדרת "הלו טייני" (מכאן המספור 1.5), אך הוא עשוי לעניין את אלה מביניכם שנרתעים מהמחיר הגבוה של צורב AVRISP MKII מקורי. אם לא אכפת לכם להשקיע עוד קצת עבודה בהכנות מקדימות ובתהליך הצריבה, תוכלו לחסוך שלושים ומשהו דולרים ולהעלות תוכנות ישירות למיקרו-בקר באמצעות צורב סיני זול.
הכלים
הצורב איתו נעבוד כאן נקרא USBasp. יש הרבה דגמים שלו באיביי ובאתרי הגאדג'טים הסיניים, במחירים של 3-10 דולר ליחידה – את שלי קניתי כאן. כצפוי, הוא מוגבל יחסית לצורב הרשמי ופחות משוכלל ממנו, אך לתחילת הדרך הוא יספיק בהחלט. אצלי במחשב (Windows 7) הוא זוהה בלי שהייתי צריך להתקין דרייברים כלשהם ידנית. תוספת מאוחרת: ב-Windows 8, ייתכן שתצטרכו לעשות מה שכתוב כאן.