ליאיר...

shed

New member
ליאיר...

קראתי עכשיו את מה שאתה צריך לעשות (בגדול). ממשק vb שמדבר עם הצ´יפ (8051 של מוטורלה???) זה אחד הדברים היותר פשוטים שאפשר לעשות. אובייקט mscomm מטפל בכל הנושא, ומעמיד לך ממשק נוח וקל לתפעול. הבנתי שאתה צריך לתפעל את הצ´יפ??? תפתח את הספר שלו (מגיע עם החוברת יצרן) - שם מוגדר הכל: איזה פסיקות קיימות, איך עובד ה-uart, סוגי פעולה, איתחול, כתובות, בקיצור הכל. עכשיו כל מה שאתה תצטרך, זה לכתוב (באסמבלר של הצ´יפ, או ב-סי ולהשתמש בקומפיילר ייעודי), תוכנית שכותבת רצפים של ביטים (לפי דפי המפרט), לכתובות המתאימות. זה הכל. בקשר לשאלה על ה-watchdog, התשובה היא כן: אתה צריך לחשב , לפי מספר פעולות, מס´ הקלוקים שלוקחת כל פעולה, ותדר השעון, זמן (בערך) שייקח לתוכנית שלך לעבוד, ואז אתה יודע מתי את צריך "לתת" מכה על הטיימר. דרך אגב: אחת השיטות הנפוצות היא לכתוב רוטינת פסיקה שמאפסת את הטיימר, וכל פעם לקרוא לה מהתוכנית עצמה.
 

nahsh

New member
פתרון אפשרי (?) נוסף:

ניתן לכתוב רוטינת פסיקה שמופעלת ע"י איפוס הטיימר, ובה לעשות את הדרוש, וכן לאתחל את הטיימר שוב לערך ההתחלתי. מה שאמור לקרות הוא, שהתוכנית תרוץ כרגיל, וכאילו בלי קשר, תהיה מידי פעם פסיקה שתתן את המכה המדוברת, והתוכנית תמשיך לרוץ כאילו כלום לא קרה. shed, יכול להיות שלזה התכוונת? לא בטוח שהבנתי.
 

shed

New member
לא!!! לזה בדיוק לא! התכוונתי

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

nahsh

New member
אני מודה שאני לא בדיוק מבין

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

shed

New member
הסבר- או מתי כדאי להרביץ :)

הנושא פשוט מאוד: במערכות משובצות מחשב, יש מיקרופרוססור. רגיל ופשוט, יש אומרים אפילו חמוד. מעבד, כמו שכולנו יודעים, הוא ערימת טרנזיסטורים, לא חכמה במיוחד, שהולכת לכתובת מסויימת בזכרון (זאת הרשומה ב-pc) , מביאה את הפקודה שיש שם, ומבצעת אותה, הולכת לכתובת הבאה, וכו וכו´. הבעיה: מה קורה אם התוכנית נכנסת ללולאה אינסופית, או לחילופין, "מתברברת" (כלומר ה-pc לא מצביע על כתובת עם פקודה נכונה, יכול להיות שיש שם מידע בכלל, והמעבד לא מבין מה רוצים ממנו וכו´)? במקרה כזה, הכי פשוט זה לעשות reset, כלומר להגיד למעבד - "לך לכתובת אפס, ותתחיל לבצע מה שכתוב שם" (או כל כתובת אחרת לצורך הנושא. בדיוק בשביל זה המציאו את ה-watchdog : הרעיון: יש טיימר חומרה, כאשר הוא גומר את הספירה שלו (משהו כמו כמה מילי שניות) הוא מקפיץ פסיקה. פסיקה, כידוע, מתבצעת, בלי שום קשר למצב התוכנית. הפסיקה הזו, למעשה מבצעת reset תוכנה- מחזירה את pc ל-0. מה שיאיר צריך לעשות, זה לדאוג, מדי פעם, לאתחל את הספירה של הטיימר הזה, כדי שלא יקפיץ את הפסיקה. אם יאיר החביב שלנו יפשל (מה שאומר שכל הפורום הזה בערך פישל) אזי הפסיקה תופעל, והמעבד יחזור לדבר איתנו :))) האח הידד!!! מקווה שהסברתי את עצמי.
 

nahsh

New member
../images/Emo13.gif הסברת כן, הבנתי - לא בטוח:

למה שהתונה תתברבר? למה לא מראש לכתוב את הקוד כמו שצריך?
 

פינצ

New member
גם לפי מה שידוע לי

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

nahsh

New member
כנראה שכך זה במערכות מסויימות

אישית - לא נתקלתי בזה.
 

shed

New member
שוב, קצת סדר במושגים

כשטיימר מתאפס, הוא לא זורק פסיקה. הוא מרים פולס באחת מהרגליים שלו. מי שממש רוצה ללמוד על צורות הספירה השונות מוזמן לקרוא את ה data sheet של ה-8254, מצוי באתר של אינטל. רק אם תחבר פיזית, את רגל המוצא, לרגל כניסה של בקר פסיקות (8259), אזי תהיה פסיקה. למה שתוכנית תתברבר??? כי זה קורה לכולם, גם לטובים ביותר. למה לא לעשות ריסט ביד? כי הרבה פעמים לבקרים האלה אין כפתור ריסט. זה עד כדי כך פשוט. אז במקום שיצטרכו לקרוא לטכנאי שיבוא עם המברג, יפתח את הקופסא, ויעשה ריסט למעבד, עושים את ה-watchdog שיעשה ריסט בעצמו. בקשר לרוטינת הפסיקה: אנחנו לא רוצים לעלות עליה, לשנות אותה או כל דבר אחר. היא נשארת כמו שהיא. ואם הגענו אליה סימן שמשהו לא עובד כמו שצריך, ואז מתחילים מהתחלה (כתובת אפס- בדיוק כמו ריסט תוכנה, או כמו ריסט "רך") אין דבר כזה ריסט למעבד, המעבד לא מרגיש הבדל אם הוא עובד על כתובת אפס או אלפיים. מבחינתו זה אותו דבר. הריסט נועד לאפס את ה-pc . זה הכל.
 

nahsh

New member
טוב, אני עובד בסביבה שונה מעט

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

shed

New member
לפחות עם המיקרופרוססורים

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

yair24

Member
תודה רבה

הצ´יפ הוא אמנם לא 8051 של מוטורולה אלא איזשהו צ´יפ של חברה אחרת אבל אני מקווה שיהיה שם עזרה יאיר
 
למעלה