Skocz do zawartości

Prośba o wyjaśnienie zasady działąnia komunikacji na I2C bez masre-ra.


vtor

Pomocna odpowiedź

Na stronie ,w części " Communicating with other devices", omówiony jest przykład komunikacji po I2C. W sposobie tym każde urządzenie (mikrokontroler) ma przypisany adres, żaden nie jest zdefiniowany w trybie Master. Odbieranie transmitowanych do mikrokontrolera obsługiwane jest przez

Wire.onReceive (receiveEvent);

a wysyłanie przez

Wire.beginTransmission (SLAVE_ADDRESS);
Wire.write (x);
Wire.endTransmission ();

Testowałem tą metodę i wiem że działa i to z więcej niż dwoma mirokontrolerami.  Wytłumaczcie mi proszę na jakiej zasadzie ten sposób działa. Istotą I2C jest to że musi być Master, tutaj wygląda to tak jakby go nie było. Czy wszystkie mikrokontrolery w tym przypadku działają jak Master choć są deklarowane jako Slave?

Link do komentarza
Share on other sites

56 minut temu, vtor napisał:

tutaj wygląda to tak jakby go nie było

Nie rozumiem skąd wyciągasz taki wniosek. Przecież pokazana sekwencja wysyłania składa się z trzech kanonicznych wywołań:

  1. beginTransmission - która powoduje wygenerowanie zdarzenia START i wysłanie bajtu adresu urządzenia SLAVE,
  2. write - wysłanie bajtu danych,
  3. endTransmission - wygenerownaie zdarzenia STOP i tym samym zakończenie ramki I2C.

To przecież typowe działane urządzenia MASTER. Co trzeba jeszcze wg Ciebie zrobić, by móc się tak nazwać?

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.