facebook pixel מדריך: פירוט שפת תכנות - טיפול מתקדם - ()shiftIn - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

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


2022-06-14 10:30:03
פונקציית ()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.