-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: RS 232 Kommunikationsproblem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2009
    Beiträge
    10

    RS 232 Kommunikationsproblem

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hey,

    ich habe ein Problem bei der Kommunikation von zwei Mikrocontrollern (einem Mega128 und einem Mega32). Dabei sendet der Mega128 dem Mega32 einen Befehl, dass dieser eine Led einschalten soll. Das Senden des Befehles vom Mega128 funktioniert, leider reagiert der Mega 32 nicht darauf. Die Beschaltung der beiden Megas ist richtig, also müsste es ein Software-Problem sein.
    Könnte sich vielleicht jemand die beiden Quelltexte mal anschaun und sagen worin der Fehler steckt.
    Vielen Dank im voraus.


    Quelltext des Empfängers(Mega32):
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    Dim I As Byte
    
    Config Pinc.0 = Output
    Led Alias Portc.0
    
    On Urxc Onrxd
    Enable Urxc
    Enable Interrupts
    
    Main:
    Do
    
    
    Loop
    
    End
    
    
    OnRxD:
      I = Udr                                                   
      If I = "s" Then                                          
        Led = 1                                                
      else
        Led = 0
      endif
    Return
    
    
    
    Quelltext des Senders(Mega128):
    
    $regfile = "m128def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 19200
    $baud1 = 9600
    
    Open "com2:" For Binary As #2
    
    
    '****SRF05****
    Declare Sub Entfernungsmessung()
    
    Config Pinb.7 = Output
           Portb.7 = 0
    
    Dim Zeitmessung As Word
    Dim Entfernung As Word
    
    
    Enable Interrupts
    
    
    Main:
    Do
    
      Call Entfernungsmessung()
    
    Loop
    
    End
    
    
    
    Sub Entfernungsmessung()
    
      Portb.7 = 0
      Pulseout Portb , 7 , 40
      Pulsein Zeitmessung , Pinb , 7 , 1
      Zeitmessung = Zeitmessung * 10
      Entfernung = Zeitmessung / 58
      If Entfernung < 10 Then
                            Print #2 , "s"
                         Else
                            Print #2 , "w"
      End If
    End Sub
    Code-Tags eingefügt (PicNick, Mod)


  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    pack deinen code mal in die [ c o d e] [ / c o d e] tags, dann wird der auch net mit smilies verkrüppelt!

    schau dir mal die baudraten für deinen M128 an! hab das gefühl du hast da iwie was net hinhaut, vielleicht haste auch die ausgänge der beiden UART schnittstellen verwechselt, hast du den TxD des M128 auch an den RxD Pin des M32 angeschlossen und umgekehrt ?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112

    Re: RS 232 Kommunikationsproblem

    Zitat Zitat von Romeo009
    OnRxD:
    I = Udr
    If I = "s" Then
    Die Bedingung wird so nie erfüllt sein, weil I als Byte definiert ist. Ändere entweder den Typ von I und lese einen String ein oder frage auf den ASCII Code von "s" ab.

    Gruß

    Rolf

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    ach stimmt garnicht gesehn ... nein lass ie deklaration bloß wie sie iss, sonst würde i = udr garkein sinn machen, du musst nur dein "s" mit einfachen hochkomma schreiben 's', findest du direkt neben der entertaste beim #

    und schmeiss das mit dem print beim m128 raus!

    mach einfach udr1 = 's' bzw. udr1 = 'w'

    und davor jeweils eine warteschleife, bis das UDRE flag wieer 1 wird, damit weist du dass du senden darfst

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.418
    hast du eventuel noch nen Quarz drann der vileicht falsch ist?

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2009
    Beiträge
    10
    also das mit dem udr1 funktioniert bei Bascom nicht und ein string muss in Bascom eigentlich doch immer zwischen zwei doppelten hochkommas stehn, weil es sonst ja nur ne anmerkung ist und keinen einfluss auf das programm hat

    nochmal zu der frage von Thomas$, an jedem mikrocontroller hängt jeweils ein quarz mit 16 mhz
    die beiden mikrocontroller sind auch 100%ig richtig verkabelt, also RxD an Txd ....

    aber ich verstehe einfach nicht, warum die kommunikation nich funktioniert

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ein Tip:

    If I = "s" Then

    schreibst du als

    If I = 115 Then

    "115" ist der ascii-Code von "s"
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    28.02.2009
    Beiträge
    10
    jo, das is auch ne möglichkeit, werde ich mal ausprobieren

    aber wie mache ich das dann, wenn ich mehrere buchstaben und zahlen habe

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    dann musst du die bytes in einer schleife empfangen und in einen puffer schreiben, den du anschliessend auswertest 's' statt "s" reicht völlig und man braucht keine ascii tabelle zur hand haben

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Ceos
    's' statt "s" reicht völlig und man braucht keine ascii tabelle zur hand haben
    's' geht bei Bascom nicht, weil das erste ' einen Kommentar beginnt.
    Du kannst natürlich auf ASC("s") abfragen, dann brauchst du auch keine Tabelle zu haben.

    Gruß

    Rolf

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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