שְׁאֵלָה:
חלופות לספריית Wire עבור I2C
fuenfundachtzig
2015-05-10 01:50:08 UTC
view on stackexchange narkive permalink

אני מחפש (קל לשימוש ונבדק היטב) חלופות לספריית Wire . Wire עובד טוב מאוד, אבל: אני רק צריך את Arduino כדי לשמש כמאסטר I2C וספריית Wire נראה ממש בזבוז משאבים:

המטרה שלי היא לשלוח נתונים בגוש (למשל 32 או 64 בתים). נתונים אלה כבר יושבים במערך ב- SRAM. כעת כאשר אתה משתמש בספריית Wire , אתה קורא לפונקציה TwoWire :: write אשר מעתיקה את הנתונים שלך למאגר שני. לאחר מכן, Wire עושה שימוש בספריית TWI שבה twi_writeTo מעתיק את הנתונים שוב למאגר שלישי. זה קצת מגושם, לא?

ראיתי את DSSCircuits / I2C-Master-Library אבל אני לא בטוח עד כמה הוא בוגר מכיוון שלא היה כל התחייבות לאחר ההתחייבות הראשונית שהיא בת 3 שנים.

האם באמת יש לך בעיות שימוש באיל? אופטימיזציה של משהו לפני שהוא הופך לבעיה היא לעתים קרובות מאמץ מבוזבז.
הכל מסתכם בשאלה של רצון לגרום לזה לעבוד * בקרוב * ו / או * באופן נייד * לעומת הרצון לגרום לזה לעבוד * בצורה אופטימלית *. אתה כמובן חופשי להשיג את המדריך למתכנת ATmega ולכתוב לרשמים ההיקפיים בעצמך.
דף האינטרנט של dsscircuits '[Arduino I2C] (http://www.dsscircuits.com/articles/86-articles/66-arduino-i2c-master-library) מציג חמש גרסאות של ספריית I2C שעבורן קישור ה- github שלך מיועד. זה כנראה נקודת התחלה בסדר עבור התיקונים שאתה חושב. אם ל- Wire היו תיקונים מאז ינואר 2012, ייתכן שתצטרך להוסיף אותם ל- I2C.
> אלטרנטיבות לספריית Wire עבור I2C כתבו בעצמכם. i2c הוא אחד הפרוטוקולים הקלים יותר לכתוב מאפס.
חָמֵשׁ תשובות:
Nick Gammon
2015-08-22 10:51:40 UTC
view on stackexchange narkive permalink

אני לא רואה שום התנגדות לשימוש ב ספריית מאסטר DSS Circuits I2C.

יתכן שזה לא עודכן במשך כמה שנים, אבל אם זה עובד זה לא לא צריך להיות. זה לא כאילו ספריות למיקרו-בקרים צריכות לתמוך במנהלי התקן מדפסות חדשים, במנהלי התקן וידאו וכו '.

אם זה עובד, זה עובד.

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

ספריה זו נראתה מבטיחה מאוד, אך שימו לב שהיא תומכת רק במטרות AVR. מכיוון שפותחו ליבות ארדואינו למגוון ארכיטקטורות, ספרייה זו לא "תפעל" רק לכל לוח תואם ארדואינו. לדוגמא, הוא ** לא ** תואם ל- Feather מבוסס AdMruit STM32F405
Mikael Patel
2015-12-20 16:18:30 UTC
view on stackexchange narkive permalink
הכיתה

Cosa TWI היא גישה שונה מאוד לתמיכה במנהלי התקני I2C. זה בכלל לא משתמש בשום SRAM נוסף עבור מאגרים. אם מנהל התקן אינו חוסם עליו לטפל במאגר הנדרש. כמו כן מחלקת Cosa TWI תומכת באינטראקציה אופיינית עם התקני I2C כגון מאסטר / עבד, דפוסי "כתיבת נתונים שקראו רישום" ועסקאות בעת שימוש בהשחלה מרובה.

ספריית תוכנה וחומרה Arduino-TWI זמינה. הוא משתמש בספריית Arduino-GPIO וניתן להשתמש בו בלוחות מבוססי AVR ו- SAM.

כמה דוגמאות: TWI Scanner, DS3231 שעון / לוח שנה בזמן אמת, מתאם LCD I2C עם PCF8574.

Flanker
2016-03-19 21:17:54 UTC
view on stackexchange narkive permalink

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

SMFSW
2017-03-15 21:58:54 UTC
view on stackexchange narkive permalink

ביצעתי 2 ליבות בעצמי לשימוש קל יותר ושיחות עקביות:

אחת למטרות AVR:
cI2C

אחרת באמצעות אותן פונקציות עבור כל היעדים האחרים (שבעצם מהווים עטיפה לספריית Wire):
WireWrapper

שניהם זמינים במסגרת מנהל ספריית IDE.
שניהם עובדים כמנהל ללא שימוש בהפרעה ונבדקים על מטרות שונות עם עבדים שונים:
- UNO, ננו עבור cI2C
- אפס, Due & ESP8266 עבור WireWrapper

Damago
2017-11-22 04:35:41 UTC
view on stackexchange narkive permalink

אתה יכול להשתמש בגישה שונה לחלוטין לשאלה העליונה. לבקש חלופות שנתת לכך סיבה: להיפטר מקוד לא בשימוש בבינארי. אתה יכול להשיג הסרת קוד שאינו בשימוש מבלי להשתמש בספרייה חלופית. זכור כי באפשרותך להורות למהדר ולקישור לא לכלול קוד שאינו בשימוש מהבינארי המהולל. פשוט השתמש בדגלי אוסף:

  CFLAGS + = -Wl, -staticCFLAGS + = -ffection-sectionCFLAGS + = -Wl, - gc-קטעים  

פונקציית ה- Rach תהיה בקטע משלה.

  LDFLAGS + = -Wl, -gc-קטעים  

זה אומר ל- GCC לשלוח את הדגל -gc-קטעים לקישור שיסיר חלקים שאינם בשימוש. וואלה! קטעים שאינם בשימוש מוסרים.



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