I2C ו- SPI עם PIC Microcontrollers

מיקרובקרים ממשפחת ה- PIC של Microchip משמשים באופן נרחב במערכות משובצות, מנקודות חיישן פשוטות לבקרים תעשייתיים מורכבים. מיומנות מפתח עבור כל מפתח מוטבע היא היכולת ממשק היקפי באמצעות פרוטוקולים תקשורתיים. שניים מהנפוצים ביותר הם I2C (שלב בין-Integrated) ו- SPI (Serial Peripheral Interface).

מאמר זה מספק מדריך מעשי, מעמיק ליישום I2C ו SPI על המיקרובקרים PIC.We מכסה את ההתקנה חומרה, רישום תצורה, רצפי קוד טיפוסי, וטכניקות ניתוק משותף.עד סוף יהיה לך את הידע להוסיף בבטחה תקשורת סידורית לפרויקט הבא שלך PIC.

I2C ו- SPI

שני הפרוטוקולים הם אוטובוסים סידוריים סינכרוניים, אך הם שונים בארכיטקטורה, מהירות ויישום.

I2C (Inter-Integrated Circle)

I2C משתמש רק בשני חוטים:0SDAigFLT (Serial Data) ו-FLT:2HzSCLIRFLT 3 (שעון אווירי) לכל מכשיר באוטובוס יש כתובת 7 סיביות ייחודית או 10 סיביות, ותקשורת היא מאסטר-סלאהביטה.המאסטר יוצר את השעון ו- 3.4 אימונים מרובים יכולים לשתף את אוטובוס עם תצוגות מהירות 7 סיביות או 10 סיביות, כלומר, כלומר, לא פחות מ- 100 סיביות, כלומר, לא פחות מ-C, כלומר, לא דורש שעון-מסלולארי, כלומר, לטמפרטורה גבוהה, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, ל- 100 סיביות, כלומר, ל-iC, כלומר, כלומר, ל-ip-ip-ip-R2C, ל-R2, ל-ip-ip-R2, ל-R.

כי רק שני חוטים נדרשים, I2C חוסכת את I / O pins, מה שהופך אותו אטרקטיבי עבור PICs קטנים. עם זאת, הפרוטוקול מורכב יותר מ SPI בגלל טיפול, להכיר ביטים, ועידוד שעון.

SPI (Serial Peripheral Interface)

(ב) משתמשים בארבעה קווים:0MOSIFIRLT:1 (מאסטר Out Slave in), FLT:2MHzISOFLT 3 (Master in slave Out), FLT:4D4DLCDELFLT:5 (שעון אווירי), ו-FLT 6SSFLT 7 (Slave Select) הוא אוטובוס מלא-duplex - ו-Dows (החלים) הוא מהיר יותר מ-D2, ו-I) הוא מקבל נתונים מהירים יותר מ-D2.

SPI הוא פשוט יותר ליישם בחומרה אבל דורש יותר סיכות - קו SS ייעודי אחד לעבד. הרבה מיקרובקרי PIC כוללים מודול ייעודי Master Synchronous Serial Port (MSSP) שניתן להגדיר עבור I2C או SPI.

שיקולים חמורים עבור I2C ו- SPI

לפני צלילה לקוד, עליך לקבל את הזכות החומרה.

(ב) [13] מתנגדים: 0 (FLT:1 ; קווים I2C פתוחים-דרטן; הם דורשים התנגדות חיצונית של משיכת משיכה (בדרך כלל 4.7 k ⁇ ל 10 k ⁇ ) כדי למשוך SDA ו- SCL ל VFreaLT:2DDFLT 3: הערך תלוי בגיבוי אוטובוס ומהירות.

(ב) ,0) רמות הפחתת:0; (ה) וודאו את PIC ואת הפריפריה לפעול באותו מתח לוגיקה (למשל, 3.3 V או 5 V) אם הם שונים, השתמש במשמרות ברמת רמות כגון FLT:2Spark BOB-12009FLT:3 או מעגל מ MOSFET פשוט.

