שעון של פעם: מעגל RC כמקור שעון למיקרו-בקרים

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

נגד וקבל כמקור לאות שעון במיקרו-בקר
נגד וקבל כמקור לאות שעון במיקרו-בקר

במיקרו-בקרים מודרניים סביר להניח שלא תיתקלו באפשרות הזו בכלל, אבל בדגמים ישנים קצת יותר – כגון כמה דגמי PIC שעדיין חיים ובועטים – מוזכרת ב-datasheet אופציה שכמעט אף אחד לא מתייחס אליה בימינו: מעגל RC (Resistor-Capacitor) כמקור שעון למערכת. אופציה זו מתחבאת בשקט בין האופציות המוכרות יותר, כגון מתנד פנימי, גביש חיצוני או אות שעון חיצוני.

מעגל RC כמקור שעון, מתוך ה-Datasheet של מיקרו-בקר PIC12F1840
מעגל RC כמקור שעון, מתוך ה-Datasheet של מיקרו-בקר PIC12F1840

השרטוט לעיל מראה איך מחברים את הרכיבים החיצוניים (פין OSC1/CLKIN הוא אותו פין שאליו מחברים אות שעון חיצוני, או אחת משתי הרגליים של גביש). השרטוט גם מספיק כדי להבין איך העסק עובד: הנגד Rext טוען את הקבל Cext בקצב מסוים שתלוי בערכים של שניהם. בתוך המיקרו-בקר נמצא מעגל השוואה כלשהו (המשולש), למשל Schmitt trigger, שמשווה את המתח ההולך-ועולה מהקבל לאיזשהו רפרנס פנימי. כאשר המתח הזה גבוה מספיק, הפלט של המשווה (מימין) הופך לחיובי – ומיד מפעיל איזשהו טרנזיסטור פנימי שמנקז במהירות את המטען שהצטבר אל האדמה. הנפילה הזו משנה בסופו של דבר את הפלט של המשווה, הטרנזיסטור מפסיק להוליך, והנגד יכול שוב לטעון את הקבל בקצב שלו עד לנפילה הבאה וחוזר חלילה. דומה במקצת למה שקורה במעגל מתנד שמבוסס על טיימר 555 המיתולוגי. בתוך המיקרו-בקר, בכל אופן, הפלט המתנדנד של המשווה משמש כבסיס לאות השעון ה"רשמי".

"לוח פיתוח" תוצרת בית ומעגל הבדיקה ששימש אותי בפוסט זה
"לוח פיתוח" תוצרת בית ומעגל הבדיקה ששימש אותי בפוסט זה (לחצו להגדלה)
צילום מסך מהסקופ. תכלת: המתח בכניסה ל-CLKIN; צהוב: השעון הרשמי של ה-PIC (תדר כניסה חלקי 4).
תכלת: המתח בכניסה ל-CLKIN; צהוב: השעון הרשמי של ה-PIC (תדר כניסה חלקי 4). לחצו להגדלה.

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

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

הגדרת הבחירה במעגל RC כמקור שעון, מתוך ה-Datasheet של PIC12F1840
הגדרת הבחירה במעגל RC כמקור שעון, מתוך ה-Datasheet של PIC12F1840

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

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

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

להרשמה
הודע לי על
0 Comments
Inline Feedbacks
הראה את כל התגובות