לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה --לשאלות בנושאי טלוויזיות, מערכות קולנוע ביתי, הגברה וסאונד - אנא פנו לפורום אודיו וקולנוע ביתי -- www.fresh.co.il/f=103 תגיות פורום: פורום אלקטרוניקה - פורום חשמל - שאלות בנושאי אלקטרוניקה - תכנון מעגלים - מעגלים מודפסים - פיתוח אלקטרוני - תכנון PCB - בקרים למנועים - תאורת לדים - תכנון דימר - מודינג - Arduino - מיקרו בקרים - שליטה על תאורה - שלט רחוק - משדר FM - תאורת LED - פתרון שאלות בחשמל - אלקטרוניקה תקבילית חץ ימינה  

לך אחורה   לובי הפורומים > תחביבים > חשמל ואלקטרוניקה
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 08-12-2011, 09:34
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
יצירת השהיה של 5 דקות ב-8051
בתגובה להודעה מספר 1 שנכתבה על ידי ארץ נהדרת שמתחילה ב "השהיה"

היי,
אין לי דוגמא של הקוד שאתה מבקש,אבל אני יכול לכתוב לך מה אתה צריך לעשות..

צריך להגדיר טיימר שמונה מ-0000 (מינימום) עד FFFF (מקסימום).
צריך לחשב כמה זמן לוקח לטיימר למנות מהמינימום למקסימום (לפי דגם המיקרובקר ולפי תדר הגביש שמחובר אליו ומספק לו אות-שעון).
תחלק את כמות השניות שיש ב-5 דקות (ההשהיה שאתה רוצה) בזמן שלוקח לטיימר להגיע ממינימום למקסימום. נניח נקרא לתוצאה הזו REP.
עכשיו עליך לדאוג שהטיימר ימנה ממינימום למקסימום, REP פעמים. נוח לממש זאת בעזרת פסיקת-טיימר, כך שבכל פעם שהטיימר "גולש" (Overflow) אז יש פסיקה שמגדילה משתנה X וגם מאתחלת את הטיימר שיתחיל למנות זמן מהתחלה (מהמינימום).
אם תיצור מנגנון כזה, X יגדל בהתמדה. אתה צריך להוסיף תנאי, שאם X שווה ל-REP, התוכנית שלך תמשיך, כי הסתיימה ההשהיה (עברו 5 דקות..)
אגב, רוב הסיכויים ש-REP לא יצא מספר שלם בדיוק. במקרה כזה, אם הדיוק של 5 דקות חשוב לך, אז בהפעלה האחרונה של הטיימר, אתה צריך לתת לו לרוץ מהמינימום ועד ערך כלשהו (לא FFFF, אלא דרוש חישוב) שיגרום לזמן הכללי להיות בדיוק 5 דקות..

בברכה,
דיגיגיל
_____________________________________
_- סיוע בהשלמת פרויקט-גמר להנדסאים -_
(האתר digigil.com נסגר)


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 08-12-2011, 21:34
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
מומלץ להתרגל ליצור השהיות בעזרת טיימר..
בתגובה להודעה מספר 3 שנכתבה על ידי dorM שמתחילה ב "אולי זה יעזור..."

מומלץ להתרגל ליצור השהיות בעזרת טיימר, בעיקר אם אלו השהיות ארוכות, מכיוון שמימוש השהיה בעזרת פקודות מסוג DJNZ ודומותיהן גורם ל"השהיה חוסמת" (Blocking delay). כלומר, בזמן שמתקיימת ההשהיה, המיקרובקר לא יכול לבצע שום-דבר אחר וזה מעין "בזבוז" של כוחו של המיקרובקר.

