-
1. Data: 2015-10-11 12:59:51
Temat: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
Witam uprzejmie.
Na obrazku przedstawiam przebiegi transmisji RS485 zrealizowanej przez mój
układ.
http://s26.postimg.org/esnm54kqx/rs485.png
Sondy logiczne (dolny obrazek) podłączone był bezpośrednio do nóżek
mikrokontrolera ATmega16.
Sonda analogowa (górny obrazek) była podłączona do zacisków A i B magistrali
RS485.
Obydwa przebiegi (obrazek górny i dolny) zdjęto oddzielnie (przy dwóch
różnych transmisjach, ale z identycznymi danymi) -- układ ma separację
galwaniczną.
Parametry transmisji: 19200 8N1
Układ posiada separację galwaniczną (3 transoptory dla: odbioru, nadawania,
zmiany kierunku).
Na wejściach diody Schottky SA16C.
Zastosowano układ MAX485ECPA.
Mikrokontroler ATmega16.
Kabel LAPPKABEL UNITRONIC BUS LD 2x2x0,22 o długości 85 metrów, zwinięty w
krąg.
Na zaciskach A i B magistrali RS485 założono rezystory 120om, w obu
urządzeniach.
Podłączono linie A, B i C.
Ekran wisi w powietrzu.
Układ działa w ten sposób, że wysyła 83 bajty, a następnie czeka na odbiór
(odbiera 8 bajtów).
Na przebiegach pokazano moment, gdy wysyłanie kończy się i następuje odbiór
danych.
Nadawanie danych przebiega prawidłowo (zdalny odbiornik otrzymuje prawidłowo
dane, z prawidłową sumą kontrolną).
Problem polega na tym, że odbiornik na początku odbiera niepożądany bajt o
wartości 0 (zero), po którym następuje dopiero właściwy ciąg bajtów,
rzeczywiście nadany przez zdalny nadajnik.
Na podstawie przedstawionych przebiegów, wydaje mi się, że jest pewna
zależność między zmianą nadawania na odbiór, a pojawieniem się stanu
niskiego na linii odbioru (co powoduje pojawienie się niechcianego bajtu o
wartości zero). Robiłem próbę polegającą na tym, że wprowadziłem pewną
zwłokę po otrzymaniu ostatniego bajtu a zmianą
nadawania na odbiór -- wtedy też zmianie sygnału przełączającego nadawanie
na odbiór towarzyszyło pojawienie się w tym samym monecie stanu niskiego na
linii odbiornika. Zatem można mieć chyba pewność, że przełączenie nadajnika
na odbiór w jakiś sposób wpływa na linię odbiornika, co jest niekorzystne i
powoduje problemy.
Proszę o pomoc w tej sprawie.
Robbo
-
2. Data: 2015-10-11 15:05:48
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
EKSPERYMENT 1:
Zrobiłem taki eksperyment, że w pętli nieskończonej raz ustawiam a raz
zeruję linię PD2 mikrokontrolera ATmega16.
Linia ta steruje wejściami DE-RE/ (przełączanie między nadawaniem a
odbieraniem) układu MAX485ECPA
Na oscyloskopie obserwowałem generowany przeze mnie na linii PD2 przebieg
prostokątny. Identyczny przebieg prostokątny występował na linii PD0 (odbiór
danych).
Po wyjęciu układu MAX485ECPA z podstawki, pozostał tylko generowany przeze
mnie przebieg na PD2, natomiast przebieg wcześniej występujący na PD0
zniknął.
EKSPERYMENT 2:
Przewody kabla transmisji danych podpięte są tylko do jednego urządzenia. Z
drugiej strony kabel wisi w powietrzu. Kabel ma 85metrów, jest zwinięty w
krąg.
Problem nie występuje. Sterowanie przełączaniem nadajnik-odbiornik nie
wpływa na stan linii odbiorczej mierzonej na nóżce PD0 mikrokontrolera
ATmega.
Dołączam rezystor 120om do przewodów A i B po drugiej stronie (po tej
stronie, która wisi w powietrzu). Problem pojawia się. Sterowanie
przełączaniem nadajnik-odbiornik powoduje, że taki sam przebieg pojawia się
na nóżce PD0 mikrokontrolera ATmega. Dołożenie rezystora 120om po stronie
urządzeina nie zmienia sytuacji.
?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
-
3. Data: 2015-10-11 15:17:17
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
EKSPERYMENT 1:
Zrobiłem taki eksperyment, że w pętli nieskończonej raz ustawiam a raz
zeruję linię PD2 mikrokontrolera ATmega16.
Linia ta steruje wejściami DE-RE/ (przełączanie między nadawaniem a
odbieraniem) układu MAX485ECPA
Na oscyloskopie obserwowałem generowany przeze mnie na linii PD2 przebieg
prostokątny. Identyczny przebieg prostokątny występował na linii PD0 (odbiór
danych).
Po wyjęciu układu MAX485ECPA z podstawki, pozostał tylko generowany przeze
mnie przebieg na PD2, natomiast przebieg wcześniej występujący na PD0
zniknął.
EKSPERYMENT 2:
Przewody kabla transmisji danych podpięte są tylko do jednego urządzenia. Z
drugiej strony kabel wisi w powietrzu. Kabel ma 85metrów, jest zwinięty w
krąg.
Problem nie występuje. Sterowanie przełączaniem nadajnik-odbiornik nie
wpływa na stan linii odbiorczej mierzonej na nóżce PD0 mikrokontrolera
ATmega.
Dołączam rezystor 120om do przewodów A i B po drugiej stronie (po tej
stronie, która wisi w powietrzu). Problem pojawia się. Sterowanie
przełączaniem nadajnik-odbiornik powoduje, że taki sam przebieg pojawia się
na nóżce PD0 mikrokontrolera ATmega. Dołożenie rezystora 120om po stronie
urządzeina nie zmienia sytuacji.
?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
-
4. Data: 2015-10-11 15:41:34
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
Schemat:
http://images67.fotosik.pl/1249/f6dd8a1a74fab412.png
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
-
5. Data: 2015-10-11 15:53:09
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: Mario <M...@...pl>
W dniu 2015-10-11 o 15:41, Robbo pisze:
> Schemat:
> http://images67.fotosik.pl/1249/f6dd8a1a74fab412.png
>
> ---
> Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania,
> ponieważ ochrona avast! Antivirus jest aktywna.
> https://www.avast.com/antivirus
>
Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący
stanem nieaktywnym na UART.
--
pozdrawiam
MD
-
6. Data: 2015-10-11 18:01:38
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
> Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
> wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący stanem
> nieaktywnym na UART.
Dziękuję za radę. Dziś będę to sprawdzał.
Tak na marginesie, zrobiłem jeszcze jeden eksperyment. Odłączyłem całkowicie
kabel od zacisków A, B, C. Włączyłem urządzenie. Urządzenie zainicjowało LCD
i USART, ale nie prowadzi żadnej transmisji i nie steruje wyjściami.
Oscyloskopem z analizatorem logicznym obserwuję sygnały na nóżkach PD0
(odbiór), PD1 (wysyłanie), PD2 (przełączanie nadajnik/odbiornik)
mikrokontrolera ATmega16. Początkowo PD2 jest w stanie niskim, PD1 i PD0 są
w stanie wysokim. Przykładam rezystor 120om do zacisków A i B -- powoduje to
pojawienie się stanu niskiego na PD0 (odbiór).
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
-
7. Data: 2015-10-11 23:13:03
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: "Robbo" <n...@g...com>
> Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
> wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący stanem
> nieaktywnym na UART.
Pierwsza próba z tymi rezystorami (przy czym miałem coś rzędu 500om) nie
powiodła się. Otrzymywałem błędy ramki (frame error). Muszę jeszcze
pokombinować.
-----
Sprawdziłem inne egzemplarze MAXa.
Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest źle.
Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
nadajnik nie nadaje.
Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż zdalny
nadajnik zacznie nadawać dane.
Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
wynika, że z MAXami bywają tego typu problemy, czy raczej szukać przyczyn u
siebie?
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
https://www.avast.com/antivirus
-
8. Data: 2015-10-11 23:47:03
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: Mario <M...@...pl>
W dniu 2015-10-11 o 23:13, Robbo pisze:
>> Podciągnij A do V0, a B do GND0 poprzez rezystory 5kOhm. Wtedy po
>> wyłączeniu nadawania linia przejdzie w stan odpowiadający 1, będący
>> stanem nieaktywnym na UART.
>
> Pierwsza próba z tymi rezystorami (przy czym miałem coś rzędu 500om) nie
> powiodła się. Otrzymywałem błędy ramki (frame error). Muszę jeszcze
> pokombinować.
>
> -----
>
> Sprawdziłem inne egzemplarze MAXa.
>
> Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
> Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest
> źle.
>
> Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
> niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
> nadajnik nie nadaje.
> Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
> odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż
> zdalny nadajnik zacznie nadawać dane.
>
> Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
> układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
> wynika, że z MAXami bywają tego typu problemy, czy raczej szukać
> przyczyn u siebie?
>
Dziwne, że podłączenie rezystorów nie pomogło. W przypadku MAX485
zazwyczaj pomaga. Może odwrotnie podłączyłeś. Jak nie pomogło 5k można
zmniejszyć do 3k. Fakt, że MAXy stwarzają problemy. Lepiej dać SN75176.
--
pozdrawiam
MD
-
9. Data: 2015-10-12 10:09:22
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: Piotr Gałka <p...@c...pl>
Użytkownik "Robbo" <n...@g...com> napisał w wiadomości
news:561a4112$0$27508$65785112@news.neostrada.pl...
> Zastosowano układ MAX485ECPA.
Sprawdź w karcie katalogowej, czy ten scalak gwarantuje że na wyjściu
odbiornika jest 1 jak między A i B jest 0.
Jak nie gwarantuje to wszystko jasne.
P.G.
-
10. Data: 2015-10-12 10:14:11
Temat: Re: RS485, niechciany bajt o wartości zero na początku
Od: Piotr Gałka <p...@c...pl>
Użytkownik "Robbo" <n...@g...com> napisał w wiadomości
news:561ad0df$0$8383$65785112@news.neostrada.pl...
>
> Z ostatnio zakupionych MAX485ECPA na 2 jest źle, na 4 jest dobrze.
> Mam jakiś MAX487, na którym jest źle. Mam zwykły MAX485, na którym jest
> źle.
>
> Źle: przełączenie z nadawania na odbiór powoduje pojawienie się sygnału
> niskiego na linii odbioru mikrokontrolera, mimo tego że jeszcze zdalny
> nadajnik nie nadaje.
> Dobrze: przełączenie z nadawania na odbiór nie wpływa na sygnał linii
> odbioru mikrokontrolera -- pozostaje on w stanie wysokim do czasu, aż
> zdalny nadajnik zacznie nadawać dane.
>
> Teraz się zastanawiam, czy te układy są rzeczywiście uszkodzone, czy mój
> układ ma problemy, żeby pracować poprawnie. Czy z Waszego doświadczenia
> wynika, że z MAXami bywają tego typu problemy, czy raczej szukać przyczyn
> u siebie?
Nie jestem pewien i nie chce mi się sprawdzać, ale wygląda mi na to, że nie
przeczytałeś kart katalogowych tych scalaków.
Przypuszczam, że one nie gwarantują 1-ki na wyjściu gdy A=B więc zachowują
się zgodnie ze specyfikacją.
P.G.