Daten senden geht nur , wenn ich Masse anklemme

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Daten senden geht nur , wenn ich Masse anklemme

Beitrag von super_castle »

Hallo, ich habe eine serielle Schittstelle vom USB-Port aus.
Wenn ich mit Purebasic Daten sende zum AVR-Board (2-Draht Rx und TX), muss ich zusätzlich einmal Masse legen vom Notebook(Blechhülle vom USB-Stecker) zum AVR-Board, sonst kommen keine Daten an.

Wenn ich dieses mal probehalber mit GFA32 mache, über den gleichen USB-Port, geht es ohne Masse.
Kann man in Purebasic irgendwie evtl ein seriellen Pin softwaremässig beeinflussen?

Code: Alles auswählen

Global text1.s,port.l,s_byte.c
 
  Enumeration
    #Window_0
    #Button_0
    #Button_1
    #Button_2
    #String_0
    #Editor_0
  EndEnumeration
      
  InitSprite()
  InitSound()
 
  OpenWindow(#Window_0, 400, 150, 800,500, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  OpenWindowedScreen(WindowID(#Window_0),300,10,300,300,0,0,0)

  ButtonGadget(#Button_0, 10,10, 80, 25, "Seriell ein")
  ButtonGadget(#Button_1, 10,40, 80, 25, "Seriell aus")
  ButtonGadget(#Button_2, 10,70, 80, 25, "Daten")
  StringGadget(#String_0, 100, 10, 100, 22, "")
  EditorGadget(#Editor_0, 10, 140, 200,200)

  ClearScreen(RGB(128,128,128))
  port=-1
  
  Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget = #Button_0 
        If port=-1
          port=OpenSerialPort(#PB_Any, "COM4", 19200, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
          If port
            text1+"...geöffnet   "+Str(port)+Chr(10)
            SetGadgetText(#Editor_0, text1)
          Else
            text1+"...nichts"+Chr(10)
            SetGadgetText(#Editor_0, text1)
            port=-1
          EndIf
        EndIf  
      EndIf
      
      If EventGadget = #Button_1 
        If port > 0
          CloseSerialPort(port)
          text1+"...geschlossen"+Chr(10)
          SetGadgetText(#Editor_0, text1)
          port=-1
        EndIf
      EndIf
      
      If EventGadget = #Button_2 
        If port > 0
          While AvailableSerialPortInput(port)  
            ReadSerialPortData(port, @s_byte, 1)
            text1+Str(s_byte)+Chr(10)
            SetGadgetText(#Editor_0, text1)
          Wend 
        EndIf  
      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
  
  FlipBuffers()
   
ForEver
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Re: Daten senden geht nur , wenn ich Masse anklemme

Beitrag von 7x7 »

Ohne Masse gehts nun mal nicht in der Elektronik. Irgendwo und irgendwie gibt es in deiner Hardware-Verbindung eine Scheinmasse. Um eine einwandfreie sichere Verbindung aufzubauen, musst du eine definierte Masseverbindung herstellen.
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Daten senden geht nur , wenn ich Masse anklemme

Beitrag von WPö »

super_castle hat geschrieben:(2-Draht Rx und TX)
Hä? Erzähl' nochmal! Verwendest Du eine selbstgebastelte Leitung, aus zwei Drähten bestehend?

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: Daten senden geht nur , wenn ich Masse anklemme

Beitrag von super_castle »

Zur Zeit mit dem Atmega-Board ja.
Weil Purebasic zwischenpuffert ist es kein Problem, da brauche ich keine Abfrageleitung und Bestätigungsleitung, obwohl das mit dem Atmega-Board eigentlich auch sehr einfach ist, 2 zusätzliche Leitungen zu Benutzen.
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: Daten senden geht nur , wenn ich Masse anklemme

Beitrag von WPö »

Alder, was erwartest Du?

Du MUSZT in jedem Fall eine Masseleitung verwenden, damit es einen Potentialunterschied gibt (oder ein Strom fließen kann) für RxD und/oder TxD. Alles, was sonst funktioniert, is reiner Zufall und gerademal an der Zerstörung oder Beschädigung der RS232-Ein- und -Ausgänge vorbeigegangen!

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Antworten