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.

Komunikacja AVR-ów - USART?

qrcze 19 Maj 2006 15:11 2798 12
  • #1 19 Maj 2006 15:11
    qrcze
    Poziom 10  

    Witam,
    Zastanawiam się, jak zrealizować komunikację o takim schemacie:

    PC (RS232) <-> Atmega16 <-> 3x Attiny2313

    USART? Ale czy nie będzie problemu z obsługą 3 urządzeń przez Megę? Zależy mi na małych opóźnieniach w komunikacji Mega <-> 3xtiny, a nigdy nie programowałem czegoś takiego.

    Pozdrawiam.

    0 12
  • #2 19 Maj 2006 16:39
    zolciak
    Poziom 14  

    Moduł USI umożliwia prowadzenie transmisji poprzez interfejsy szeregowe I2C lub SPI. I to bedzie najlepsze rozwiazanie Mega16(I2C)<->Tiny(USI). Resztę pdf'ka Ci powie.

    Dodano po 8 [minuty]:

    a opóźnienia można zminimalizować robiąc komunikacje na przerwaniach o tych modułów.

    0
  • #3 19 Maj 2006 17:10
    august_a
    Poziom 21  

    Najlepiej tak:
    Polecam ATmega128.

    - komunikacja mega128 z PC przez UART1 po RS232

    - Komunikacja pomiędzy innymi uC przez UART2 po RS485(daleka transisja + stabilność)

    Może i mega128 jest troche droga, ale warta swej ceny.
    Zrobiłem na niej komunikacje między PC oraz komunikację z 26 małymi układami wykonawczo zbiorczymi (ATtiny2313). układzik śmiga do dziś.

    0
  • #4 20 Maj 2006 08:35
    submariner
    Poziom 32  

    a moze zrobic to tak jak dorosle sieci token ring , spiete oczywiscie przez rs485 , pewno potrzebujesz niewielka czesc dznych wymieniac pomiedzy procesorami wiec taki niewielki tokem zawierajcy adres procesora i dane dla portu dosc szybko moze krazyc pomiedzy nimi .

    0
  • #5 20 Maj 2006 18:11
    marek_Łódź
    Poziom 36  

    Fizycznie to zależy od odległości. Jeśli procesory masz na jednej płytce najlepiej zastosować SPI lub I2C (wolniejsze). Jeśli system jest porozrzucany, faktycznie potrzebna jest jakaś większa sieć typu RS485 lub LIN sterowana z drugiego portu szeregowego. Możliwe jest także obudowanie złącza SPI układami nadajników/odbiorników i transfer synchroniczny na większych dystansach, ale wymaga to rozbudowy sprzętu (przy pewnych zyskach w przepustowości kanału).

    0
  • #6 20 Maj 2006 18:53
    upanie
    Poziom 21  

    Czy te atiny mają spontanicznie wysyłać komunikaty?
    Jak nie to popieram SPI, jak tak to nie:D
    Wtedy to jakiś RS z tokenem albo 3 RS-y (mało prawdopodobne).

    upanie

    0
  • #7 20 Maj 2006 19:07
    marek_Łódź
    Poziom 36  

    Ja bym się raczej upierał przy SPI i pozostawieniu MASTERa w dużym procesorze. W tak prostej konfiguracji znacznie prościej sekwencyjnie odsłuchiwać wszystkie trzy procesory, jak kombinować z transferem tokenu. Zresztą w takim układzie mamy lub możemy mieć TOKEN SPRZĘTOWY, w postaci linii zezwolenia na transmisję czy wyboru SLAVEa (SS).

    0
  • #8 20 Maj 2006 20:35
    upanie
    Poziom 21  

    Jasne, ja też jestem za SPI, ale niech się wypowie qrcze w końcu to jego temat ;) może ma jakieś ograniczenia konstrukcyjne.

    upanie

    0
  • #9 21 Maj 2006 17:58
    qrcze
    Poziom 10  

    Dzięki za wszystkie odpowiedzi.
    Odległości miedzy megą a tiny'ami to 2-3 metry, jednak jak się okazuje może trzeba będzie podłączyć ich więcej niż 3 (do 10). Mega musi wysyłać kilkadziesiąt do kilkuset b. krótkich poleceń (max. 20 bajtów) do tinów na sekundę. Następnie tiny zajmuje się wykonywaniem poleceń i po zakończeniu wysyła krótki raport do megi. Istotne jest to, że w danej chwili może pracować tylko jeden attiny, więc o kolizjach nie ma mowy.
    Jakoś tak to wygląda:

    while(1)
    for(tiny = 1; tiny < ile_tinych; tiny++){
    poślij_polecenie_do(tiny);
    czekaj_na_raport_od(tiny);
    odczytaj_raport_od(tiny);
    (...)
    }

    SPI powiadacie? No to czytam pdfa i coś spróbuję poskładać.

    0
  • #10 21 Maj 2006 18:07
    submariner
    Poziom 32  

    jesli nie jest to labolatorium to zastosuj rs 485 szczegolnie w warunkach przemyslowych , w obrebie obudowy to mozna cos uproscic ale przy tych odleglosciach to juz nie ma zartow i dalej stoje przy sieci token ring ktora latwo zrealizowac na rs485 sa do tego przystosowane.Poza tym nie bedziesz mial ograniczen przy dalszej rozbudowie .

    0
  • #11 21 Maj 2006 19:37
    upanie
    Poziom 21  

    SPI odpada. To jest dobry interfejs ale na kilkanaście centymetrów. ;)
    RS485 jest dobry bo odprony na zakłócenia. Token jest zbędny bo tylko master inicjuje wymianę danych. Wystarczy adresować atiny i problem z głowy.

    upanie

    0
  • #12 21 Maj 2006 22:13
    marek_Łódź
    Poziom 36  

    submariner napisał:
    sieci token ring ktora latwo zrealizowac na rs485 sa do tego przystosowane
    w jaki sposób rs485 jest przystosowane do implementacji token ringu :?:

    0
  • #13 22 Maj 2006 00:24
    submariner
    Poziom 32  

    Marek do pracy w sieci - magistrali a po niej moze byc przesylany token , mam nadzieje ze tym razem wyrazilem sie precyzyjnie :)
    Moze na takie odleglosci wystarczy odpowiednik I2C - 2 wire mode ?

    0