Table of Contents
הבנת כיצד לחשב את זמן ועיכוב ערכים חיונית לתכנות מיקרו-בקרים משובצים. חישובים אלה להבטיח תזמון מדויק עבור משימות כגון ממצמץ LEDs, יצירת אותות PWM, יצירת עיכובים מדויקים, וליישם מערכות בקרה בזמן אמת.מדריך מקיף זה מספק גישה צעד אחר צעד כדי לקבוע את הערכים הנכונים עבור נתבים ועיכובים ביישומים מיקרו-בקר, כיסוי מושגים בסיסיים, דוגמאות מעשיות, טכניקות מתקדמות.
הבנת יסודות הזמן במיקרו-בקר
מיקרובקרים משתמשים ב-Timers כרכיבים אינטגרליים, עם רוב הבקרים המודרניים שיש לפחות מודול אחד של זמן שנבנה להם. a timer הוא היקפי במיקרובקר ספירה או למטה בתדירות מסוימת, שימושי ליצירת עיכובים, מדידה של מרווחי זמן, וגריצת משימות תקופתיות.רזולוציה של ה-Timer וספירת מקסימום לקבוע כיצד זה יכול למדוד או ליצור עיכובים.
זרם קבוע של הדופק כי ציר זמן נקרא בדרך כלל את ה"שעה", בעוד אותות זמן יציב פלט כי ציר זמן ניתן להגדיר לייצר נקראים בדרך כלל "תיקים".הבנת ההבחנה הזו חיונית לתצורה נאותה של זמן ויישום.
אדריכלות ושותפים
מודול זמן טיפוסי מורכב ממספר מרכיבים מרכזיים שעובדים יחד כדי לספק פונקציונליות תזמון:
- (ב) ,0) זמן נגד רישום: 1FLT: רישום הליבה כי הצטברות או ניכויים עם כל שעון דופק
- (ב) ,0) , מבדיל בין ה-FLT להורדת תדירות השעון לקצב הניתן להחלפה
- (FLT:0)Compare/Match Register:FigLT:1 , מאחסנים ערכים להשוואה עם הדלפק כדי לעורר אירועים ספציפיים
- (ב) ,0) רשם: נספח 1 (ב) , מקורות שעון והגדרות מפריעות
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
מודול זמן / מספרר עשוי להפיק את מקור השעון שלה משעון המערכת ולבצע פעולות ספירה בהתבסס על הדופק שעון זה.במקרה זה הוא נאמר לעבוד כמו לוח זמנים ולבצע פעולות מדידה זמן. מאז תדירות השעון המערכת נקבע על ידי המשתמש וזה לעתים קרובות יציב למדי, המתכנת הוא מסוגל להשיג מרווחי זמן מדויקים על ידי התאמת מודול הזמן.
תפקיד ה-Prescalers in Timer Calculations
prescaler הוא מפיץ חומרה המפחית את תדירות השעון של המערכת לפני שהוא מגיע ל-Timer. לדוגמה, עם תדירות מערכת 16 MHz ו- prescaler של 2, תדירות קלט הזמני יהיה 8 MHz.המדן הוא אחד המרכיבים החשובים ביותר בתצורה של זמן כי זה מאפשר לך לאזן את תזמון נגד משך מקסימלי.
הבנה של הגבלות נוספות
חלק מהטרקלטורים מוגבלים רק ל-F-2 חטיבות של השעון המערכת, כך שתוכלו לקבל F (שעון המערכת) או F/2 או F/4 או F / 16. חלק מהטרקלרס אפילו יותר מוגבל מזה, כי רק חלק מסוים של חטיבות 2 של כוח זמינים, לא כולם. AVR prescalers הם כאלה. עבור רוב AVRs, רק לפני 1256, 1024.
על ידי שינוי המספר שבו המחצב מחלק את השעון הנכנס, אנו יכולים לשנות את תדירות השעון של השעון בזמן, למרות שתדירות השעון של המערכת נשארת זהה.היכולת לשנות את תדירות השעון של השעון מאפשר לנו לבחור את התדירות המתאימה ביותר עבור העבודה התזמון (s) ביד. שעון זמן מהיר יותר נותן רזולוציית זמן גבוהה יותר, אבל זמן מרבי יותר, בעוד שעון איטי יותר נותן זמן קצר יותר, אבל זמן איטי יותר נותן זמן קצר יותר, אבל זמן קצר יותר, אבל זמן קצר יותר נותן זמן קצר יותר מאשר זמן נותן זמן איטי יותר מאשר זמן קצר יותר מאשר זמן מספק זמן קצר יותר מאשר זמן מספק זמן קצר יותר.
המונחים: trade-offs
הקדם-המידה מאפשר לחדד את היחס בין החלטה לתקופה מקסימלית כדי להשיג אפקט הרצוי.כאשר בחירת ערך מראש, שקול את הגורמים האלה:
- (ב) עד כמה מדויק צריך להיות התזמון שלך?
- (ב) מהו משך הזמן:0 (הראשונה ל-1) מה העיכוב הארוך ביותר שאתם צריכים לייצר?
- (FLT:0)Timer Bit Width:FLT:1 8-bit Timers (0-255) לעומת 16 סיביות
- (ב) ,0) ערכים מועדפים: אנדרל 1 (ראה: ⁇ ) אפשרויות מוגבלות על מיקרו-בקרים רבים
המונחים: Fundamental timer Calculation Formulas
הנוסחה הבסיסית לחישוב ספירת זמן היא:
(ב) ויקרא י"ד: ויקרא י"ד: ויקרא י"ד, יט"ד)
איפה:
- (ב) ,0) ,(ה) ,(ה) , ⁇ ) , הוא הזמן שבו אתה רוצה לדחות בתוך שניות
- (ב) ,0) ,Timer FrequancyFLT:1 הוא תדירות השעון המחולקת על ידי הערך הקדם-ממדי
תדירות שעון CPU / Prescaler.זהו הנוסחה הבסיסית והחשובה ביותר עבור כל חישובי הזמן.
זמן חישובי Per Tick
תדירות היא למעשה מספר הפעמים שמשהו קורה בשנייה אחת.אז תדירות שעון 20MHz היא למעשה 20 × 106 מחזורי שעון בשנייה אחת. כדי להשיג את הזמן שלוקח למחזור שעון אחד תצטרך לקחת את העודף של התדירות.במקרה זה זה זה זה הוא 1/20MHz אשר ייתן 0.05×10-6 שניות.
הנוסחה לזמן לתקייק לאחר ההקדמה היא:
(FLT:0)Time per Tick = 1 / שעה / שעה / שעה / שעון קלפי / CPU שעון FrequancyFLT 1
ערך זה מייצג כמה זמן עובר עבור כל אי-הההתקפה של הדלפק.
קלקולקציה דורשת ספירות זמן
חישוב הגדרות prescaler and timer (counter) דורש שלושה חתיכות מידע: תדירות שעון מיקרובקר (Fclk), תדירות אירוע פלט הרצוי או תקופת (Fout או Tout), ואת ההחלטה של ה-Timer (bit-width) ומצב ההפעלה.
ברגע שאתה יודע את הזמן לדג', אתה יכול לחשב כמה קרציות יש צורך עבור העיכוב הרצוי שלך:
(ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
או שילוב של הנוסחות:
(ב) ⁇ (הופנה מהדף × CPU שעון תדירות) / PrescalercioFLT:1
דוגמה ל-Step-by-Step Calculation
בואו לעבוד באמצעות דוגמה מפורטת להמחיש את תהליך החישוב. נניח מיקרובקר פועל ב-16 MHz ומשתמש ב-Prescaler של 64.כדי ליצור עיכוב של 1 מ"ר:
שלב 1: חישוב תדירות הזמן
(ב) ,0) שעון קלון = שעון CPU / Prescalerph 1
(FLT:0)Timer Frequency = 16 000 הרץ / 64 = 250,000 הרץ 1LT
פירוש הדבר שהמנהל נגד הזמן מסתכם ב-250,000 פעמים בשנייה.
שלב 2: זמן חישובי ל-Tick
(ב) 1 / שעה לטייק = 1 / שעה / שעה / שעה)
(FLT:0)Time per Tick = 1 / 250,000 הרץ = 4 מיקרו-שניותFillo:1
כל אי-ההתקפה של הדלפק של ה-Timer מייצגת 4 מיקרו-שניות של זמן שעבר.
שלב 3: חישובים דרושים ספירות זמן
(ב) ויקרא י"ד: "הזמן" (בתרגום חופשי: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ).
(ב) כרך 1 מ"ג / 4 מיקרו-שניות = 1000 מיקרומטרים / 4 מיקרומטרים = 250 ספירות
לחלופין, באמצעות הנוסחה הישירה:
(ב) × 250 הרץ = 250 ספירות 1LT
שלב 4: לבדוק נגד מגבלות זמן
עבור נתב של 8 סיביות, הספירה המקסימלית היא 255.מכיוון הספירה הנדרשת של 250 הוא פחות מ 255, תצורה זו תעבוד.אם הספירה הנדרשת עלה על הערך המקסימלי של ה-Timer, תצטרך גם:
- להגדיל את הערך prescaler כדי להפחית את תדירות התזמון
- השתמש בשעון גדול יותר (16 סיביות במקום 8 סיביות)
- השתמש במספר זרימות של זמן עם נוגד תוכנה
עבודה עם מצבי זמן שונים
מיקרובקרים בדרך כלל תומכים במספר מצבי הפעלה של ציר זמן, כל אחד מתאים ליישומים שונים.הבנת מצבים אלה הוא חיוני לשימוש יעיל של זמן.
מצב נורמלי (Overflow Mode)
במצב רגיל, כיוון הספירה הוא למעלה (הצטברות) ללא הבהרת.זה פשוט עומד על ערך 8 סיביות המקסימלי שלו (0xFF) והפעלה מחדש בתחתית (0x00) כאשר הוא הולך ל-0xFF וגלגל עד 0x00, הוא קובע את הזמן / קלאב Overflow (TOV1) בנקודה זו הוא נוצר הפרעה אשר יימחק כדי לנקות את התהליך וחוזר על פני 0x00.
הדלפק של השעון נחשב עם כל דופק שעון.כאשר הוא מגיע לערך המקסי שלו (כמו 255 עבור 8 סיביות), הוא overflows ולאפס מחדש 0.לאחר איפוס, הוא מגדיר דגל זרימה מעל פני השטח והופך להפרעה אם אפשר.
במצב רגיל, לעתים קרובות צריך לזרז את לוח הדלפק של הדלפק בזמן עם ערך ספציפי כדי להשיג את העיכוב הרצוי.מכיוון שהזמן נחשב עד לזרימה, עליך לנסח מחדש את ה- 65536 מינוס הרצוי עבור 16 סיביות, או 256 מינוס הספירה הרצויה עבור 8 סיביות.
CTC Mode (Clear Timer on Compare Match)
במצב CTC, ה-Timer נחשב לערך הראשוני 0 לערך התואם שלו, כאשר משחק השוואתי מתרחש, על שעון השעון הבא מתאפס ל-0. מצב זה שימושי במיוחד עבור יצירת תדרים מדויקים והפרעות תקופתיות מבלי צורך לטעון את הדלפק באופן ידני.
מצב CTC מפשט חישובים כי אתה ישירות להגדיר את הערך ההשוואה למספר הקרציות שאתה צריך, ולא חישוב ערך טרום עומס.הזמן לאפס באופן אוטומטי כאשר הוא מגיע לערך ההשוואה, מה שהופך אותו אידיאלי ליצירת גלים רבועים אותות תקופתיים.
PWM Modes
דופק Width Modulation (PWM) מודסים משתמשים ב-Timers כדי ליצור אותות עם מחזורי חובה משתנים.אם TIM Pulse = 500 והתקופה היא 1000, הערוץ יפיק תדר של 1 KHz עם מחזור 50 / 50 חובה. PWM הוא חיוני לשליטה מוטורית, LED מטבול, ודור אות אנלוגי.
במצב PWM, אתה מגדיר את התקופה (ערך עומס) ואת רוחב הדופק (ערך של שותפים) מחזור החובה מחושב כמו:
(ב) × 10003 (%) = (ערך משותף / ערך תקופתי) × 10003FLT:1
טכניקות תזמון מהיר
עקבו אחרי Timer Overflows
ישנם מקרים מסוימים כאשר ערך ספירה גדול מדי כדי להיות מאוחסן בתוך שטח הרישום זמין (prescaler, postscaler, ו-Timer רישום) זה אומר כי מרווח הזמן הנדרש הוא גדול מדי עבור ה-Timer לייצר.במקרה זה אתה צריך לפנות לשיטות אחרות כגון שיש לו נוגד ISR כך שהזמן מפריע מספר מסוים של פעמים לפני ביצוע ISR בפועל.
לדוגמה, כדי ליצור עיכוב של 1 שניות כאשר ה-Timer שלך יכול לייצר רק 10ms להפריע, אתה יכול לספור 100 זמן להפריע בתוכנה:
- זמן מסך עבור 10ms Overflow
- • שינוי נגד ב- ISR
- כאשר הנגד מגיע ל-100, בצע את המשימה 1 שניות שלך
- איפוס הדלפק וחזר
שימוש ב-Repetition Counters
אם הערך של הדלפק החזרה הוא N, המעבד יפעיל את העדכון להפריע כל N + 1 זרימות. תכונה זו, זמין על כמה מיקרובקרים מתקדמים כמו STM32, מספק ספירת יתר מבוססת חומרה ללא התערבות תוכנה.
הנוסחה עבור לוח זמנים מפריע תדירות עם דלפק חוזר הופכת:
(ב) × 0 (בקיצור: ×) × (Period + 1) × (Repetition Counter + 1))
המונחים:
הפוסט-סולק לא מאט את הדלפק, רק באיזו תדירות הוא יוצר הפרעות.אם הוא מוגדר ל-2:1 הדלפק חייב להגיע לאפס פעמיים עבור ה-Timer להפריע מעט הדגל כדי להיות מוגדר.פוסטקלרס מספקים גמישות נוספת בתדירות הדור של הפרעה מבלי להשפיע על שיעור ספירת הזמן.
דוגמאות למניעה
דוגמה: LED Blinking עם הזמןr Overflow
בואו הטמיע LED 500ms באמצעות מיקרובקר AVR רץ ב 16 MHz עם 8 סיביות:
(ב) ⁇ (ב) ⁇ :
- שעון CPU: 16 MHz
- Desired Delay: 500 ms
- 8 סיביות (0-255)
(ב) ,0) , ⁇ :
ראשית, בחר מראש מתאים.עם 1024 prescaler:
תדירות הזמן = 16 000 / 1024 = 15,625 הרץ הרץ:0Time per Tick = 1 / 15,625 = 64 מיקרומטר
עבור 500ms עיכוב:0 (Required Ticks = 500,000 מיקרומטר / 64 מיקרומטר = 7,812.5 סיגנל
מאז 7,812 עולה על המרבי 8 סיביות (255), עלינו להשתמש בזרימות מרובות.
מספר הזרמים = 7,812 / 256 ⁇ 30.5 מעליות
אנו יכולים להשתמש 30 זרמים מלאים בתוספת ספירה חלקית.עבור 30 זרימות: 30 × 256 = 7,680 קרציות. Remaining s: 7,812 - 7,680=2, 132 טייפים.
דוגמה 2: יצירת תדירות מוקדמת עם CTC
כדי ליצור גל מרובע 250Hz עם Timer 1 מוגדר במצב CTC, ה-Timer נחשב הערך הראשוני 0 לשווי ההשוואה שלו להירשם. Timer 1 הוא 16 סיביות עם 16 MHz ו 1 prescaler. Time per lex = 1 / 16MHz = 62.5 שניות. כדי לייצר גל הרץ, כדי להגיע לכל 2 מ"מ מאז מחזור נמוך 2 = 2=2=2=2=2=2=2=2=2=2=2=2=2=2 2=2=2=2=2=22=3 2=2=2=2=22=2=2=2=2=2=222=2=22 ).
הגדר את הסימון השווה (OCR1A) ל 32000, וקבע את ה-Timer כדי לטבול את הפלט על מנת להשוות את התצורה.החומרה מייצרת באופן אוטומטי את הגל הריבועי ללא התערבות בתוכנה.
דוגמה: STM32 Timer Configuration
עם תדירות השעון שווה ל 80 MHz, prescaler של 79, עומס אוטומטי (זמן) של 9999, ותגובה חוזרת של אפס, תדירות של ההפרעה של ה-Timer היא 100 הרץ.
ההרחבה של ההרחבה:0 (שעון הזמן לאחר Prescaler= 80 000 / (79 + 1) = 1 000 HzFLT:1) 1interrupt Frequency = 1 000 / (9999 + 1) = 100 HzFLT:2 תקופת ביניים = 1 / 100 = 10 ms psrupt Frequency = 1 000 / 1 000 / 9999 + 1) = 100 HzFLT:2
עבור STM32 צירים, TIM Prescaler = N - 1 מחלק את שעון האוטובוס / TIM למטה על ידי N, ו TIM Period = N - 1 דיבידנדים ששעון למטה על ידי N. זו הסיבה שאנחנו מוסיפים 1 לערכים בחישובים שלנו.
יישום עיכובים בזמן בקוד
ברגע שספירת ה-Timer ידועה, הגדר את ה-Timer רושם בהתאם.תהליך היישום בדרך כלל כרוך במספר שלבים:
צעדים
- (FLT:0Select Timer and Mode:FLT:1) בחר נתב מתאים (8 סיביות או 16 סיביות) ומצב הפעלה (Normal, CTC, PWM)
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)Load Counter/Compare Values:IRLT:1) , ראשית רישום הדלפק של הדלפק או להשוות את הסימון עם ערכים מחושבים
- (ב) ,0) ניתן לנטרפוטים (אם יש צורך): ההרחבה של 1 (הקונה) מאפשרת ביטים וליישם את ISR
- (ב) ויקרא י"א: "ה' י'"א יברך את ה' ב'" (בראשית כ"ד, כ"ד)
לטעון את הערך המחושב לתוך ספירת ה-Timer של ה-Timer וחכה עד שהוא מעל גדות או מגיע לערך שנקבע.זה יוצר עיכוב מדויק בהתבסס על ספירת זמן מחושבת.
זיהום מול גישות אינטרפוטיות-Driven
ישנן שתי שיטות עיקריות לגילוי אירועי זמן:
(FLT:0) שיטת ה-FLT:1 התוכנית העיקרית בודקת ברציפות את דגל ה-Timer overflow בלולאה.גישה זו פשוטה אך פסולת מחזורי CPU ויכולה להחמיץ אירועים אם הדגל לא נבדק לעתים קרובות מספיק.
(FLT:0 Interrupt Methodeur:) 1FLT 1 Timer מפריע ב- STM32 microcontrollers לספק דרך חזקה לבצע משימות ספציפיות במרווחי זמן מדויקים ללא סקריפי CPU מתמשכים. על ידי מינוף של צירים, מפתחים יכולים ליצור יישומים יעילים ותגובהיים עבור משימות כגון ניתוח נתונים תקופתיים, פעילות המבוססת על זמן, ותזמון בזמן אמת.
כותב Efficient Timer ISRs
שמור על ISRs קצר ומהיר על ידי הימנעות מפעילות מורכבת בלבד, לבצע רק את הפעולות החיוניות ולצמצם עיבוד מורכב יותר לתכנית הראשית.הימנע מחסימת שיחות כמו עיכובים או לולאות כפי שהם יכולים לגרום להפרעות ושקיפות. משתנים משותפים בין ISR לבין התוכנית העיקרית צריך להיות מוצה כתנודתית כדי להבטיח שהפי לא יתאים אותם.
שיטות הטובות ביותר עבור ISRs כוללים:
- לשמור על זמן מינימלי (בדרך כלל מתחת ל 10-20 מיקרו-שניות)
- השתמש מילת מפתח תנודתית עבור משתנים משותפים
- דגלים במהירות
- הגדר דגלים או עדכון ניגודים במקום לבצע פעולות מורכבות
- להימנע מקריאות תפקוד, במיוחד כדי לחסום את הפונקציות
- שכפול ערכי זמן אם משתמשים במצב זרימה
יישומים רגילים במערכות Embedded
משימה תקופתית Scheduling
הפרעות בזמן משמשים נרחב כדי ליצור משימות תקופתיות כי לשמור על שיעורי ביצוע עקביים ללא קשר לתהליכים מתמשכים אחרים במיקרובקר.לדוגמה, יישום מוטבע עשוי להשתמש בזמן להפריע לחיישנים טמפרטורה כל 100 מ"ל שניות, לגרום ל- ADC המרות בקצב קבוע, כדי לעקוף נוריות עם בדיוק על / משך זמן, או תוך כדי עלייה של זמן תוכנה ודלפקקים הנדרשים על ידי המערכת הזאת באופן עצמאי.
מערכת ההפעלה של זמן אמת Tick Generation
לוח זמנים של טייפ ISR הוא בלוק בניין בסיסי עבור רבים, אולי רוב, משובצים מערכות. a timer מתקתק על סדר 10ms הוא שימושי עבור מגוון של משימות, שכן הוא מספק תגובה טובה לפעולות אנושיות, בעוד הוא עדיין מאפשר את רוב מחזורי CPU ללכת לכיוון עבודה אחרת.
Timers משמשים לעתים קרובות במערכות בזמן אמת, שבו משימות צריך לבצע בדיוק בתוך מרווחים מוגדרים. במערכות כאלה, דיוק תזמון הוא חיוני, ו Timers לספק את הבסיס לתזמון משימה. a timer אשר יוצר הפרעות קבועות (ticks) במרווח קבוע יכול לשמש כבסיס למערכת הפעלה בזמן אמת (RTOS) לוח זמנים או בסיס זמן למשימות תקופתיות.
PWM Signal Generation
טיימרים הם חיוניים לייצור אותות PWM בשימוש בשליטה מוטורית, בקרת בהירות LED, ואת ההמרה דיגיטלית-ל-אנט-אנט-אנלילוג. על ידי תצורת ה-Timer במצב PWM והתאמה של הערך ההשוואה, אתה יכול בדיוק לשלוט במחזור החובה של אות הפלט.
עבור בקרת מהירות מוטורית, תדרי PWM טיפוסי טווח בין 1 kHz ל 20 kHz. לחשב את הגדרות הזמן הדרושות על בסיס תדירות ורזולוציה הרצויה שלך.לדוגמה, עם שעון MHz 16 ורזולוציה 8 סיביות (256 צעדים), אתה יכול להשיג בערך 62.5 k PWM תדירות ללא prescaler, או 15.6 kHz עם ממוצע של 4.
המונחים: dog timer Implementation
שעון כלב הוא לוח זמנים מיוחד אשר מאמת את המערכת אם זה לא זמן רב איפוס על ידי התוכנית. תכונה זו מסייעת למנוע תל-ups מערכת על ידי שכפול אוטומטי של MCU אם זה הופך ללא אחריות. תצורה של שעון תקין שעון זמן דורש חישוב תקופות זמן כי הם מספיק זמן עבור פעילות רגילה אבל קצר מספיק כדי לתפוס תקלות מערכת במהירות.
פתרון זמן ומכשולים
שגיאות קלקלציה נפוצות
כמה טעויות נפוצות יכולות להוביל להתנהגות לא נכונה של זמן:
- (FLT:0) טעויות חד-פעמיות: 1 (FIRLT:1) רבים רושמים משתמשים ב-N-1 Notation, שם הערך של 99 הוא למעשה 100 סעיפים
- (ב) [ה] [ה]: [ה], [ה], [ה], [ה],] [דרוש מקור]]], [ב], [ב]], [ב]]], [ב[[המאה ה-20], [ב[[המאה ה-20]].
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) הסתברות:0) ,(הקדמה ל-Availability: FLT:1) בהנחה שכל ערך מראש הוא זמין כאשר רק ערכים ספציפיים נתמכות
- (FLT:0Clock Source Confusion:FLT:1) באמצעות תדירות השעון הלא נכון בחישובים (שעון המערכת מול שעון היקפי)
טכניקות טיהור
תמיד לאמת את חישובי התזמון והיישום שלך:
- (ב) ⁇ :0 (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0Logic Analyzer:FLT:1 Capture רצפי תזמון ולוודא נגד ערכים צפויים
- (FLT:0LED Blink Testeur: 1FLT) השתמש LED גלוי ממצמץ כדי לאמת תזמון משוער (עין אנושית יכולה לזהות בערך 10 הרץ ומעל)
- (ב) [15] ,0 ,Serial Output: FLT:1 Printtimetamps or Counter Values באמצעות UART לניתוח
- (FLT:0) כלי חישוב: FLT:1rea להשתמש במחשבונים של לוח זמנים מקוון כדי לאמת חישובים ידניים
התמודדות עם בטיחות השעון
דיוק תזמון אמיתי בעולם תלוי במקור השעון.התאוצילטורים פנימיים של ה-RC בדרך כלל יש דיוק של 1-5%, בעוד קריסטלים חיצוניים מספקים דיוק 20-50 ppm. עבור יישומי תזמון מדויקים, תמיד להשתמש באוסלטור גבישי חיצוני וחשבוריאציות טמפרטורה בעיצוב שלך.
המונחים: Platform-Specific
AVR מיקרו-בקר
מיקרובקרי AVR ממיקרוצ'יפ (לשעבר Atmel) יש מאפיינים ספציפיים של זמן. עבור דוגמאות AVR, Timer 1 הוא 16 סיביות זמן. עבור דוגמאות S32TM, Timer 1 הוא 16 סיביות עם 16 סיביות prescaler. AVR זמן בדרך כלל לתמוך ערכי prescaler של 1, 8, 64, 256, ו 1024.
AVR זמן רישום כולל TCCR (Timer /Counter Control Register), TCNT (Timer/Counter Register), OCR (Output השוואת Register), ו- TIMSK (Timer Interrupt Mask) הבנת רישומים אלה חיונית לתצורה נאותה של זמן.
STM32 מיקרובקר
STM32 מיקרובקר יש 16 סיביות prescalers כך שעון המערכת יכול להיות מחולק על ידי כל ערך בין 1 ל 65536. , חומרים כאלה הם הרבה יותר נחמד לעבוד עם בשל הגמישות הגדולה שלהם.
עבור STM32 צירים, בחר את הטרק כדי לדרג את השעון לתדירות יעילה, להגדיר את ערך עומס אוטומטי כדי להשיג את התקופה הרצויה, ולאחר מכן לתכנן את PSC ו ARR ערכים לתוך הרשם של הזמן. STM32CubeMX מספק כלים תצורה גרפית אשר באופן אוטומטי לחשב ערכים אלה.
מיקרו-בקר
מיקרו-בקרים PIC מ- Microchip תכונה הן prescalers ו postscalers על כמה צירים, מתן גמישות נוספת.מודול Timer0 משמש בדרך כלל עבור פעולות תזמון בסיסיות, בעוד טימר1 ו-Timer2 מציעים תכונות מתקדמות יותר כולל קלטי שעונים חיצוניים ורשומות תקופתיות.
PIC Timers לעתים קרובות להשתמש דיבידנד שעון הוראה 4:1, כלומר השעון בזמן פועל באחת-ארבעה תדירות אוצילטור.תמיד להתייעץ עם גליון הנתונים כדי לקבוע את תדירות השעון בפועל עבור מכשיר PIC הספציפי שלך.
פלטפורמת Arduino
Timer0 הוא נתב של 8 סיביות המשמש את Arduino פונקציות עיכוב (), מילימטרים (() ומיקרו-ס(((() Timer1 הוא רכז 16 סיביות המשמש את ספריית Servo() ו- Timer2 הוא סמן 8 סיביות המשמש את טונה (Tone) הספריה.כאשר משתמשים ב-Arduino timers ישירות, להיות מודע לסכסוכים עם פונקציות ספריית בנוי.
נושאים מתקדמים ואופטימיזציה
פעולות אטומיות וסעיפים קריטיים
כאשר ניגשים לרישום זמן רב-ביוטה הן מהקוד הראשי והן ISRs, משתמשים בפעולות אטומיות או הפרעות בלתי ניתנות לפירוק באופן זמני כדי למנוע תנאי גזע.עבור 16-bit במיקרו-בקרים, קריאה או כתיבת ערך הנגד דורש גישה ל- 2 רישומים של 8 סיביות, אשר חייב להיעשות באופן אטומי כדי למנוע קריאה של ערכים לא עקביים.
Timer SynSyncization
כמה יישומים דורשים צירים מרובים לפעול סינכרוניזציה.מיקרובקרים מתקדמים לספק ציר קישור או תצורה של Master-slave שבו אחד זמן יכול לגרום או לאפסת אחר.זה שימושי עבור תבניות PWM מורכבות, בקרת מנוע רב-phase, והתאמה חיישן sampling.
יעילות הטמעת
טיימרים ממשיכים לרוץ ברוב מצבי כוח נמוך, מה שהופך אותם אידיאליים עבור להעיר את המיקרובקר במרווחים ספציפיים. תצורת זמן משתמשים בתדירות הנמוכה ביותר המקובלת כדי למזער את צריכת החשמל. חלק מהמיקרו-בקרים מציעים חומרים עתירי כוח נמוך שתוכנן במיוחד עבור יישומים אולטרה-עוצמה.
Jitter Accuracy
שקיפות אינטררופית מציגה Jitter בפעילות מבוססת זמן.טווחים אופייניים למהירויות של עצלות מכמה מיקרו-שניות לעשרות מיקרו-שניות בהתאם לאדריכלות המיקרו-בקר ולמצב ההוצאה להורג הנוכחי.עבור יישומים הדורשים דיוק תת-מיקרו-שני, השתמש בפלטי זמן חומרה ולא ב-תוכנות.
הנחיות עיצוב מעשי
בחירת הזמן הנכון
בעת בחירת סמן עבור היישום שלך, שקול:
- דרישות רזולוציה:0 (FLT:1 8-bit Timers עבור עיכובים פשוטים, 16 סיביות או 32 סיביות לתקופות ארוכות יותר או דיוק גבוה יותר
- דרישות ההרחבה:0 (FLT:1 ; pWM) , לכידת קלט, השוואה, שעון חיצוני
- (ב) ניתן להשתמש ב-[[ספרות]] על ידי ספריות או פונקציות מערכת
- מקור:0 (Clock Source: FLT:1) תדירות השעון היקפי ואפשרויות קדם-קלייר זמינות
- (ב) ,0) עדיפות בין-פלורס: 1:1 כמה עונים עשויים לתמוך בעדיפות גבוהה יותר להפריע
מסמכים ושמירת קוד
תמיד מתעד את חישובי הזמן שלך בבירור הערות קוד.כולל תדירות השעון, ערך מראש, תזמון הרצוי, ותזמון שהושג בפועל.זה הופך את זה קל יותר לשנות את הפרמטרים תזמון מאוחר יותר או קוד פורט לתאריות שונים של השעון.
שקול ליצור מאקרו preמעבד או פונקציות קוליין כי encapsulate זמן חישוב, מה שהופך את הקוד לקריאה יותר ושמירה על:
(FLT:0)#define TimeR FREQ (F CPU / PRESCAler) ראשי תיבות של ההרחבה 1#define MS TO TICKS(ms) (ms *R FREQ) / 1000) OVAFLT:2#define US TO TICKS(us)(us FREQ) 1/FREQ) 1/1000)
בדיקות ואימות
לפתח גישה שיטתית לבדיקת פונקציונליות מבוססת זמן:
- לבדוק חישובים עם שיטות עצמאיות מרובות
- מבחן בתנאי גבול (מינימום וערכי תזמון מקסימליים)
- מדדו את התזמון האמיתי עם מכשירים חיצוניים
- מבחן בתנאי עומס שונים כדי לאמת את עקביות התזמון
- • ביטול התזמון ומשך הביצוע של ISR
- בדוק את התזמון סחף לאורך תקופות ארוכות
כלים ומשאבים באינטרנט
כמה כלים מקוונים יכולים לסייע עם חישובים ואימות.מחשבונים אלה להתאים את התהליך של קביעת ערכי קדם-היקף ותקופתיים עבור דרישות תזמון ספציפיות. אפשרויות פופולריות כוללות מחשבוני S32TM, מחשבוני זמן AVR, ומחשבונים עתיים עתיים מוטבעים באופן כללי.
בעת שימוש במחשבונים מקוונים, תמיד לאמת את התוצאות באופן ידני עבור יישומים קריטיים. להבין את החישובים הבסיסיים ולא לבטוח באופן עיוור בכלים אוטומטיים.מחשבונים אלה מצוינים עבור אימות מהיר ובדיקת אפשרויות תצורה שונות.
(ב) לקבלת מידע נוסף על תכנות מערכות משובצות ומיקרו-בקר היקפי, בקר משאבים כגון (FLT:0 Embedded.comph:1,FLT:2 Embedded Related.comFLT 3:0; ותיעוד ספציפי של היצרן מ-FLT:4MicrochipFLT:5,FLT:6STMicroronitatorronitator, 7.
מסקנה
מאסטרינג טיים ועיכוב חישובים הוא בסיסי תכנות מערכות משובצות.על ידי הבנת הקשר בין תדרי השעון, prescalers, מצבי זמן, וערכים מנוגדים, אתה יכול ליישם תזמון מדויק עבור כל יישום.התחל עם הנוסחות הבסיסיות, לאמת את החישובים שלך, בהדרגה לחקור תכונות מתקדמות כמו השוואת התאמה, PWM דור, ו-Timer סינכרוניזציה.
זכור כי תצורה של זמן כרוך במסחר בין החלטה, משך התזמון המקסימלי, ניצול משאבים. בחר ערכים prescaler ו מצבי זמן כי הטוב ביותר להתאים את דרישות היישום שלך.תמיד לבדוק את יישום התזמון שלך עם מדידות חומרה בפועל כדי להבטיח דיוק.
עם תרגול וניסיון, חישובים של זמן הופכים אינטואיטיביים, ומאפשר לך להגדיר במהירות את הזמן עבור כל יישום מוטבע.אם אתה ממצמץ LED, ייצור אותות PWM, יישום לוח זמנים בזמן אמת, או מדידה רוחב הדופק, העקרונות מכוסים מדריך זה לספק את הבסיס עבור עיצוב מערכות משובצות בזמן מוצלח.