1wire a dwa mikroprocesory
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
1wire a dwa mikroprocesory
Możliwe jest połączenie dwóch mikroprocesorów AVR za pomocą magistrali 1wire? Chodzi mi konkretnie czy mozna tego dokonać za pomocą poleceń Bascomowych? Jeśli tak to jak nadać uP jakiś adres?
-
ZbeeGin
Niestety nie jest to możliwe. Aczkolwiek w przyszłości ktoś może napisze stosowną bibliotekę: 1wire-slave.lib.Skrzydlaty pisze:Chodzi mi konkretnie czy mozna tego dokonać za pomocą poleceń Bascomowych?
Mikroprocesory z poziomu BASCOM-a najłatwiej połączyć przez SPI (3 przewody sterujące + masa) lub przez USI (RS232, 2 przewody sterujące + masa) w trybie asynchronicznym. Możesz także skorzystać z PULSEOUT i PULSEIN, ale nie jest to metoda polecana.
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
- Sagittarius
- Użytkownik
- Posty: 130
- Rejestracja: 29 maja 2007, 9:29
- Lokalizacja: Kujawsko-pomorskie
- Kontakt:
Dla chcącego i upartego z pewnością nie będzie problemem napisanie obsługi 1Wire dla mikrokontrolera jako dla układu Slave. Myślę jednak, że to trzeba przeprowadzić juz w asemblerze, by osiągnąć dobre wyniki.
Co do połączenia mikrokontrolerów, możliwości jest kilka. Jedna z nich, to napisanie obsługi I2C Slave dla układu. SPI jest dobrym wyborem, ale ma też swoje wady. Używając tego interfejsu należy użyć dodatkowych wyprowadzeń, które będą wybierały adresata transmisji (w przypadku układu nadrzędnego). Jesli to są dwa układy, np uC i przetwornik a/c nie ma większego problemu, jeśli zaś będzie tego trochę, ilość potrzebnych wyprowadzeń może okazać się zbyt duża.
Komunikacja wieloprocesorowa prowadzona jest przy pomocy układów UART. Wiele układów ma zaszyty bloczek sprawdzający adres odbiorcy, co odciąża programistę i mikrokontroler od programowego czuwania nad nasłuchem interfejsu. W przypadku większych odległości między urządzeniami do komunikacji używany jest RS485. Jest to coś podobnego do UARTów, a właściwie to to samo, ale inna jest zasada transmisji od strony sprzętowej. W celu minimalizacji zakłóceń, przesyłana jest informacja w postaci napięcia różnicowego, a nie napięcia względem potencjału masy, jak w zwykłym RS232. Podobnie, jak w przypadku RS232 do konwersji danych na RS485 używany jest odpowiedni układ. Jeśli przesyłane są dane jedną skrętką (czyli parą przewodów), dodatkowo mikrokontroler musi zadbać o to, by poinstruować układ konwertera, czy dane są nadawane, czy odbierane. Do tego celu służą dwa lub jedno wejście sterowania transmisją. Producenci zadbali o to, by jeśli konwerter posiada osobne dwa wejścia dla wyboru nadawania/odbioru, każde z ich miało inny stan aktywny. Ta sztuczka pozwoli na sterowanie takim układem przy pomocy i tak jednego wyprowadzenia
Tu masz przykładowy układ pełniący rolę konwertera.
Co do połączenia mikrokontrolerów, możliwości jest kilka. Jedna z nich, to napisanie obsługi I2C Slave dla układu. SPI jest dobrym wyborem, ale ma też swoje wady. Używając tego interfejsu należy użyć dodatkowych wyprowadzeń, które będą wybierały adresata transmisji (w przypadku układu nadrzędnego). Jesli to są dwa układy, np uC i przetwornik a/c nie ma większego problemu, jeśli zaś będzie tego trochę, ilość potrzebnych wyprowadzeń może okazać się zbyt duża.
Komunikacja wieloprocesorowa prowadzona jest przy pomocy układów UART. Wiele układów ma zaszyty bloczek sprawdzający adres odbiorcy, co odciąża programistę i mikrokontroler od programowego czuwania nad nasłuchem interfejsu. W przypadku większych odległości między urządzeniami do komunikacji używany jest RS485. Jest to coś podobnego do UARTów, a właściwie to to samo, ale inna jest zasada transmisji od strony sprzętowej. W celu minimalizacji zakłóceń, przesyłana jest informacja w postaci napięcia różnicowego, a nie napięcia względem potencjału masy, jak w zwykłym RS232. Podobnie, jak w przypadku RS232 do konwersji danych na RS485 używany jest odpowiedni układ. Jeśli przesyłane są dane jedną skrętką (czyli parą przewodów), dodatkowo mikrokontroler musi zadbać o to, by poinstruować układ konwertera, czy dane są nadawane, czy odbierane. Do tego celu służą dwa lub jedno wejście sterowania transmisją. Producenci zadbali o to, by jeśli konwerter posiada osobne dwa wejścia dla wyboru nadawania/odbioru, każde z ich miało inny stan aktywny. Ta sztuczka pozwoli na sterowanie takim układem przy pomocy i tak jednego wyprowadzenia
Tu masz przykładowy układ pełniący rolę konwertera.
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
Witam
Skrzydlaty Tez mam ten problem , ale rozwiazalem go nie potrzebuje fakt 40 układow , ale 3 musze polaczyc wiec padlo na SPI . Jesli musisz polaczyc tylko dwa uC to mozesz laczyc za pomoca SPI .
Pozdrawiam Bartek
Skrzydlaty Tez mam ten problem , ale rozwiazalem go nie potrzebuje fakt 40 układow , ale 3 musze polaczyc wiec padlo na SPI . Jesli musisz polaczyc tylko dwa uC to mozesz laczyc za pomoca SPI .
Pozdrawiam Bartek
Ostatnio zmieniony 26 wrz 2007, 8:40 przez Thor, łącznie zmieniany 1 raz.
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
I2C - analizowałem ale biblioteka jest płatna, a nie kupie czegoś, co nie da mi 100% gwarancji poprawnego działania w moim przypadku.
SPI - każdy SLAVE musi mieć osobny kabelek do SS - odpada - przy łączeniu kilkudziesięciu układów w budynku nawet wstążka by nie pomogła;|
Wyglada na to że albo sam musze napisać jakiś "protokolik" (o la Boga! to mi zajmie miesiące!) albo poczekać na kogoś, kto napisze 1wire-slave.lib
Może osobny temacik nawołujący ludzi do zainteresowania taką biblioteką? MOże ktoś by napisał... Napewno nie jednemu by pomogła....
SPI - każdy SLAVE musi mieć osobny kabelek do SS - odpada - przy łączeniu kilkudziesięciu układów w budynku nawet wstążka by nie pomogła;|
Wyglada na to że albo sam musze napisać jakiś "protokolik" (o la Boga! to mi zajmie miesiące!) albo poczekać na kogoś, kto napisze 1wire-slave.lib
Może osobny temacik nawołujący ludzi do zainteresowania taką biblioteką? MOże ktoś by napisał... Napewno nie jednemu by pomogła....
-
ZbeeGin
Kolega się uparł na 1wire. Bardzo niedobrze.
Jeśli system łączności pomiędzy 2 mikroprocesorami miałby mieć taką postać to jedynym ratunkiem jest RS485. I takim warto się zainteresować.Skrzydlaty pisze:SPI - każdy SLAVE musi mieć osobny kabelek do SS - odpada - przy łączeniu kilkudziesięciu układów w budynku nawet wstążka by nie pomogła;|
-
Skrzydlaty
- Użytkownik
- Posty: 126
- Rejestracja: 23 wrz 2007, 21:08
- Lokalizacja: Krak
1wire jest stosunkowo prosta do obslugi z poziomu Bascoma i wymaga 1 kabelka, w sumie daje to max 3 kabelki. Do "pająka" jaki by wyszedł po okablowaniu budynku można by było też podpinać kolejne układy bez konieczności ciągnięcia kolejnych przewodów jak w przypadku SPI.
Jednak zainteresuje się głębiej RS485, chyba tylko to mi zostaje jak narazie.
Jednak zainteresuje się głębiej RS485, chyba tylko to mi zostaje jak narazie.
- gwozdex
- Użytkownik
- Posty: 879
- Rejestracja: 24 lut 2006, 10:04
- Lokalizacja: Czechowice-Dziedzice
- Kontakt:
Zainteresuj się tym RS485. Zauważ, iż w sieciach przemysłowych nie stosuje się 1-Wire tylko właśnie różnorakiego rodzaju inne interfejsy, a bardzo często RS485. Jako przykład mogę podać sterowniki PLC firmy GE Fanuc. Przy ich łączeniu w sieci wykorzystuje się bardzo często interfejs RS485 ( lub 232 ale na linii i tak umieszcza się konwerter do RS485- i to może być dla Ciebie rozwiązanie).