באחד המאמרים הקודמים כבר נגענו בקצרה בשימוש במרשם משמרות, ובמיוחד 74HC595. בואו נסתכל מקרוב על היכולות וההליך לעבודה עם מיקרו-מעגל זה.
נחוץ
- - ארדואינו;
- - מרשם משמרות 74HC595;
- - חיבור חוטים.
הוראות
שלב 1
Shift register 74HC595 וכדומה משמשים מכשירים להמרת נתונים סדרתיים למקבילים, ויכולים לשמש גם כ"תפס "לנתונים, המחזיקים במצב שהועבר.
ה- pinout (pinout) מוצג באיור משמאל. מטרתם היא כדלקמן.
Q0 … Q7 - פלט נתונים מקביל;
GND - קרקע (0 V);
Q7 '- פלט נתונים סדרתי;
^ MR - מאסטר איפוס (נמוך פעיל);
SHcp - קלט שעון רישום משמרת;
STcp - קלט דופק שעון "תפס";
^ OE - הפעלת הפלט (נמוך פעיל);
Ds - קלט נתונים סדרתי;
Vcc - ספק כוח +5 V.
מבחינה מבנית, המיקרו מעגל מיוצר בכמה סוגים של מקרים; אשתמש בזה שמוצג באיור מימין - הפלט - כי קל יותר להשתמש עם קרש לחם.
שלב 2
הרשו לי להיזכר בקצרה בממשק הטורי SPI, בו נשתמש כדי להעביר נתונים לרשם המשמרות.
SPI הוא ממשק סדרתי דו כיווני בעל ארבעה חוטים בו משתתפים אדון ועבד. המאסטר במקרה שלנו יהיה הארדואינו, העבד יהיה רישום 74HC595.
בסביבת הפיתוח של Arduino יש ספרייה מובנית לעבודה על ממשק SPI. בעת החלתו משתמשים במסקנות המסומנות באיור:
SCLK - פלט שעון SPI;
MOSI - נתונים ממאסטר לעבד;
MISO - נתונים מהעבד לאדון;
SS - בחירת עבדים.
שלב 3
בואו נרכיב את המעגל כמו בתמונה.
אני גם אחבר מנתח לוגיקה לכל הפינים של המיקרו-מעגל רושם המשמרות. בעזרתו נראה מה קורה ברמה הפיזית, אילו אותות הולכים לאן, ונבין למה הם מתכוונים. זה צריך להיראות כמו התצלום.
שלב 4
בואו נכתוב סקיצה כזו ונטען אותה בזיכרון הארדואינו.
המשתנה PIN_SPI_SS הוא קבוע סטנדרטי פנימי המתאים לסיכה "10" של הארדואינו כאשר משתמשים בה כמאסטר של ממשק SPI בו אנו משתמשים כאן. באופן עקרוני, נוכל באותה מידה להשתמש בכל סיכה דיגיטלית אחרת בארדואינו; אז נצטרך להכריז על זה ולהגדיר את מצב ההפעלה שלו.
על ידי הזנת סיכה זו LOW, אנו מפעילים את רישום המשמרת שלנו להעברה / קבלה. לאחר השידור, אנו מעלים את המתח שוב ל- HIGH, והחילופי מסתיימים.
שלב 5
בואו נהפוך את המעגל שלנו לעבודה ונראה מה מנתח הלוגיקה מראה לנו. התצוגה הכללית של דיאגרמת התזמון מוצגת באיור.
הקו המקווקו הכחול מציג 4 קווי SPI, הקו המקווקו האדום מציג 8 ערוצים של נתונים מקבילים של מרשם המשמרות.
נקודה A בסולם הזמן היא הרגע בו המספר "210" מועבר למאגר המשמרות, B הוא הרגע בו נכתב המספר "0", C הוא המחזור החוזר מההתחלה.
כפי שאתה יכול לראות, מ- A ל- B - 10.03 אלפיות השנייה, ומ- B עד C - 90.12 אלפיות השנייה, כמעט כמו ששאלנו בשרטוט. תוספת קטנה ב- 0, 03 ו- 0, 12 ms היא הזמן להעברת נתונים סדרתיים מהארדואינו, כך שאין לנו כאן בדיוק 10 ו- 90 ms.
שלב 6
בואו נסתכל מקרוב על סעיף א '.
בחלקו העליון נמצא דופק ארוך שבאמצעותו ארדואינו יוזם שידור בקו SPI-ENABLE - בחירת עבדים. בשלב זה מתחילים להפיק פעימות שעון של SPI-CLOCK (שורה שנייה מלמעלה), 8 חלקים (להעברת בת אחד).
השורה הבאה מלמעלה היא SPI-MOSI - הנתונים שאנו מעבירים מהארדואינו למרשם המשמרות. זהו המספר שלנו "210" בבינארי - "11010010".
לאחר סיום ההעברה, בסוף הדופק של SPI-ENABLE, אנו רואים שמרשם המשמרות קבע את אותו הערך על 8 רגליו. הדגשתי את זה בקו מנוקד כחול וסימנתי את הערכים לבהירות.
שלב 7
עכשיו בואו נפנה את תשומת ליבנו לסעיף ב '.
שוב, הכל מתחיל בבחירת עבד והפקת 8 פעימות שעון.
הנתונים בקו SPI-MOSI הם כעת "0".כלומר, ברגע זה אנו כותבים את המספר "0" לרשם.
אך עד לסיום ההעברה, המאגר שומר את הערך "11010010". הוא מוצא לסיכות המקבילות Q0.. Q7, ויוצא כאשר יש פעימות שעון בקו מהפלט המקביל Q7 'לקו SPI-MISO, אותו אנו רואים כאן.
שלב 8
לפיכך, למדנו בפירוט את נושא חילופי המידע בין מכשיר המאסטר, שהיה הארדואינו, לבין מרשם המשמרות 74HC595. למדנו לחבר רושם משמרות, לכתוב אליו נתונים ולקרוא ממנו נתונים.