-         

Ergebnis 1 bis 5 von 5

Thema: spezielle Eindraht Schnittstelle....Variablenproblem

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161

    spezielle Eindraht Schnittstelle....Variablenproblem

    Anzeige

    Hallo zusammen,

    ich bin gerade dabei einen eigenen Sensor an eine vorgegebene spezielle Schnittstelle anzubinden. Die Schnittstelle ist eine Eindrahtschnittstelle die ganz eigene Vorgaben hat.

    Hier ein Auszug aus der Schnittstellenbeschreibung:

    "...
    Schnittstellenparameter:
    38400, n, 8, 1
    Eindrahtschnittstelle halbduplex

    Protokoll:
    Idle Line Multiprozessor
    Protokoll

    Der Sensor ist Slave. Er empfängt solange, bis ein Idle Line
    Timeout auftritt. Anschließend werden die Daten ausgewertet
    und entsprechend reagiert.

    Datenabfrage:
    Der Master schickt ca. alle 6ms eine Adresse auf den Bus (0x00
    bis 0x0f rotierend).
    Erkennt der Sensor die Adresse, antwortet dieser.
    Antwort vom Sensor Die Antwort besteht aus 3 Bytes.
    1. Byte:
    Adresse (Echo) + Werteklasse (= Einheit)
    2.+3. Byte:
    Sensorwert und Alarmflag

    Beispiel der Antwort auf die Adresse 3:
    0x31 = Adr. 3 + Werteklasse 1 "Spannung"
    0x005B = 45*2+1 = 4,5 Volt + Alarmflag



    Ich bin schon so weit, das ich am besten mit den "Serin" und "Serout" Befehlen zurecht komme. Der Testcode reagiert schon mal auf die Adresse auf dem Pin A0 und schreibt dann zurück.

    Komisch ist nur, das ganz andere Werte zurückgeschrieben werden. Ich lasse die Werte an zwei Pins mit Serout schreiben. An Pin A1 hängt ein Terminalprogramm.

    Code:
    $regfile = "M16def.dat"
    $crystal = 3686000
    
    $baud = 38400
    
    $hwstack = 32                                               ' default use 32 for the hardware stack
    $swstack = 16                                               ' default use 10 for the SW stack
    $framesize = 64
    
    Dim B As Byte
    Dim Wert As Word
    Dim Header As Byte
    
    
    Header = &H31                                              
    Wert = &H005B                                                 
    
    
    Do
    
    Serin B , 1 , A , 0 , 38400 , 0 , 8 , 1
    
    If B = 3 Then
       Serout Header , 1 , A , 0 , 38400 , 0 , 8 , 1
       Serout Wert , 2 , A , 0 , 38400 , 0 , 8 , 1
       Serout Header , 1 , A , 1 , 38400 , 0 , 8 , 1
       Serout Wert , 2 , A , 1 , 38400 , 0 , 8 , 1
       End If
    
    Loop
    
    End
    Aber anstelle von:
    Header = &H31 (0x31) wird im Terminal Hex 0x61 zurückgeschrieben und anstelle von Wert = &H005B (0x005B) wird in Hex 0xBB00 ausgegeben.

    Baudraten usw. passen.

    Was läuft hier falsch? Hat jemand nen Tipp?
    Gruß
    Markus

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Ich habe jetzt das Problem zwar gefunden, weis aber nicht wie ich es lösen kann.

    Das Problem ist, das scheinbar die Werte beim Befehl Serout um ein Bit verschoben werden.

    Beispiel:
    Der Header hat &B0001_1100, es kommt aber 0011_1100 raus. Ich habe jetzt sehr viel rumgespielt und verglichen, es ist immer das gleiche Problem. Hat jemand ne Idee wie ich das verhindern kann?
    Gruß
    Markus

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    stellt sich die Frage ob beim Serin das Bit versetzt wird oder beim Serout ... beim Serin könnte die Leitung zwischendrin evtl. floaten und dann das Startbit nicht richtig rüber kommen ... probiers mal mit nem Pullup 10K oder so
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2005
    Beiträge
    161
    Hab nen 10K Pull up drin, keine Änderung. Komisch..
    Gruß
    Markus

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Mal das Oszi drauf gehängt?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Ähnliche Themen

  1. spezielle Spannungsanpassung -5..5 auf 0..4,096
    Von gelenkeharald im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 16.05.2012, 16:23
  2. spezielle Bahnprofile
    Von RedEye im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 07.08.2008, 10:50
  3. Spezielle USB Hardware
    Von Killer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 02.08.2007, 20:23
  4. Variablenproblem mit Printbin
    Von albundy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 21
    Letzter Beitrag: 20.07.2006, 19:55
  5. spezielle Aluteile
    Von Papa_Q im Forum Mechanik
    Antworten: 25
    Letzter Beitrag: 08.12.2004, 00:37

Berechtigungen

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