logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sieć RS-485 full duplex na MAX488 z wykorzystaniem Atmegi8

mumin_80 19 Sie 2011 09:58 4398 7
REKLAMA
  • #1 9839810
    mumin_80
    Poziom 12  
    Witam forumowiczów
    Mam problem z uruchomieniem sieci RS-485 w trybie full duplex, wykorzystuje
    elementy MAX488. Schemat podłączenia zgodnie z notą katalogową:

    Sieć RS-485 full duplex na MAX488 z wykorzystaniem Atmegi8

    Rezystory pomiędzy pinami YZ i AB po 120 omów.
    Wszystkie MAX są sterowane przez mikrokontolery Atmega8.

    Jeden układ master wysyła ciąg znaków np: T01444, gdzie 01 to numer slave'a. Reszta znaków w komendzie to rozkaz do wykonania.
    Mam dwa slave'y w układzie czyli mam do dyspozycji dwie komendy:
    T154444 - slave numer 15
    T073333 - slave numer 7
    Problem polaga na tym że jak mam podłaczone oba slave'y to tak jakby jeden z nich przejmuje rolę nadrzędną i "zabiera" komendę nie kierowaną do niego.
    Jak podłączne do układu jednego slave, wszystko działa OK. Zarówno na jednym
    jak i drugim slave. Każdy odpowiada na swoją komendę ale tylko wtedy gdy
    jeden slave jest w sieci RS.
    Odpada problem błędu w kodzie bo jak piszę, wszystko działa gdy jest 1 slave i 1 master.
    Czy może spotkaliście się z takim problemem ?
    Wydaje mi się, że jeden z slave'ów staje sie masterem wśród slaveów. Trochę to dziwne.
    Proszę o pomoc.
  • REKLAMA
  • #2 9839860
    aaadamw
    Poziom 16  
    Cytat:
    Wydaje mi się, że jeden z slave'ów staje sie masterem wśród slaveów. Trochę to dziwne.

    to raczej napewno coś nie tak z kodem
  • REKLAMA
  • #3 9839876
    mumin_80
    Poziom 12  
    Do dlaczego wszystko działa OK jak jest jeden slave i jeden master ?
    Zarówno dla jednego jak i drugiego slave ?
    Wybór slave robie programowo ale z tego co wiem to jak się robi.

    mumin_80
  • Pomocny post
    #4 9839910
    tmf
    VIP Zasłużony dla elektroda
    W full duplex w takiej konfiguracji raczej trudno mówić o master/slave, raczej tylko można o aktywnych układach. Jeśli nie masz problemów elektrycznych, to na 100% wina leży w twoim układzie. Po prostu nie działa ci dekodowanie adresu układu docelowego i odzywają się wszystkie. Jak masz jeden to z oczywistych powodów działa, jak więcej to nie.
    Pamiętasz, aby wszystkie "slave" miały wyłączone nadajniki, dopóki nie zostaną zaadresowane?
  • REKLAMA
  • REKLAMA
  • #6 9839975
    mumin_80
    Poziom 12  
    Cały kod z atmegi "slave":
    Krótko opisując to adres atmegi jest ustawiany na 4 pinach, moze byc wartość od
    0 do 15.
    Następnie w komendzie jest wysyłany adres po literce T, czyli np. T07049...
    to znaczy adres 7.
    Adres z komendy jest porównywany z adresem na pinach i jezeli jest zgodny to wykonuje obliczenie. Jak nie jest to nic nie robi.

    Być może problem jest we włącznych nadajnikach slaveów jak pisał tmf. Ale jak je mogę wyłączyć skoro stosuje MAX488 i schemat wygląda tak jak poniżej tylko mam więcej slaveów.

    Sieć RS-485 full duplex na MAX488 z wykorzystaniem Atmegi8

    KOD:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #7 9840094
    tmf
    VIP Zasłużony dla elektroda
    Chwilka, jeśli używasz max488/490 w konfiguracji jak na rysunku w pierwszym poście to nie ma prawa działać - masz tam zwarte wyjścia układów. Ten układ nie ma pinu DE/RE więc można go stosować wyłącznie w układzie full duplex jak na rysunku z twojego poprzedniego posta. Czyli dwa układy, nic więcej. Aby zastosować wiele układów, musisz użyć np. max489/491, które mają piny DE/RE umożliwiające blokowanie nadajnika.

    Dodano po 1 [minuty]:

    BTW, do adresowania układów "slave" wygodniej jest stosować tryb MPCM ATMegi - ramką adresową jest specjalna 9-bitowa ramka danych, automatycznie rozpoznawana przez "slave". Dzięki temu możesz np. usypiać urządzenie, jeśli nie ma do niego żadnej transmisji. Zmniejsza też to znacznie obciążenie procesora.
  • #8 9840123
    mumin_80
    Poziom 12  
    Ok, dzięki.
    Spróbuje :)

    mumin_80
REKLAMA