Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Połączenie RS485 brak komunikacji

daniio2 17 Sie 2017 20:51 786 14
  • #1 17 Sie 2017 20:51
    daniio2
    Poziom 9  

    Witam

    Podjąłem pierwszą próbę skomunikowania mikrokontrolera Atmega16A z PC. Wysyłam z Atmegi znak i chciałbym go odebrać w terminalu. Niestety coś robię nie tak i w terminalu nic się nie pojawia. Proszę o pomoc.

    Do komunikacji wykorzystuję konwerter UART->RS485(MAX485):
    https://core-electronics.com.au/ttl-uart-to-rs485-converter-module.html

    Oraz konwerter RS485 to USB(CH340):
    http://sklep.celiko.net.pl/konwerter-usb-rs485-ch340-p-2668.html

    Połączenia wyglądają następująco:
    Mikrokontroler -> MAX485
    PD0(Rx) -> RO
    PD1(Tx) -> DI
    PD6 -> DE/RE(połączone)

    MAX485 -> CH340
    A -> A
    B -> B

    W managerze urządzeń jak i w terminalu wszędzie mam ustawione następujące parametry transmisji:
    9600
    8n2

    Program wygląda następująco:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Chciałbym użyć wewnętrznego kwarcu 2MHz zatem odpalając avrdude dodaję następujące parametry "-U lfuse:w:0xd2:m -U hfuse:w:0x99:m". Wyliczone za pomocą(http://www.engbedded.com/fusecalc/)

    Po odpaleniu programu do terminala w PC nie dochodzą żadne znaki. Jest pusto. Sprawdzałem echo na UART z użyciem diody(w roli debuga) i z kontrolera dane się wysyłają poprawnie.

    Z putty na pewno wybrałem odpowiedni port COM(i odpowiednie parametry transmisji). Zastanawiam się czy może nie jest to kwestia, któregoś z konwerterów(w sumie to chińszczyzna).

    Połączenie RS485 brak komunikacji

  • #2 17 Sie 2017 21:35
    maciej_333
    Poziom 33  

    Nie wiem w jakim celu stosujesz stałą FOSC o wartości 1000000 Hz = 1 MHz, skoro konfigurujesz FUSE BITY na 2 MHz. Zresztą nie sprawdzałem, czy ustawione wartości dla HFUSE i LFUSE są poprawne. Sprawdź to m.in. z tabelami 107 i 106 z dokumentacji. Ponadto wartość FOSC zdecydowanie powinno się gdzieś ustawić we właściwościach projektu, jaki powstaje np. w Atmel Studio, bądź AVR Studio. Ponadto nie ma czegoś takiego, jak "wewnętrzny kwarc". Jest natomiast wewnętrzny kalibrowany oscylator RC. Problem w tym, że błędy tego oscylatora są zdecydowanie zbyt duże do tego zastosowania. Innych problemów nie zauważyłem.

  • #3 17 Sie 2017 23:01
    daniio2
    Poziom 9  

    Dzięki za uwagi. Po pierwsze usunąłem parametr HFUSE bo tego konfigurować nie potrzebuję. Co do części LFUSE sprawdziłem ustawienia i wszystko się zgadza z tabelami. FOSC zmieniłem na 2000000. Dodałem również wartość FOSC we właściwościach projektu -> Toolchain -> Symbols(atmelStudio). Niestety nadal nic. Przy błędnych ustawieniach spodziewałbym się chociaż krzaków, a tu w ogóle nic się nie pojawia. Jakieś pomysły? :)

  • #4 18 Sie 2017 01:07
    krzysiek_krm
    Poziom 29  

    Witam,
    z głupia frant zapytam, czy połączyłeś masy obu urządzeń ?

    Pozdrawiam

  • #5 18 Sie 2017 08:36
    daniio2
    Poziom 9  

    Masz na myśli MAXA z CH340? Nie bo ten CH340 nie ma w ogóle wyjścia na masę także założyłem, że bez tego powinno działać :)

  • #6 18 Sie 2017 15:33
    krzysiek_krm
    Poziom 29  

    daniio2 napisał:
    Masz na myśli MAXA z CH340? Nie bo ten CH340 nie ma w ogóle wyjścia na masę także założyłem, że bez tego powinno działać :)

    Mam na myśli połączenie masy interfejsu RS485 na płytce mikrokontrolera z masą konwertera USB - RS485. Interfejs jest różnicowy, wspólna masa jest jednak zazwyczaj potrzebna. Z jednej strony niektóre układy wymagają przepływu jakichś prądów polaryzujących, z drugiej strony wszystkie układy tego interfejsu mają ograniczoną dopuszczalną wartość napięcia wspólnego, jej przekroczenie powoduje błędne działanie, może również doprowadzić do uszkodzenia.

  • #7 18 Sie 2017 21:44
    maciej_333
    Poziom 33  

    Masa w wielu przypadkach powinna być jednak połączona. W tym przypadku zapewne masa została dołączona przez programator. Najlepiej byłoby sprawdzić działanie konwertera i UART'u w mikrokontrolerze z pomocą oscyloskopu. Z konwerterami zdecydowanie różnie bywa. Niekiedy zachowują się dość dziwnie. Coś takiego miałem z klonem PL2303. Kiedy próbowałem go używać z LabVIEW po pewnym czasie pojawiał się tzw. blue screen. Problem ten jest opisany na forum NI i występuje nawet z oryginalnym PL2303. Warto odłączyć konwerter od USB i zrestartować komputer. Potem ponownie dołączyć konwerter i ponowić próbę. Można też wykorzystać inny terminal. Ja stosuję RealTerm.

  • #8 19 Sie 2017 10:26
    R-MIK
    Poziom 37  

    maciej_333 napisał:
    Z konwerterami zdecydowanie różnie bywa. Niekiedy zachowują się dość dziwnie. Coś takiego miałem z klonem PL2303.

    Z konwerterami faktycznie bywa różnie. Zero problemów to miałem tylko z FTDI i teraz tylko takie stosuje.

    Dodano po 1 [minuty]:

    maciej_333 napisał:
    Masa w wielu przypadkach powinna być jednak połączona. W tym przypadku zapewne masa została dołączona przez programator.

    Najlepiej masę łączyć przez rezystor od kilkunastu do kilkudziesięciu ohm. Kiedyś w EP był artykuł na ten temat.

    Dodano po 6 [minuty]:

    maciej_333 napisał:
    Jest natomiast wewnętrzny kalibrowany oscylator RC. Problem w tym, że błędy tego oscylatora są zdecydowanie zbyt duże do tego zastosowania. Innych problemów nie zauważyłem.

    Nie będą zbyt duże. Oscylator ma tolerancje 2%, dopuszczalna odchyłka przy 9600 i dzielniku usarta 8 2,5%, więc wszystko jest w normie.
    W dużym przybliżeniu można przyjąć dopuszczalna odchyłkę 2% do 38400, 1% do 115200. Dokładnie można to oczywiście policzyć a nawet trzeba, bo odchyłka zależy od tego ile bitów przesyłamy (bitów danych, stopu, parzystość). Im jest ich więcej, i im większa prędkość tym odchyłka musi byc mniejsza.

    Dodano po 3 [minuty]:

    daniio2 napisał:
    Zastanawiam się czy może nie jest to kwestia, któregoś z konwerterów(w sumie to chińszczyzna).

    Tez obstawiam konwerter i to ten USB-RS485. Możesz jeszcze sprawdzić, czy dane faktycznie pojawiają się na magistrali. Najlepiej oscyloskopem, jak nie masz to diodą LED z szeregowym rezystorem 100..200R. Zainwestuj 2 flaszki i kup sobie SaleAE, rozwiązuje wiele problemów.

  • #9 19 Sie 2017 17:12
    el2010tmp
    Poziom 25  

    Może prościej użyć interfejsu USB=>UART ?

  • #10 20 Sie 2017 21:31
    krzysiek_krm
    Poziom 29  

    Jeszcze jedno, czy konwerter USB - RS485 na pewno jest ustawiony na odbieranie danych ?

  • #11 20 Sie 2017 21:52
    R-MIK
    Poziom 37  

    krzysiek_krm napisał:
    Jeszcze jedno, czy konwerter USB - RS485 na pewno jest ustawiony na odbieranie danych ?

    W większości przypadków, konwertery USB-485 same przełączają sie z nadawania na odbiór.

  • #12 08 Wrz 2017 16:21
    daniio2
    Poziom 9  

    Miałem niestety sporą przerwę, ale wracam do tematu. Kolega maciej_333 prawdopodobnie miał rację ponieważ nagle wszystko zaczęło działać. Wygląda na to, że restart systemu pomógł. Wcześniej nie resetowałem komputera bo był jedynie usypiany :) Powiedzcie mi czy przy tym moim konwerterze jest możliwość w jakiś sposób podłączyć masę? W tych FTDI jest wszystko ładnie wyprowadzone, a w tej mojej chińszczyźnie nie ma wyjścia. Kiedy odłączę wspólną masę to dostaję krzaczki co jakiś czas także macie rację, że takie połączenie GND musi być. Pytanie w ogóle po co robią takie konwertery.

  • #13 08 Wrz 2017 17:52
    maciej_333
    Poziom 33  

    Można dołączyć masę. Trzeba jednak ją wyprowadzić z konwertera po rozklejeniu/rozcięciu jego obudowy.

  • #14 08 Wrz 2017 17:54
    R-MIK
    Poziom 37  

    daniio2 napisał:
    Miałem niestety sporą przerwę, ale wracam do tematu. Kolega maciej_333 prawdopodobnie miał rację ponieważ nagle wszystko zaczęło działać. Wygląda na to, że restart systemu pomógł.

    Nie doczytałem, WIN? Jak mam problemy to zawsze od tego zaczynam.

  • #15 08 Wrz 2017 19:44
    daniio2
    Poziom 9  

    Tak. Windows. Jakoś nie pomyślałem o restarcie :) W takim razie spróbuję rozebrać to ustrojstwo i podpiąć masę. Dzięki Panowie za pomoc. Myślę, że wątek można zamykać. Jeszcze tylko jedno pytanie. Warto kupić SaleAE podrabiane z allegro czy lepiej oryginał? PS. Odpowiadając dlaczego nie przejściówka USB - > UART. Ponieważ muszę mieć komunikację na dużą odległość. Jaki jest sens takiej przejściówki?

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME