Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Problem z komunikacją RS485 - Bascom

PetrolGda 12 Sep 2009 12:16 2037 2
  • #1
    PetrolGda
    Level 12  
    Witam wszystkich.

    Mam dwa proste układy master i slave. Jeden nadaje drugi odbiera. Oba układy to ATmega8 + MAX485. Jedna strona MAX485 zaterminaowana 120R a druga poza 120R podciągnięta do masy i Vcc (linie A i B) opornikami 560R. Oba układy spięte z sobą skrętką długości 10cm.
    Wszystko jakby zgodnie z opisami.

    Kod nadajnika:

    Code:

    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 19200

    ' LCD ----
    Config Lcd = 16 * 2
    Cursor Off
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    Cls

    Re_de Alias Portd.2
    Set Re_de
    Dim A As String * 1
    Dim Stan1 As Bit
    Do
     Toggle Stan1
     If Stan1 = 0 Then A = "A" Else A = "B"
     Print A ;
     Cls
     Lcd "Wyslano " ; A
     Wait 2
    Loop
    End


    Kod odbiornika :
    Code:

    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 19200

    ' LCD ----
    Config Lcd = 16 * 2
    Cursor Off
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
    Cls



    Config Serialin = Buffered , Size = 1
    Enable Interrupts

    Re_de Alias Portd.2
    Reset Re_de

    Dim A As Byte
    Do
     If Ischarwaiting() = 1 Then
       A = Inkey()
       If A <> 13 And A <> 10 Then
         Lcd Chr(a)
         Waitms 500
         Cls
       End If

     End If
    Loop
    End



    I teraz tak :

    Jak podłączę oba układy bezpośrednio przez UART Rx-Tx to wszystko działa poprawnie. Na LCD odbiornika widzę zmieniające się literki

    Jak podłączę przez RS485 to układ działa przez chwilę, następnie przestaje wyświetlać cokolwiek po czym znowu wyświetla litery. Tak jakby "coś" co jakiś czas blokowało transmisję.

    Co jest nie tak ??
  • #2
    gothye
    Level 33  
    wywal rezystory 560R a w nadajniku :

    Code:
    config Portd.2 = output 


    i przy nadawaniu :

    Code:
    Portd.2 = 1 


    po zakonczeniu nadawania

    Code:
    Portd.2 = 0
  • #3
    PetrolGda
    Level 12  
    Po zdjęciu rezystorów i zmianach w kodzie układ działa tak samo źle. Co jakiś czas wyświetla a potem przerwa.

    Jakie inne sugestie ??

    Dodam dla pełnej jasności schematy :

    Nadajnik :
    Problem z komunikacją RS485 - Bascom

    Odbiornik :
    Problem z komunikacją RS485 - Bascom

    Dodano po 1 [godziny] 13 [minuty]:

    Chyba znalazłem przyczynę takiej sytuacji ale nie wiem jak ją usunąć.

    Podsłuchałem oscyloskopem magistralę RS485 i odkryłem następującą zależność :

    Jeżeli amplituda sygnału wynosi 3V to widzę zmieniające się litery na LCD czyli jest OK.
    Jeżeli jednak, co ma miejsce w tym układzie, amplituda wynosi 1 V to to oczywiście znaki nie docierają do odbiornika.
    Wychodzi więc na to, że problem jest natury elektrycznej na samej linii lub układów MAX485.

    Zastosowany układ MAX485 to konkretnie :
    http://download.maritex.com.pl/pdfs/sc/max485.pdf


    Czy ktoś ma jakiś pomysł jak sobie z tym poradzić ??