Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega16 - MAX232 - Dwa mikrokontrolery

David.C 07 Sty 2015 13:21 561 3
  • #1 07 Sty 2015 13:21
    David.C
    Poziom 9  

    Witam
    Mam pewien problem z komunikacją RS232 PC <-> Atmega16. Otóż zależy mi na tym, aby komputer mógł komunikować się z dwoma mikrokontrolerami, ale traktując je jako jedno urządzenie tzn. sygnał wychodzący z komputera wysyłany jest do obu uC taki sam. Chodzi po prostu o to, żeby mikrokontrolery otrzymywał takie same informacje.

    Zastanawiam się czy nie zadziała to, gdy po prostu z jednego wyjścia z MAX232 pociągnę połączenie do dwóch mikrokontrolerów. MAX232 posiada dwa wyjścia i zastanawiam się, czy to nie jest to czego szukam. Z jednego wyjścia połączenie do uC1, a z drugiego do uC2.

    Czy macie może jakieś pomysły na to? Wałkuję już temat kilka dni bez większych rezultatów.

    0 3
  • #2 07 Sty 2015 13:55
    BlueDraco
    Specjalista - Mikrokontrolery

    Jeśli transmisja jest w jednym kierunku, to po prostu połącz wejścia RXD obu uC z jednym wyjściem MAX232. Nieco trudniej byłoby z transmisją w drugą stronę z obu uC - potrzebowałbyś odpowiedniej inteligencji oprogramowania obu uC i np. bramki diodowej.

    0
  • #3 07 Sty 2015 14:02
    David.C
    Poziom 9  

    Zależałoby mi na komunikacji w dwie strony. Może problem rozwiazać w ten sposób, że uC1 byłby traktowany jako kontroler główny i miałby komunikację dwustronną z PC, a uC2 wysyłałby informacje tylko do uC1.

    Założenie jest takie:
    - PC wysyła informacje do obu uC1
    - w sterowniku musi być podłączony min. 1 mikrokontroler, 2 jest opcjonalny
    - przy uruchomieniu programu na PC wysłane jest do sterownika zapytanie "ile uC jest podłączone"
    - mikrokontrolery wysyłają informację o "swojej obecności"

    W przyszłości chciałbym to rozszerzyć o dodatkowe 2 mikrokontrolery, czyli będą w sumie 4.

    Chodzi tylko o to żeby program wiedział ile mikrokontrolerow jest podłączonych. Jeżeli nie da się tego jakoś łatwo zrobić to sobie odpuszczę i zrobię tylko komunikację jednostronną.

    0
  • Pomocny post
    #4 07 Sty 2015 14:34
    BlueDraco
    Specjalista - Mikrokontrolery

    Łatwiej zrobić adresowanie mikrokontrolerów - każdy odpowiada tylko na polecenie skierowane do niego. Wtedy linie TXD łączysz po prostu przez bramkę diodową (tyle diod, ile uC i wspólna anoda diod przez rezystor do plusa zasilania).
    Inne rozwiązanie, które często stosuję - to pierścień. Polecenie leci przez wszystkie uC kolejno, wyjście TX każdego uC jest połączone z wejściem RX następnego. Wtedy nie musisz jawnie nadawać adresów, wystarczy sprytnie zaprojektować protokół, np. na początku paczki leci adres, uC retransmituje każdą paczkę z adresem umniejszonym o 1, a ten, który dostanie adres 0, wypełnia paczkę swoją odpowiedzią.

    0