חיפוש
  • יניב אור

העברת אותות בין ה-RPi ל-AVR - עם interrupts

עודכן ב: 16 יול 2019

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


בצד ה-AVR ב-main לא תהיה לולאה אינסופית (שעון). בכל ריצה של התוכנית, יועבר pulse אחד. בעזרת כפתור ה-reset אשלח את האות (מ-PB0).

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

הצד השני, ה-RPi, יחכה ל-interrupt על GPIO11 ויכתוב על המסך את המידע.

* בהמשך אעשה handshake - ה-AVR ישלח אות, ה-RPi יקבל וישלח חזרה, ה-AVR יאשר ב-LED, נניח מ-PB1.




ניסיתי להשתמש בקוד של ה-RPi מה-session של העברת אותות עם שעון.

GPIO11 מחובר ל-PB0 - ברגע שאני מריץ את הפייתון, הנורה נדלקת באופן קבוע.

אגב, עוד תופעה. ברגע ש-GPIO11 לא מחובר לכלום, אני רואה על המסך רק 1-ים.

* לחקור את זה




בקוד הזה אני משתמש ב-interrupt ב-RPi. גילוי edge (rising) בפורט הרצוי.




שיפרתי את הקוד מבחינת UI כדי שיהיה ברור יותר לראות על המסך מה קורה. עכשיו זה נראה קרוב יותר לאוסילוסקופ. הוספתי גם קוד שמגדיר את GPIO8 כ-OUTPUT וברגע שמתקבל אות, ה-RPi שולח אות חזרה.




* לבדוק איך אפשר לכתוב קוד פייתון שמציג גל (משמאל לימין) ב-console.

* לכתוב NodeJS שמקבל ב-input את ה-output של הסקריפט פייתון. ה-input יהיה 0 ו-1.


שיניתי את ה-delay ב-AVR ל-100 מילישניות:




נמשיך הלאה.

ה-RPi שולח אותות דרך GPIO8. אני אתפוס אותם ב-AVR.

החלפתי את כיוון הפורטים. PB0 יהיה קלט ו-PB1 ו-2 יהיו פלט.




© 2023 by DO IT YOURSELF. Proudly created with Wix.com