כדי להבין למה אני מתכוון, נסו לחשוב על האפליקציה הבאה: מערכת אלקטרונית שמחוברת לתנור חימום (נניח תנור שאמור להשאיר בדיל תעשייתי במצב נוזלי ולכן התנור נשאר חם 24/7), המערכת אמורה לקרוא טמפרטורה פעם ב-5 דקות, מחיישן שמחובר לתנור. אם הטמפרטורה גבוהה מדי, אספקת המתח לגוף-חימום מופסקת ל-5 דקות ואם היא נמוכה מדי, מופעל זמזם התרעה. אם הטמפרטורה בסדר, גוף החימום ממשיך לעבוד כרגיל.
לתנור יש דלת גדולה, ומחובר אליה חיישן שמדווח כאשר הדלת נפתחת. במקרה של פתיחת הדלת, החום בתנור מתחיל לרדת ולכן יש להפעיל מיידית נורת אזהרה למשך 5 דקות לפחות. אחרי 5 דקות, אם הדלת עדיין לא נסגרה, מופעל גם זמזם התרעה. אם סוגרים את הדלת, הנורה כבה והזמזום מפסיק, והמערכת ממשיכה כרגיל (בדיקה פעם ב-5 דקות).
תארו לעצמכם מצב שמדידת ה-5 דקות מתבצעת ב"השהיה חוסמת", ומישהו פותח את הדלת רגע אחרי שהתבצעה בדיקת טמפרטורה על-ידי המערכת. יעברו כמעט 5 דקות עד שהמערכת תגלה שדלת התנור פתוחה ותדליק את הנורה ועוד 5 דקות עד שהזמזם יתחיל לזמזם.. כמעט 10 דקות שבהן הטמפרטורה עלולה לרדת משמעותית ולגרום נזק למפעל.
אם לחילופין ההשהיה תמומש באמצעות פסיקה, אז בתוכנית "הראשית" ניתן לבדוק את דלת-התנור ולהתריע כמעט מיידית כאשר היא נפתחת וגם לכבות את הנורה מיידית כאשר הדלת נסגרת..
מניית הזמן ובקרת הטמפרטורה ממשיכות "ברקע" כרגיל, מבלי להפריע.
(היישום לעיל ניתן רק בתור דוגמא להשהיה חוסמת, בכוונה לא נכנסתי לפרטים הקטנים)
_____________________________________
_- סיוע בהשלמת פרויקט-גמר להנדסאים -_
(האתר digigil.com נסגר)


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 14-12-2011, 21:03
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
איך אפשר לקבל "פסיקה ברגע שמשתנה הטמפרטורה"?
בתגובה להודעה מספר 5 שנכתבה על ידי פסטן שמתחילה ב "קודם כל, אתה צודק לגמרי בזה..."

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

בקשר ללינק שצירפת (Spinlock), לא יודע אם קראת את המידע בלינק, אבל המידע שם מתייחס להשהיה חוסמת שמבוצעת בתוך "תהליכון" (Thread), כלומר מדובר בכלל על מערכת הפעלה התומכת בריבוי-משימות, השואל במקור שאל על מימוש השהיה עבור 8051, ולא ציין שימוש במערכת-הפעלה כלשהי.
בנוסף, אם תקרא את המאמר, תבחין במשפט "Spinlocks are efficient if threads are only likely to be blocked for a short period of time", או במילים אחרות השימוש בשיטה הזו מתאים רק לביצוע השהיות קצרות בקוד ולא לארוכות, וזה בדיוק מה שציינתי בתחילת התשובה שלי ("מומלץ להתרגל ליצור השהיות בעזרת טיימר, בעיקר אם אלו השהיות ארוכות").
זה כיף לרשום הערות על תשובות של אחרים ואין לי בעיה עם זה, אבל נתתי תשובה נכונה ב-100% ואתה מטעה את השואל עם הערות שאינן נכונות..
האמן לי שכתבתי הרבה השהיות, מכל הסוגים ובכל מיני שיטות, ואני מכיר את הנושא היטב.
אגב, בקשר לפסיקות, אולי זה לא היה ברור מספיק בתשובה שלי, אבל כשכתבתי "אם לחילופין ההשהיה תמומש באמצעות פסיקה", התכוונתי לפסיקת טיימר. פשוט מאפשרים את פסיקת הטיימר ואז מגדירים טיימר מתאים שיוצר השהיה באורך הזמן הרצוי. בתוך רוטינת הטיפול בפסיקת הטיימר (ISR) מטפלים בכל מה שדורש טיפול לאחר ההשהיה, וכמובן טוענים מחדש את הטיימר, כך שיתן פסיקה נוספת, לאחר ששוב יחלוף פרק-הזמן של ההשהיה..

בברכה,
דיגיגיל
_____________________________________
_- סיוע בהשלמת פרויקט-גמר להנדסאים -_
(האתר digigil.com נסגר)


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:25

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר