I2C Arduino - Kontrola chýb spojenia

Page

Stránky / Zbernice / I2C /

Doteraz sme sa veľmi netrápili nad tým, či sa prenos podaril alebo nie. Ale v reálnom svete kadečo môže prestať fungovať. V tejto kapitole budeme skúmať, ako rieši výpadky spojenia knižnica Wire, ktorú používane v Arduine na I2C komunikáciu.

Schéma

Základom je zapojiť Arduina podľa nasledovného obrázku. Treba prepojiť na oboch Arduinach SDA na pine A4 a SLC na pine A5. Obe linky treba pomocou pull-up rezistora prepojiť na +5 V. Okrem toho sa prepojí napájanie a GND.

Keďže ale budeme predpokladať, že sa s tým budete hrať na počítači a oba Arduina máte napojené cez USB, nie je potrebné napájanie a GND spájať, pretože sú už takto prepojené krížom cez PC. Okrem toho ich v takomto prípade asi prepojíte cez USB šnúru, ktorú si kupujeme k Arduinu a teda oba Arduina budú blízko pri sebe.

Počas experimentov môžete vynechať aj oba pull-up rezistory, pretože knižnica, ktorú používame v Arduine používa interné pull-up rezistory v Arduine, ktoré na túto komunikáciu stačia. To ale používajte iba počas experimentov. V reálnom nasadení použite vždy externé pull-up rezistory s hodnotami 10k alebo 4k7.

Príklad je v priloženom súbore. Obe Arduina vypisujú svoje kontrolné výpisy. Na slave je pomocou cyklu a niekoľkých nop inštrukcií assembleru vytvorený interval o dĺžke približne 3 sekundy, počas ktorého je zakázané prerušenie. Master odosiela každú sekundu, takže môžeme skúmať, čo sa bude diať.

  • Reset na slave - Stlačte reset na slave Arduine a pozorujte výpis na master. Budete vidieť, že odosielanie sa končí chybou a vypíše sa aj kód chyby. V zdrojových textoch knižnice Wire si môžete pozrieť, čo jednotlivé čísla znamenajú.
  • Zakázané prerušenie na slave - Zjednodušene možno povedať, že počas zákazu prerušenia celá komunikácia zastane a po jej obnovení sa pokračuje v prenosoch. Žiadne údaje sa nestratia Master trpezlivo čaká, kedy sa prenos preruší a počas toho času nič nerobí. Má to svoje plusy aj mínusy. Pre programátora je to jednoduché v tom, že nemusíte nič ošetrovať, pretože po obnovení komunikácie dobehne všetko podľa pôvodného plánu. Na druhej strane ale vytuhnutie slave zastaví aj mastra. Takže aj zastane jeden, a spojenie je v poriadku, zastane aj druhý.
  • Vytiahnutie SDA alebo SLC - Správanie je rovnaké ako pri resete. Master detekuje chybu prenosu.


Download

01.09.2015


Menu