(ב) [ה]התערות: [ה] [ה]] [ה]] [ב]] [ה]]] [ה]]] [ה]][ה]]]][ה]]]] [התחילה] [ה] [ה] [ה]] [התחילה] [ה]] [ה]]]] [ה] [ה] [ה] [ה]] [ה]]] [ה]]]], [ה']] [ה'[ה'[ה'[ה'[ה'[ה'[ה']]]]]]]]]]]] [ה'[ה'] [ה'[ה'[ה']] [ה'[ה'[ה'[ה']]]]]]] [ה'[ה'[ה'] [ה'] [ה'] [ה'] [ה'] [ה'[ה']] [ה'[ה'[ה'] [ה']']]] [ה']]]]]'[ה'[ה'[ה'[ה

(ב) ⁇ :0) ⁇ ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «

רוב ה- PICs המודרניים כוללים את ה-FLT:0 (Master Synchronous Serial Port (MSSP) MPEGFLT:1 מודול תומך הן I2C והן SPI. אנו נתמקד ב- MSSP במצב מאסטר I2C עבור טיפוסי 8 סיביות PIC (למשל, PICF16188.

רשימות מפתח עבור I2C

  • (ב) ⁇ (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0)SSPxconve1FLT:1 - שליטה ברישום 1. בחר מצב I2C (מאסטר, עבד) ומאפשר את המודול.
  • (ב) [15] ,917:0) ,2FLT (המאסטר שולט) בהוראות לשליחת התחלה, מנוחה, עצירה, והכרה.
  • (ב) ויקרא י"א: "בְּהַּרְלֹא עַמֶר" (שם כ"ד, כ"ד).

I2C Masterization ראשונית

  1. המודול MSSP על ידי פינוי ה-FLT:0SSPENFLT 1 bit (SSPxCON1 < 5 >).
  2. הגדרת מצב אמן I2C (בדרך כלל 0x08 ב SSPxCON1 ביטים <3:0 >).
  3. הגדר את קצב הבאוד על ידי טעינה SSPxADD עם הערך הנכון.
  4. הגדר SDA ו- SCL pins כקלטים עם עדשות חלשות (או שימוש בהתנגדות חיצונית).
  5. ניתן להשתמש במודול על ידי הגדרת SSPEN.
  6. באופן אופציונלי, ניתן להפריע ל-MSSP.

דוגמה: קריאה מ- LM75 טמפרטורות חיישן

יש LM75 כתובת 7 סיביות (בדרך כלל 0x48 עבור A0-A2 pins מעומקים) לקרוא את מרשם הטמפרטורה ( מצביע 0x00), אתה צריך קודם לכתוב את הנקודה, ולאחר מכן ליצור התחלה חוזרת לקרוא.

(ב) [15] ויקרא י"א): "וְהִיא רָאִיתִיא אִתָּבְהִיתִיתִי עַמְתָּבְהִיתִי" (ב) ,"הִנְיִדְתָּעָבְתָּעָעָב" (ב"ד)

כל חילופי ה-SSPxSTAT דורשים את ה- BF (Buffer Full) ודגל SSPxIF להפריע.טעות נפוצה היא שכחה לשלוח את ACK/NACK לאחר קבלת נתונים. השתמש ב-FLT:0ACKDTFLT:1 ו-FLT:2ACKENFLT 3 bits ב-SSPCONx2 כדי להכיר ב-S.

I2C פיטופל

  • (ב) ב[[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]
  • (ב) אם מאסטר אחר מנסה לנהוג באוטובוס, MSSP מגדיר את דגל BCLIF. השתמש בזה כדי להחזיר את העסקה.
  • (ב) אם עבד אינו משחרר SDA לאחר שידור, האוטובוס עשוי להיתלות בזמן ששולח תשעה דוצי שעון כדי להתאושש.

« « על מיקרו-בקר

MSSP יכול גם לפעול במצב מאסטר או עבד SPI.We'll Cover Master Mode, שהוא הנפוץ ביותר.

רשימות קריאה בהן SPI

  • (ב) ,0SPIxBoriRGFLT 1 - באודנרטור קצבי (Bud Rate) עבור SPI, תדירות השעון היא FIRFLT:2OSCIRFLT 3 / (2 * (SPIxBRG + 1)).
  • (ב) [15] ,9.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.
  • (FLT:0SPIxCON1FLT:1) - שליטה ברישום 1. בחרי מאסטר / שילה, קיטוב שעון (CKP), שלב השעון (CKE) ונקודת הדגימה (SMP).
  • (ב) [15] ,5 ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"ד: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

המונחים: quence

  1. המודול SPI (clear SSPEN).
  2. הגדר את מיכליות השעון הרצויה ואת שלב.FLT:0Moderea 0FLT 1:1 (CKP=0, CKE=1) הוא הנפוץ ביותר: נתונים מודגם על קצה העולה ומשתנים על קצה הנפילה.
  3. הגדר את שיעור הבאוד ב SPIxBRG. עבור 1 MHz עם שעון 16 MHz, SPIxBRG = 7.
  4. מצב מאסטר (SSPM bits= 0b0000 עבור מאסטר SPI, שעון = FOSC/4).
  5. הגדר את כיוון הס"ס. על רבים PICs, הסניפי הוא קלט ייעודי במצב מאסטר.עבור בחירת עבדים, עליך להזיז את סיכת GPIO נפרדת המחוברת ל- השבבים של העבד.
  6. ניתן לאפשר את המודול.

דוגמה: בין היתר מול ערוץ MCP3008

MCP3008 הוא ADC 10 סיביות שמתקשר דרך SPI במצב 0. כדי לקרוא ערוץ (למשל ערוץ 0), המאסטר שולח שלושה ע"י: קצת התחלה, מעט בעל שם יחיד / קצת אדיש, וכתובת הערוץ.העבד מחזירה בו זמנית שני נתונים על ידי tes.

[ה] [ה]] [ה][דרוש מקור]] [ה]] [ה]]] [ה]]]][ה]]][ה]]]][ה]]]][ה]]]]][ה'[ה]]]] ב[[1924]], וב[[1924]], [[1924]],]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]], [[1924]]]]]]]]]], [[1924]], [[1924]], [[1924]]]]]]]]]], [[1924]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]

שימו לב שכל כתיבה ל- SPIxBUF גורמת למקבל בו-זמנית, עליכם לקרוא את ה-buffer לאחר שכל אחד מהם כותב כדי להימנע מזרימה.

ניהול מספר רב של עבדים

כל עבד דורש שבב ייחודי - שבב אלקטרוני שימוש GPIO אחד לעבד.לוודא שיש עיכוב קטן בין שינוי פין SS ומתחיל את השעון כדי לעמוד בדרישות זמן ההתקנה של העבד. ⁇ רבים מאפשרים לך להשתמש בציון ה-SS החומרה עבור הדור אוטומטי של עבדים אוטומטיים רק במצב עבדים; במצב מאסטר אתה חייב לעשות זאת באופן ידני.

דיון על I2C ו- SPI תקשורת

כאשר הדברים לא עובדים, בצעו גישה שיטתית:

  • (FLT:0) השתמש מנתח לוגיקה או או אוקטילוסקופים.FLT:1 זהו הכלי היחיד היעיל ביותר לפענוח.בדוק כי השעון הוא נוכח, שינויים בנתונים מתרחשים, וכתובות נכונות.
  • (ב) אם SDA או SCL נשארים נמוך, ייתכן שיש לך מכשיר המחזיק את האוטובוס.
  • (ב) ויקרא י"א): "ה', ה' יברך את אות השעון עם היקף.
  • כתובת Active>Examine והוראות. טעות נפוצה היא לשלוח כתובת 7 סיביות ללא שינוי שמאלה על ידי אחד (ה-R / W bit הולך ב LSB) לזכור כי הכתובת היא (כתובת 1) | R/W.
  • (FLT:0) עבור SPI, לבדוק את קוטבי השעון ואת שלב.FLT ( 1:1 עבדים רבים רגישים למצב המדויק.התייעצות עם גליון הנתונים של העבד.בנוסף, להבטיח כי קו השבבים פעיל נמוך ומניע בהתאם.

אם חומרה debugging מגלה את הגלפורים הנכונים, הבעיה עשויה להיות בקושחה שלך. השתמש בדלפק LEDs או קונסולה סדרתית כדי להדפיס רשומות סטטוס. לוחות פיתוח PIC רבים כוללים מתכנת / debugger (למשל, MPLAB PICkit 4) שיכול לעזור לך לעבור דרך הקוד.

תוכנה Bit-Banging כגיבוי

אם חומרת החומרה אינה זמינה או אם אתה חייב להשתמש PIC שחסר MSSP, אתה יכול ליישם I2C או SPI בתוכנה באמצעות גלימות GPIO. עבור I2C bit מפץing, אתה לggle SDA ו SCL ישירות, מכבד עיכובים תזמון.עבור SPI, אתה עובר סיביות דרך GPIO ובו זמנית לקרוא את ה- biting הוא גמיש אבל הוא גם ברמה נמוכה יותר.

נושאים מתקדמים

I2C Multi-Master ו-Time Speed Tuning

כאשר מאסטרים מרובים חולקים את האוטובוס, עליך להתמודד עם בוררות בזהירות. MSSP ב PIC תומך במצב רב-מאסטר; הוא לפקח על האוטובוס ויחזור שליטה אם עוד מאסטר שולח נתונים. השתמש בהתנגשות האוטובוס (BCLIF) כדי לזהות אובדן של בוררות וחזור לאחר עיכוב אקראי.

(למשל, 400 kHz) מאפשר שליטה סלורית על לוחות הפלט (אם זמין) ולהשתמש בהתנגדות חזקה יותר (למשל, 2.2 k ⁇ ) לחלק מה- PICs יש חובה (FLT:0SSPxADDFLT:1 שניתן להגדיר ערכים קטנים יותר מאשר אפס על ידי שימוש בסולם.

ספאני דייזי - צ'ייפינג ודמה

חלק מהמכשירים SPI תומכים ב- daisy-chaining, שבו תפוקת הנתונים (MISO) של מכשיר אחד מזין את הקלט (MOSI) של הבא.זה מאפשר לעבדים מרובים עם קו בודד של שבב אלקטרוני.MSSP יכול להתמודד עם daisy-chaining אם המכשירים תומכים בו.

עבור במהירות גבוהה SPI, לשקול באמצעות הבקר הישיר של PIC של גישה זיכרון ישיר (DMA) בקר (זמין על הרבה יותר חדש PICs) DMA יכול להעביר נתונים ל / מן ה- SPI buffer ללא התערבות CPU, שחרור הליבה עבור משימות אחרות.DMA פריפריה מוגדרת עם מקור, יעד, ספירה, ולאחר מכן מופעל על ידי ה- SPI להפריע.

מסקנה

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

(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