Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Fibaro Fibaro
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Komunikacja miedzy dwoma układami uC - AVR

gothye 23 Paź 2007 20:59 8914 23
  • #1 23 Paź 2007 20:59
    gothye
    Poziom 33  

    Jak zrealizować komunikacje miedzy dwoma uC AVR dodam zę :

    1.rs232,rs485 odpada
    2.ISP równiez
    3.czy połączyć mozna 2 x atmega8 połączyc za pomoca szyny SDA,SCL ?

    Cel :

    składam sobie małą centralke do domku i przy wejsciu chcę umiesic "manipulator" aby zaraz po wejsciu do domu wpisac kod i rozbroic alarm na centrali która jest na strychu ,docelowo chcę miec 2 manipulatory (garaż ,dom ) wiec sądze ze muszą miec inne adresy na szynie ,proszę o wszelkie informacje

    Pozdrawiam Rafał

    0 23
  • Fibaro
  • Pomocny post
    #2 23 Paź 2007 21:23
    markosik20
    Poziom 33  

    Cytat:
    rs485 odpada


    Tylko że najlepiej by się do tego nadawał. Nie wiem jak masz daleko na strych ale I2C (SDA, SCL) może powodować błędy w transmisji, SPI piszesz że też nie, czytałem ze ktoś zrobił to na 1WIRE ale nie wiem na jakiej odległości. Poszytaj trochę o "inteligentnym domu" , było parę ciekawych tematów na elektrodzie.

    0
  • #3 23 Paź 2007 23:20
    mirekk36
    Poziom 42  

    dokładnie jak powiedział kolega powyżej...

    dołączam się do pytania - dlaczego odpada RS485 ?? skoro jest do tego idealnym rozwiązaniem, najmniej kłopotliwym i najmniej wrażliwym na zakłócenia....

    transmisja również dwu-przewodowa - można dać skrętkę a na dodatek jeszcze zasilanie nią rozprowadzić. Prostota obsługi transmisji RS232/485.

    0
  • #4 24 Paź 2007 08:35
    gothye
    Poziom 33  

    RS atmegi chciałem wykozystac do połaczenia centrali z serwerem na Linux ale podsunoł mi sie pomysł ..

    Połącze 2 atmegi przez SPI miedzy sobą ,pierwsza bedzie sie zajmować centralą druga rs485 ,co sądzicie o tym ?

    0
  • Fibaro
  • #5 24 Paź 2007 09:07
    markosik20
    Poziom 33  

    Ale wszystko razem może pracować na jednej magistrali RS485. Dla ułatwienia trzebaby tylko ustalić który moduł w sieci jest masterem i kieruje ruchem na magistrali. Takie rozwiązanie pozwala w przyszłości dopinać następnych uzytkowników sieci (np: jakieś czujniki). Nie pamiętam dokładnie ale na jednej magistrali może pracować kilkadziesiąt urządzeń. Takie rozwiązanie jest wykorzystywany m.in w magistralach MODBUS.

    0
  • Pomocny post
    #6 24 Paź 2007 09:38
    mirekk36
    Poziom 42  

    dzięki zastosowaniu tylko RS485 dla wszystkich procków, czujników oraz linuxa uzyskasz większą elastyczność systemu. Przy dobrym przemyśleniu komunikacji będziesz mógł np odczytywać stany czujników i układów poza centralą bezpośrednio przez program na linuxie itp itp

    aby takie rzeczy były możliwe warto zastosować np takie rozwiązanie gdzie będzie np w tej sieci jeden układ tzw główny MASTER, który będzie przydzielał czas innym masterom w sieci. Dzięki czemu i centralka będzie mogła mieć status Mastera u ciebie i linux. Specem w tym tu na elektrodzie jest m.inn kolega elektrofil jak zauważyłem - poszukaj jego postów i zobacz jak on to praktycznie i fajnie rozwiązuje.

    Ja jak do tej pory zrobiłem jedną taką wewn sieć na RS485 w domciu gdzie był jeden master i kilka układów slave, a komputer podłączony do sieci także miał status slave. Gdy otrzymywał swoje przysłowiowe 5min to program na PCcie pobierał swoje i miałem pełną wizualizację tego co się dzieje w scieci. Naprawdę szybko łatwo i przyjemnie się to robi nawet stosując własne i nierozbudowane protokoły wymiany danych

    pozdr

    0
  • Pomocny post
    #7 24 Paź 2007 14:02
    Dar.El
    Poziom 40  

    Witam
    ATmega162 i ATmega128 mają po dwa rs232, więc łatwo można je łączyć.

    0
  • #8 24 Paź 2007 14:14
    marek_Łódź
    Poziom 35  

    Dar.El napisał:
    Witam
    ATmega162 i ATmega128 mają po dwa rs232, więc łatwo można je łączyć.
    Niezależnie od tego, na dowolnych liniach IO możesz zrealizować RS programowo.

    0
  • #9 24 Paź 2007 17:42
    gothye
    Poziom 33  

    przyznam się ze pomysł z RS485 bardzo mi sie spodobał ,szukając po sieci znalazłem niewiele schematów :( może ktos polecic sprawdzony ??

    Pyt.1 Czy mogę sie kierować tym schematem ??
    Pyt.2 jak podłączyc do tego max232 aby była komunikacja miedzy PC a AVR ??

    0
  • Pomocny post
    #10 24 Paź 2007 18:31
    markosik20
    Poziom 33  

    Ad1. Jak najbardziej. Jezeli chcesz coś tańszego od MAX485 poczytaj o SN75176.

    Ad2. Wszystko jest w nocie katalogowej :wink:. MAX232 i MAX485 pracują równolegle patrząc od strony Atmegi (a więc TxD i RxD idą na MAX485 i MAX232). Żeby rozdzielić sygnały (coby RS232 i RS485 nie działały jednocześnie) można wykorzystać uC z dwoma portami szeregowymi, zrobić jeden programowo lub poprostu odłaczyć jeden z nich zwykłą bramką np: AND na czas kiedy dany interfejs jest nie wykorzystywany.
    Każde rozwiązanie (kiedy nie ma dwóch sprzętowych portów) wiażę się z dodatkowym odpowiednim oprogramowaniem w którym będzie uwzględniona charakterystyka działania obu interfejsów..

    0
  • #11 24 Paź 2007 19:13
    gothye
    Poziom 33  

    zalezało mi jak to podłaczyc (max485 i max232) poniewarz nigdy niestosowałem obu jednocześnie ani samego max485 ,niestawiam na cene ,po prostu chce aby dobrze działał alarm ,wiec zostanie na Max485 :)

    Pytanko małe co do samego sterowania Max485 a własciwie sterowanie jego ( Pin2 i Pin3 ) ba być stan niski ,ale cały czas czy tylko podczas transmisji ,czy mogę go połączyć na stałe do masy ?

    Dzieki !!!

    0
  • Pomocny post
    #12 24 Paź 2007 19:14
    mirekk36
    Poziom 42  

    a dodatkowo od strony kompa polecam ci taką fajną przejściówkę RS232-RS485 - dzięki czemu nie trzeba będzie jej w programie na PC jakoś specjalnie oprogramowywać pod kątem MAX485 lub SN75176 - poprostu działa się jak na zwykłym RS232. Ja taką przejścióweczkę sobie zrobiłem i na niej działam w tej mojej mini sieci RS485

    Komunikacja miedzy dwoma układami uC - AVR

    pin 2 i 3 służą do przestawiania scalaczka w tryb nadawania lub odbierania, dlatego łączy się je razem i jeśli podasz jeden stan to masz nadawanie ale wtedy blokujesz linię albo przeciwny stan i masz ustawiony na odbiór - wtedy nie blokujesz linii. Czyli nie możesz na stałe podłączyć do masy - trzeba wystawiać na niego odpowiedni stan albo wysoki albo niski w zależności od tego czy coś wysyłasz z procka czy tylko odbierasz - dlatego widzisz na tych schematch że do sterowania MAX485 wykorzystywana jest jeszcze jedna linia któregoś z portów procka i trzeba ją programowo obsługiwać - ale nie jest to takie trudne ;)

    .... a w tym schemacie co ci podałem przejściówka robi to automatycznie ale takie rozwiązanie nadaje się raczej tylko do PCta

    0
  • #13 24 Paź 2007 22:38
    gothye
    Poziom 33  

    dzieki !!!!

    Mam jeszcze małe pytanko z ciekawości ,oglądając po necie opisy central itp spotkałem sie z interfeisem prawdopodobnie I2C lecz niemam pewnosci ,gdzie komunikacja odbywa sie po szynie clock ,data (+U,Gnd) czy atmega jest w stanie cos takiego obłsużyć ??

    0
  • Fibaro
  • #14 24 Paź 2007 22:43
    mirekk36
    Poziom 42  

    Atmega8 i wyższe mają wbudowany sprzętowy interfejs TWI czyli spokojnie można obsłużyć także I2C. Tylko że I2C stosuje się na malutkie odległości.

    0
  • #15 02 Lis 2007 01:25
    ktrot
    Poziom 19  

    Tak z mojej praktyki. Stając przed koniecznością transmisji na kilkadziesiąt metrów zrealizowałem ją za pomocą układu, który na swój użytek nazwałem 'wzmocnione SPI'. Transmisja zrealizowana w układzie master-slave przy czym układów slave może być więcej. W master potrzebujemy linię zegara CLK, danych wyjściowych DO oraz tyle wejść ile jest układów slave DI1, DI2... Zegar CLK i DO podłączamy do bazy tranzystora BC54x, kolektor przez opornik ok 10k do 12V (w moim przypadku było 12V może być więcej) Sygnał z kolektora podajemy równolegle na wszystkie układy slave. Sygnał 12V nie jest problemem bo dioda clamp na wejściu AVR zredukuje to napięcie do Vcc a opornik kolektorowy 10k ograniczy prąd do ok 1mA. W przypadku linii DI analogiczny tranzystor montujemy w układzie slave. Ustawiamy bit DO i taktujemy CLK, na opadającym zboczu CLK slave'y odbierają poszczególne bity kompletując pakiet (może być bajt). To, który ze slave'ów zareaguje na transmisję zależy od zawartości pakietu. Transmisję zwrotną można realizować jednocześnie (tak jak to robi SPI) ale ja zdecydowałem się half duplex i tak, master po wysłaniu pakietu taktuje dalej odbierając pakiet danych (od którego slave'a odbiera to wie, bo wie do którego wysyłał, z resztą można w pakiecie zawrzeć adres slave'a). Dodam jeszcze, że w warunkach przemysłowych zmodyfikowałem ten układ dodając transoptory na wejściach układów i zmniejszyłem oporniki kolektorowe do 150ohm.
    Mam nadzieję, że opis jest wystarczająco jasny :-).

    0
  • #16 30 Lis 2007 18:07
    gothye
    Poziom 33  

    mirekk36 napisał:
    Atmega8 i wyższe mają wbudowany sprzętowy interfejs TWI czyli spokojnie można obsłużyć także I2C. Tylko że I2C stosuje się na malutkie odległości.


    w systemach alarmowych np.satel kozysta z I2C miedzy manipulatorem a centralą ,niejednokrotnie montowałem tego typu system ,odległość miedzy manipulatorem a centralą czasami była wiekrza niz 50 mb

    dlatego mnie bardzo ciekawi ,w jaki sposób im sie to udało

    0
  • #17 01 Gru 2007 17:35
    Nawigator
    Poziom 33  

    Wszystko zależy od częstotliwości zegara. Dla niskich można dodać pojemności i odfiltrować zakłócenia.
    Dlatego dyskusja jaka szyna nie ma sensu bez podania wymaganych szybkości transmisji i relacji między węzłami.
    Pzdr. N.

    0
  • #18 03 Gru 2007 18:46
    gothye
    Poziom 33  

    niedawno spotkałem sie interfeisem wiegand ,zna moze ktoś ? poszukuję wszelkich informacji (implementacja w C ,zasięg , uwagi)

    0
  • #20 10 Gru 2007 02:59
    Nawigator
    Poziom 33  

    To już lepszy jest CAN-BUS na jednym przewodzie a sterowniki do niego np. MCP2515 bardzo potaniały.
    Jako driver linii wystarczy jeden tranzystor z otwartym kolektorem a węzłow można podłączyć bez liku.
    Prosta hierarchia adresów i potwierdzenie odbioru ramki, prędkość dowolna.
    Pzdr. N.

    0
  • #21 10 Gru 2007 06:19
    avatar
    Poziom 35  

    Dar.El napisał:
    Witam
    ATmega162 i ATmega128 mają po dwa rs232, więc łatwo można je łączyć.

    Od kiedy to rs232 = uart ?
    Uart w megach napewno nie wytrzyma +- 13V

    0
  • #22 10 Gru 2007 13:47
    Nawigator
    Poziom 33  

    Na bliskie odległości może połączyć bezpośrednio z poziomem 0/5V oczywiście nie jest to pełny standard rs232. Dużo urządzeń tak działa np. niektóre laptopy. Ważny jest odstęp od zakłóceń.
    Pzdr. N.

    0
  • #23 10 Gru 2007 18:20
    gothye
    Poziom 33  

    avatar napisał:
    Dar.El napisał:
    Witam
    ATmega162 i ATmega128 mają po dwa rs232, więc łatwo można je łączyć.

    Od kiedy to rs232 = uart ?
    Uart w megach napewno nie wytrzyma +- 13V



    z noty atmegi wynika ze mozna stosować obydwa uarty do wysyłania/odbierania z rs232 wraz z max232 są generowane odpowiednie poziomy sygnału dla PC z tll

    0
  • #24 10 Gru 2007 21:33
    avatar
    Poziom 35  

    gothye napisał:
    avatar napisał:
    Dar.El napisał:
    Witam
    ATmega162 i ATmega128 mają po dwa rs232, więc łatwo można je łączyć.

    Od kiedy to rs232 = uart ?
    Uart w megach napewno nie wytrzyma +- 13V



    z noty atmegi wynika ze mozna stosować obydwa uarty do wysyłania/odbierania z rs232 wraz z max232 są generowane odpowiednie poziomy sygnału dla PC z tll

    Standard RS232 Jest Jeden i powstal w 1969r
    Uart w medze Tego standardu Nie spelnia
    Moim zdaniem twierdzenie ze uart = rs232 to najmniej Niefrasobliwosc



    Specyfikacja napięcia definiuje "1" logiczną jako napięcie -3V do -15V, zaś "0" to napięcie +3V do +15V. Poziom napięcia wyjściowego natomiast może przyjmować wartości -12V, -10V, +10V, +12V, zaś napięcie na dowolnym styku nie może być większe niż +25V i mniejsze niż -25V. Należy zaznaczyć przy tym, że zwarcie dwóch styków RS-232 teoretycznie nie powoduje jego uszkodzenia. W praktyce ten zapis w specyfikacji nie zawsze jest przestrzegany.


    ....
    idac twoim tokiem myslenia uart w medze to rowniez wifi ..bo wystarczy dac przejsciowke uart <> wifi
    Garnek zlota dla tego kto podlaczy Prawdziwe rs232 do wejscia ww megi i jej nie spali



    Elektronika sklada sie ze szczegolow na ktore trzba zwracac baczna uwage , bo jezeli nie to powstanie haos

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo