Komunikacja między mikrokontrolerami AVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Manolo
-
Posty: 17
Rejestracja: 09 lis 2006, 22:30
Lokalizacja: Poznań

Komunikacja między mikrokontrolerami AVR

Post autor: Manolo » 10 lis 2006, 19:32

Witam,

Jak w temecie chciałem się dowiedzieć w jaki sposób można zrealizować komunikację między dwoma lub więcej mikrokontrolerami z rodziny AVR np. ATmega32 w Bascom-AVR. Dodam, że chce wiedzieć wszystko :D, a narazie nie wiem nic :D no może domyślam się że da się to zrealizować na I2C, ale to tylko domysły, tak wiec proszę o pomoc. Thx

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 10 lis 2006, 21:51

Czy po raz kolejny ktoś próbuje wyważać otwarte drzwi? Co celów komunikacyjnych już dawno wymyślono transmisję szeregową i należy jej używać.

ZbeeGin

Post autor: ZbeeGin » 10 lis 2006, 22:29

Najlepszym rozwiązaniem jest użycie SPI. Można tam dane przesłać, wymienić (przy dwustronnej trasmisji - nie przełanczając się wcale pomiędzy nadawaniem a odbieraniem) lub też odebrać. Można stworzyć sieć - w architekturze gwiazdy - z jednym procesorem Maste i wieloma Slave.

Help w dłoń i czytać: SPIIN(), SPIOUT, SPIMOVE, SPIINIT, CONFIG SPI. Oraz temat ogólny: Interfejs SPI (SPI Interface w angielskiej wersji).

Manolo
-
Posty: 17
Rejestracja: 09 lis 2006, 22:30
Lokalizacja: Poznań

Post autor: Manolo » 11 lis 2006, 22:06

Dziękuję bardzo :) szukałem na forum komunikacji miedzy mikrokontrolerami jednak niestety nie mogłem znaleźć, ponieważ nie wiedziałem, że służy do tego SPI :). Skoro jest już ten temat na forum to może ktoś byłby w stanie polecić jakieś dobre książki z tym związane?

ZbeeGin

Post autor: ZbeeGin » 12 lis 2006, 11:03

Manolo pisze:Skoro jest już ten temat na forum to może ktoś byłby w stanie polecić jakieś dobre książki z tym związane?
:arrow: http://www.btc.pl/?id_prod=6459

Manolo
-
Posty: 17
Rejestracja: 09 lis 2006, 22:30
Lokalizacja: Poznań

Post autor: Manolo » 14 lis 2006, 14:58

Czy są jakieś ograniczenia co do odległości między tymi mikrokontrolerami? czy np. 50m to za dużo??

ZbeeGin

Post autor: ZbeeGin » 14 lis 2006, 18:57

Przy SPI to 1m będzie nawet za dużo. SPI służy raczej jako magistrala wewnętrzna, coś jakby I2C tylko bardziej złożona i szybsza. Nie ma problemu by połączyć dwa układy w ramach jednego urządzenia, ale 50m to już ogromna odległość.

Na 50m musiałbyś skorzystać z układu UART i zaimplemetować w "warstwie fizycznej" łącze RS422 lub RS485 (połączenia za pomocą skrętki).

O stanadardach łącza poczytasz nieco na stronie: http://www.softel.pl/rs/ lub http://www.rs485.com/rs485spec.html

Manolo
-
Posty: 17
Rejestracja: 09 lis 2006, 22:30
Lokalizacja: Poznań

Post autor: Manolo » 16 lis 2006, 1:26

Jak wygląda komunikacja przy interfejsie rs-485 i trybie wieloprocesorowym w układzie UART, gdy jest jeden Master i wiele Slave, a dane chcą ze sobą wymienić dwa Slave?

ZbeeGin

Post autor: ZbeeGin » 16 lis 2006, 18:43

Należy w tym celu przesłać dane przez układ MASTER. Albo porządek: master nadaje, slave odbiera, slave nadaje tylko jak master chce; albo wolna amerykanka na magistrali i konflikty transmisji. :(

Manolo
-
Posty: 17
Rejestracja: 09 lis 2006, 22:30
Lokalizacja: Poznań

Post autor: Manolo » 16 lis 2006, 21:28

Hmm czyli rozumiem, że jeżeli chciałbym przesłać coś bez konfliktów, z slave0 do slave1 to slave0 musiałby zgłosić chęć do nadawania, master pozwolić na przesłanie do siebie informacji w której slave0 musiałby zawrzeć adres slave1 oraz jakies informacje, że nadawana informacja ma być przekazana po odebraniu przez master do slave1. Rozumiem ze te procedury trzeba już samemu wyczarować programowo??

piotruś
-
Posty: 22
Rejestracja: 05 gru 2005, 23:44
Lokalizacja: Białystok
Kontakt:

Post autor: piotruś » 17 lis 2006, 14:46

Na https://elportal.pl/dom znajdziesz trochę informacji nt komunikacji wieloprocesorowej z wykorzystaniem RS485. Jeżeli wymagasz komunikacji między dwoma układami w dużej sieci, bez uzycia nadrzędnego układu Master, to zastosuj magistralę CAN.

piotruś

ODPOWIEDZ