-         

Ergebnis 1 bis 2 von 2

Thema: Timing beim 485 Bus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.10.2005
    Beiträge
    52

    Timing beim 485 Bus

    Anzeige

    Hallo und frohe Ostern,

    ich habe ein Problem mit der Steuerung eines 485 Bus.
    Ich benutze folgenden Code beim Master, der in einer Schleife ausgeführt wird:


    Code:
    Set Busrxtx
    While Ucsr1a.udre1 <> 1                                     'Ucsr1a.5 <> 1                                         'Data register empty (ready to receive new data)
    Wend
    Print #2 , Chr(100);                                        'Udr1 = 101
    Do
    Loop Until Ucsr1a.txc1 = 1                                  'Ucsr1a.6 = 1                                     'ucsr1a.txc   (transmit complete)
    Waitus 400                                                  'alt 7
    Reset Ucsr1a.txc1                                           'Ucsr1a.6
    
    Reset Busrxtx
    
    'Auf Interrupt warten
    Waitms 8                                                    'alt 80
    Slave1_in = Zeichen
    Zeichen = 0
    Nun sehe ich mir mit einem MAX232-Adapter mit einem Terminalprogramm an, was gesendet wird.

    Dabei sind für mich mehrere Dinge merkwürdig.

    1. Mit der Abfrage des TXC1 sollte doch eigentlich so lange gewartet werden, bis das Zeichen aus dem Sendepuffer vollständig gesendet wurde. Hier muss ich aber noch eine Wartezeit von min. 400us anfügen, sonst sehe ich kein gesendetes Zeichen.

    2. Ich benutze dann eine Wartezeit, damit ein Slave eine Antwort senden kann. Dazu benutze ich das Interrupt:
    Code:
    On Urxc1 Bekommen
    
    ....
    
    ' ZeichenErhalten
    Bekommen:
      Zeichen = Waitkey(#1)
    Return
    Nun habe ich das merkwürdige Problem, dass wenn ich die Wartezeit (im Beispiel waitms ändere, hiermit auch das senden beeinflusse. Stelle ich diese Zeit z.B. nur auf 1ms, dann sehe ich im Terminalprogramm, dass nur noch Hex 00 gesendet wird.

    Ist es möglich, dass die waitms- und waitus-Funktionen von irgendetwas beeinflußt werden und dadurch sich die Wartezeiten ändern können.

    Ein Slave ist bei diesem Problem nicht an dem Bus vorhanden, daher kann nichts kollidieren.

    Mfg,
    Wurm

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    versuchs mal mit "Config Print"
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •