שְׁאֵלָה:
I2C RTC מחזיר זמנים רעים - לפעמים
David
2014-08-31 23:54:42 UTC
view on stackexchange narkive permalink

יש לי שעון TinyRTC I2C באחד מפרויקטי Arduino שלי וזה עובד לרוב. אך מדי פעם הוא ידווח על הזמן כ- 165 שעות, 85 דקות ו- 25 שניות (165: 85: 25) למשך כמה שניות ואז יחזור לשעה הנכונה.

אני חושב שזה קשור לאוטובוס I2C מסובך למדי שאני מפעיל: יש לו 12 מכשירים מחוברים אליו (השעון, LCD ו- 10 נורות לתכנות LED BlinkM).

הנה מה שניסיתי לנקות באגים, ללא הועיל:

  • הוחלף ה- RTC והסוללה
  • הוחלפו נגדי I2C משיכה
  • ניתק מחדש את החיווט I2C
  • בדק את הציור הנוכחי של הפרוייקט שלי (.2A) וודא שהספק הכוח יכול להתמודד עם זה (זה יכול) מקבל רעש

אני חושב שזה משהו שקשור לאוטובוס I2C ... השעון עובד בסדר כששום דבר אחר לא קורה באוטובוס, אבל ברגע שיש המון פעילות ( כאשר נוריות שנשלחות הודעות, או אולי דברים אחרים) היא מתחילה לדווח על השעה 165: 85: 25).

כל מושג כיצד אוכל (א) לבודד את הגורם לבעיה זו; (ב) לקבל זכות ליישום פיתרון?

http://arduino.cc/en/Reference/WireEndTransmission האם ניסית את פרמטר העצירה ו / או בדקת את תנאי השגיאה שהוחזרו? קשה לדעת מה לא בסדר בלי מעגל או קוד.
באיזה קוד / ספרייה השתמשת? מה היה הזמן הצפוי לשעה 165: 85: 25?
כמה גדולים המשיכות שלך באוטובוס?
זה יכול להיות קוד שגיאה עבור I2C או שזה יכול להיות דוח מצב מ- TINY RTC. אז איך אתה בטוח שהוא מגיב בזמן הנוכחי?
@jippie - הקישור שלך היה שימושי ... אני אנסה להאט את אוטובוס ה- I2C למקרה שיש בעיה לתקשר עם כל כך הרבה מכשירים.
-1
@Lean - נגדי משיכה 4.7k
@Treesrule14 - השעון עובד בסדר במשך שעות בכל פעם ... ואז מדווח על זמנים מוזרים אלה, שקורים כשיש פעילות אחרת באוטובוס
האם בדקת שאין לך מכשירים עם כתובות סותרות באוטובוס?
וודא שיש לך רק קבוצה אחת של נגדים נשלפים.
אחד תשובה:
Frank Lu
2015-02-04 06:32:05 UTC
view on stackexchange narkive permalink

בעיה לסירוגין כזו נראית בעיני בעיה שלמות אות החומרה, במיוחד סביב שבב ה- RTC של אוטובוס I2C. האם נתקלת בבעיה כלשהי מכל מכשיר אחר באותו אוטובוס I2C (למשל כאשר כל הנוריות דולקות)? אם לא, בדוק את רמת הרעש בהספק שבבי RTC ו- GND. כמו כן, למפרט I2C יש מגבלה על עומס הקיבול של האוטובוס עד 400 pF. כאשר יש יותר מדי עומסי התקני I2C באותו אוטובוס, האוטובוס עלול להפוך לפגיע לרעש המערכת.

הצעה לאיתור באגים: כדי לצמצם אם מדובר בעומס I2C, הוסף שבב נהג אוטובוס I2C בין לוח Arduino הראשי וההיקפי שלך. לדוגמא, P82B96 מ- TI. ראה את המפרט כאן. http://www.ti.com/lit/ds/symlink/p82b96.pdf



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...