פירוט שפת תכנות - טיפול מתקדם - ()shiftIn

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

פירוט שפת תכנות - טיפול מתקדם - ()shiftIn

הודעהעל ידי Alex » ד' יולי 26, 2017 1:17 pm

פונקציית ()shiftIn קולטת מידע של בית (byte) סיבית אחר סיבית (bit). הפונקציה יכולה להתחיל מצד ה-MSB (סיבית הכי שמאלית) או LSB (סיבית הכי ימנית). עבור כל סיבית, קו השעון (clock) מורם ל-"1" לוגי, הביט נקרא ואחריו קו השעון מורד ל-"0" לוגי.

אם הצד השני אליו מחוברים הקווים מגיבים על עליה של קו השעון, תצטרכו לוודא שקו ה-clock יהיה ב-"0" לוגי לפני שתקראו לפונקציה ()shiftIn, כלומר צריך לקרוא ל-digitalWrite(clockPin, LOW).

זהו למעשה מימוש תוכנתי של ממשק SPI. תוכלו להשתמש בספריית SPI (קישור TODO) שמממשת את התקשורת בצורה חומרתית, מהירה יותר, אבל פועלת רק על קווים מסויימים.

תחביר
קוד: בחר הכל
byte incoming = shiftIn(dataPin, clockPin, bitOrder)

פרמטרים:
dataPin - הקו ממנו יקראו הסיביות של המידע - מסוג int
clockPin - הקו שיעלה וירד בקריאה מ-dataPin - מסוג int
bitOrder - סדר של קריאת הסיביות, MSBFIRST - Most Significant Bit First או LSBFIRST - Least Significant Bit First

הפונקציה מחזירה byte של מידע שנקרא.

שימו לב:
קו ה-dataPin צריך להיות מוגדר כקו קלט ו-clockPin כקו פלט בעזרת פונקציה ()pinMode.

פונקציית ()shiftOut כתובה כך שהיא פועלת רק על בית אחד (1byte), כך שאם אתם צריכים לטפל במספרים גדולים יותר מ-255, תצטרכו לקרוא לפונקציה זו עבור כל byte במספר.

ראו גם:
()shiftOut
SPI - TODO

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של ()shiftIn לפי רישיון Creative Commons Attribution-ShareAlike 3.0.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7890
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot], Google [Bot]