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 2 mikrokontrolerów

ewsd75 14 Lip 2006 18:04 3020 17
  • #1 14 Lip 2006 18:04
    ewsd75
    Poziom 12  

    :?:Witam jestem tu nowym a zarazem początkującym w dziedzinie mikrokontrolerów. Chcę połączyć trzy mikrokontrolery ze sobą aby mikrokontroler A - dokonywał pomiaru temperatury B - dokonywał pomiaru ciśnienia C - mikrokontroler główny otrzymywał dane z dwóch wcześniej wymienionych procków i wysyłał je do kompa i na wyświetlacz. Mikrokontrolery A i B będą to Atmega 8 a C to Atmega 8535. Szczerze nie wiem jak to rozwiązać czy po I2C czy po SPI a może jeszcze inaczej. Który ze sposobów jest lepszy i prostrzy? Połączenie do kompa i na wyświetlacz nie stanowi więszego problemu tylko jak połączyć te mikrokontrolery najlepiej ze sobą. Wiem że te funkcje( pomiary ) może wykonać jeden mikrokontroler ale musze wykonać takie robicie ze względu na możliwość wyciągania poszczególnych kart. Pisze programy w Bascom.:?:

    0 17
  • Pomocny post
    #2 14 Lip 2006 19:25
    marek_Łódź
    Poziom 36  

    A nie masz na górze ekranu opcji "Szukaj"?

    Jeśli moduły znajdują się obok siebie (wspólna kaseta, obudowa itp..) można je połączyć przez I2C lub SPI (nie ISP :!: ).
    Można też połączyć razem linie UART wszystkich procesorów w jednym punkcie (nadajniki i odbiorniki) tworząc minisieć.

    W przypadku większych odległości (kilka metrów i więcej) najlepiej zastosować interfejs RS485 ewentualnie inny dostosowany do pracy w lokalnej sieci pomiarowej lub sterującej (LIN, CAN itp.)

    0
  • #3 14 Lip 2006 19:31
    ewsd75
    Poziom 12  

    Na płysie głównej będzie mikrokontroler C i gniazda kart z mikrokontrolerami A i B. Twoim zdaniem który z interfejsów będzie lepszy SPI czy I2C.

    0
  • Pomocny post
    #4 14 Lip 2006 21:32
    Zaquadnik
    Poziom 27  

    Można zrobić SPI w trybie master - slave, gdzie na przykład uC "C" będzie jako master, pozostałe jako slave i uC master będzie wybierał z którym uC będzie się komunikował. Można też zastosować topologię pętli, wyjście uC "A" łączys zz wejściem "B", a wyjście "B" z wejściem "C", natomiast wyjście "C" z wejściem "A". Tylko znów jeden układ musisz ustalić jako master, żeby był źródłem sygnału zegarowego i wymyślić jakiś fajny protokół transmisji ;)
    Pozdrawiam :)

    0
  • Pomocny post
    #5 14 Lip 2006 22:20
    matgaw
    Poziom 15  

    Przy I2C masz 2 linie danych do każdego procka, przy SPI - 4 (MOSI, MISO, SCK, CS). SPI jest szybsze. Sam sobie wybierz :)

    0
  • Pomocny post
    #6 14 Lip 2006 22:40
    Samuraj
    Poziom 35  

    Tylko jak się zdecydujesz to musisz oprogramować I2C w trybie Slave. A to juz nie wiem czy w Bascomie takie proste.
    Nie znam Bascoma ale z tego co się orientuje standardowe komendy dotyczą I2C w trybie Master.
    W sumie I2C będzie łatwiejsze z technicznego punktu widzenia, no i bardziej przyszłościowe np jak zrobisz kolejny moduł.
    Tylko musisz pamiętać aby dla każdego ustawić inny adres.
    Wtedy po stronie głównego procesora pozostaje tylko czytać dane z odpowiednich płytek.

    0
  • Pomocny post
    #7 15 Lip 2006 00:24
    M. S.
    Poziom 34  

    Bascom posiada bibliotekę I2C slave. Jest płatna, lecz jeśli na forum dobrze poszukać...

    0
  • #8 15 Lip 2006 09:13
    ewsd75
    Poziom 12  

    Witam ponownie. Dziekuję wszystkim za udzielone rady. Poczytałem co w HELPIE do Bascoma jest opisane o SPI, i zdecydowałem się na magistralę komunikacyjną SPI może i nie jest to zbyt nowoczesne podejście tak jak proponował jeden z Kolegów aby podłączyć wszystko na I2C ale po przeanalizowaniu schematu i zasady działania z waszymi uwagami bardziej przydatna będzie magistrala SPI. Jeszcze raz dziekuję za pomoc.

    0
  • Pomocny post
    #9 15 Lip 2006 11:24
    pubus
    Poziom 30  

    Prostrzy będzie SPI bo mega ma sprzętowy...
    I2C można zrobić na sprzętowym TWI ale jest znacznie więcej zabawy...

    0
  • #10 15 Lip 2006 12:52
    ewsd75
    Poziom 12  

    Zaquadnik - witaj. Zaproponowałeś aby połączyć mikrokontrolery w pętlę. Czy to będzie działało? Sprawdzałeś to? Nie wiedziałem że tak mogą pracować mikrokontrolery. Zawsze byłem przekonany że musi być jakaś magistrala czy to SPI czi I2C albo klasyczna 8 bitowa i szyna adresowa tak jak są podłączone pamięci RAM w systemie. Pomijam tu RS232 i RS484. Pierwszy raz się spotkałem z takim połączeniem mikrokontrolerów. Czy się sprawdza takie rozwiązanie w praktyce?

    0
  • #11 15 Lip 2006 13:18
    McRancor
    VIP Zasłużony dla elektroda

    Nie warto pakować się w takie rozwiązanie, więcej zachodu niż pożytku, podłączasz linie SPI i dwie linie slave slect, którymi określasz z którym mikrokontrolerem aktualnie chcesz gadać.

    0
  • #12 15 Lip 2006 13:29
    ewsd75
    Poziom 12  

    Też mi się to wydało dziwne połączenie mikrokontrolerów. Wprawdzie można zbutować pierścień na I2C i podłłaczyć tam różne układziki , zegary, mikrokontrolery. Ale wolę zapytać czy takie połączenie jest możliwe. Bo z mojego punktu widzenia raczej jest to niepraktyczne. Gdy uszkodzeniu ulegnie jeden procek to reszta systemu też nie będzie działać. Przy "szeregowym podłąłczeniu" jest to bardzo zawodny sposób pod warunkiem że istnieje taka możliwość komunikacji.

    Dodano po 57 [sekundy]:

    Też mi się to wydało dziwne połączenie mikrokontrolerów. Wprawdzie można zbutować pierścień na I2C i podłłaczyć tam różne układziki , zegary, mikrokontrolery. Ale wolę zapytać czy takie połączenie jest możliwe. Bo z mojego punktu widzenia raczej jest to niepraktyczne. Gdy uszkodzeniu ulegnie jeden procek to reszta systemu też nie będzie działać. Przy "szeregowym podłąłczeniu" jest to bardzo zawodny sposób pod warunkiem że istnieje taka możliwość komunikacji.

    0
  • #13 15 Lip 2006 20:10
    Jj_Johnys
    Poziom 21  

    Jakie szeregowe połączenie? Urządzenia na I2C łączy się równolegle!!! Jest to w ogóle fajna sprawa. SPI pewnie lepsze ale nie miałem jeszcze potrzeby wykorzystania go.

    Nigdy też nie uskodził mi się żaden z układów podłączonych do I2C ale moim zdaniem awaria takiego układu NIE MOŻE wpłynąć na pracę całej reszty. Po prostu dany układ nie będzie odpowiadał i tyle. Protokół I2C (czy TWI w AVRach) na coś takiego jak kody błędów. Jeśli padnie jakieś urządzenie MASTER się o tym dowiaduje i może nawet powiadomić użytkownika, np. na LCD.

    0
  • #14 24 Lip 2006 13:48
    ewsd75
    Poziom 12  

    Witam uruchomiłem połąłczenie między prockami na SPI MASTER I SLAVE. ATMEGA 8535 - Master ATMEGA 8 - Slave. Jeśli ktoś chce programy do obsługi to proszę o info. Teraz będę łączył trzeciego proca jak azdziała to podzielę się informacjami. Dziękuję wszystkin za pomoc i wymianę informacji w temacie komunikacji.

    Dodano po 41 [sekundy]:

    Witam uruchomiłem połąłczenie między prockami na SPI MASTER I SLAVE. ATMEGA 8535 - Master ATMEGA 8 - Slave. Jeśli ktoś chce programy do obsługi to proszę o info. Teraz będę łączył trzeciego proca jak azdziała to podzielę się informacjami. Dziękuję wszystkin za pomoc i wymianę informacji w temacie komunikacji.

    Dodano po 9 [sekundy]:

    Witam uruchomiłem połąłczenie między prockami na SPI MASTER I SLAVE. ATMEGA 8535 - Master ATMEGA 8 - Slave. Jeśli ktoś chce programy do obsługi to proszę o info. Teraz będę łączył trzeciego proca jak azdziała to podzielę się informacjami. Dziękuję wszystkin za pomoc i wymianę informacji w temacie komunikacji.

    0
  • #15 25 Lip 2006 20:37
    12811
    Użytkownik usunął konto  
  • #16 25 Lip 2006 20:49
    ewsd75
    Poziom 12  

    Wiem że by dało radę na 1 procku. Ale zestaw musi się składać z płyty głównej i kart wpinanych w odpowiednie gniazda. Każda karta to inny rodzaj czujnika. Do tego ma być kontrola napięcia , kontrola zaniku napięcia sieci , załanczanie napięcia z akumulatora, no i komunikacja z PC. Informacja o błędach w systemie ładowanie baterii podtrzymującej pamięć i zegar RTC, Jest to dość złożony projekt. Takie są założenia projektu.

    0
  • #17 25 Lip 2006 21:02
    12811
    Użytkownik usunął konto  
  • #18 26 Lip 2006 13:15
    ewsd75
    Poziom 12  

    Witam pisałem że mam programy do SPI. Postanowiłem zamieścić te skrypty na forum. Są to programy w Bascom. Skrypty są napisane w celu tesowania połączenie na SPI. Nie wysyłam tam jakiś skąplikowanych danych. Dopiero będę pisał całe procedury do transmisji danych.Jeśli ktoś chce sobie potestować to myślę że się to przyda.

    0