Skocz do zawartości

Równoległa praca dwóch mikrokontrolerów.


cesiek

Pomocna odpowiedź

Witam , mam pytanie do bardziej doświadczonych forumowiczów , czy możliwa jest równoległa praca dwóch mikrokontrolerów np. ATmega 8 lub Atmega 16 , tak aby współpracowały ze sobą w układzie i wymieniały dane ze sobą. Za odpowiedż z góry dziękuję i pozdrawiam.

Link do komentarza
Share on other sites

Nie do końca.

Zależy jaki protokół transmisji wybierzesz. Synchroniczny czy asynchroniczny.

Nawet w transmisji asynchronicznej wymagana jest synchronizacja transmisji.

Zwykle Master w transmisji synchronicznej generuje sygnał CLOCK.

W transmisji asynchronicznej synchronizacja następuje na początku transmisji,
kiedy master generuje pierwsze np. cztery bity synchronizacyjne.

W tym przypadku paczka danych musi być na tyle krótka, żeby nie doszło do

rozsynchronizowania urządzeń.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Komunikacja przez SPI. Należy jedynie pamiętać, aby podczas programowania slave'a resetpować mastera, aby nie przeszkadzał w programowaniu. Prędkości mogą być duże, tylko po co? i tak dużo czasu procesora zajmie interpretacja protokołu transmisji.

Link do komentarza
Share on other sites

Duża prędkośc to w tym wypadku ciekawostka, jednak przy użyciu rs'a o którym była mowa, brak rozbieżności w częstotliwościach znacznie zmniejsza ilośc błędów, sygnał taktujący i tak jest wspólny więc nie ma sensu dodatkowy sygnał od mastera, transmisja asynchroniczna jest w sumie synchroniczna, czyli rozwiązanie trochę bardziej efektywne.

Link do komentarza
Share on other sites

I tak potrzebujesz użyć sygnału taktującego jeśli chcesz korzystać z synchornicznego RSa (USART, z naciskiem na S), albo dać generator kwarcowy, który sporo kosztuje. Ewentualnie drugi uC taktować pierwszym, ale w takim wypadku masymalna częstotliwość taktowania jest połowę mniejsza (czyli np. jeden taktowany 16MHz, drugi 8MHz).

Link do komentarza
Share on other sites

Panowie jeśli jeden uC, będzie taktowany np. z generatora kwarcowego, czy z generatora RC lub wewnętrznego czy czegokolwiek innego, to dla atmegi88 zawsze można wyciągnąć ten sygnał na zewnątrz odpowiednim fusebitem " Clock output on PORTB0; [CKOUT=0]" i podpiąć do drugiego. Takim sposobem sam odblokowuje część źle zaprogramowanych fusebitów dla wyboru taktowania dla uC.

Komunikację można załatwić na wiele sposobów najprościej IMO USARTem w jakiejkolwiek postaci, najlepiej synchronicznym gdyż wymaga minimum przewodów, jeśli chcemy uzyskać maksimum poprawności transmisji to asynchroniczny z przelotem (hand-shake) .

Jeszcze można się komunikować za pomocą: SPI, 1-Wire, I2C, równolegle, co dusza zapragnie, własne protokoły też są tworzone.

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.