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

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



  #4  
ישן 14-09-2011, 15:10
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
קריאת לחצן המחובר למיקרובקר והדלקת לד בהתאם למצב הלחצן
בתגובה להודעה מספר 1 שנכתבה על ידי sh_bmw שמתחילה ב "פקודת קלט באסמבלי - עזרה"

טיפ: כאשר אתה ניגש לממש מערכת הבנויה סביב מיקרובקר מסוים, מומלץ לקרוא תחילה את
כל דפי-הנתונים שלו,אפילו ברפרוף, רק כדי ללמוד כמה שיותר על פעולת הבקר..

במשפחת Tiny של אטמל, לפני שמשתמשים בפין קלט/פלט (IO) כלשהו, יש להגדיר את ה"כיוון" שלו
בעזרת הפקודה DDxn, כאשר x הוא האות המציינת את הפורט הרצוי (בדרך-כלל a,b או c) ו-x הוא
מספר המציין את הפין הרצוי (בדרך-כלל ערך בין 0 ל-7). סיבית שאתה כותב אליה "1" מוגדרת
בתור מוצא (Output) וסיבית שאתה כותב אליה "0" מוגדרת כקלט (Input).

לאחר שהגדרת את הכיוון של הפינים הרצויים, אתה יכול לכתוב אליהם ערך בעזרת הפקודה
PORTxn (התפקידים של x ו-n הם כפי שתוארו לעיל).
כדי לקרוא את מצב הפינים, תשתמש בפקודה PINxn (התפקידים של x ו-n הם כפי שתוארו לעיל).

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

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


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 15-09-2011, 10:31
  משתמש זכר DigiGil DigiGil אינו מחובר  
 
חבר מתאריך: 20.10.06
הודעות: 202
שלח הודעה דרך MSN אל DigiGil
מידע תוכנה אשר מכבה ומדליקה לד לסירוגין, בכל לחיצה על לחצן
בתגובה להודעה מספר 5 שנכתבה על ידי sh_bmw שמתחילה ב "תודה לכולם"

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

האלגוריתם
*בטל את כל נגדי משיכת-העל (Pull-ups) הפנימיים בעזרת הסיבית 'PUD' בתוך הרגיסטר MCUCR
(חפש מידע על כך בדפי-הנתונים או באינטרנט, זה לא מסובך)
*קבע את הפין אליו מחוברת הלד בתור מוצא (Output) ושים בו "0" (לד כבויה).
*קבע את הפין אליו מחובר הלחצן בתור מבוא (Input),כתוב אליו "1" ואפשר את נגד ה-PullUp הפנימי שלו (זה בעצם הופך את הפין למבוא המתאים לקריאת מצב הלחצן).
צור לולאה שבודקת את מצב המפסק בערך בכל 10 מילי-שניה. אם 5 בדיקות רצופות מראות שהלחצן
לחוץ (זהו מנגנון נגד הריטוטים), אז תדליק את הלד.
לאחר הדלקת הלד, חכה בלולאה עד שתזהה שהלחצן אינו לחוץ (אם לא תבצע את הבדיקה הזו, אז
מיד תזוהה שוב "לחיצה" ואז התוכנית תכבה את הלד ואז תדליק וחוזר חלילה..)
צור שוב לולאה שבודקת את מצב המפסק בכל 10 מילי-שניה. אם 5 בדיקות רצופות מראות שהלחצן
לחוץ (זהו מנגנון נגד הריטוטים), אז תכבה את הלד.
לאחר כיבוי הלד, חכה בלולאה עד שתזהה שהלחצן אינו לחוץ (אם לא תבצע את הבדיקה הזו, אז
מיד תזוהה שוב "לחיצה" ואז התוכנית תדליק את הלד ואז תכבה אותו וחוזר חלילה..)
חזור לתחילת הרוטינה והמתן ללחיצה הבאה..

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

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


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

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

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

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

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



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

הדף נוצר ב 0.04 שניות עם 12 שאילתות

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

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