-         

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

Thema: Problem mit UART Kommunikation

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151

    Problem mit UART Kommunikation

    Anzeige

    Hallo
    Mein Controller sollte einen Motor schalten, je nachdem was für ein Zeichen er bekommt, genauer gesagt sollte er jeweils anders reagieren, wenn er ein "a" oder ein "A" empfängt und den Inhalt des nächsten Zeichens, dass er empfängt an eine Variable weitergeben.
    Den Inhalt zweiten zeichens wollte ich als Byte Wert für die PWM auflösung nehmen.

    Das nur zur Erklärung des Programms, das Problem liegt in einem anderen Teil.
    Ich habe den Print-Befehl ein einigen Stellen eingebaut um zu gucken, wo das Programm landet. Zu erst fehlte das ' Print "Lebenszeichen2" ' aus der zweiten Zeile, in diesem Fall konnte ich im (Bascom)-Terminal keine reaktion sehen, auch wenn ich versucht hab irgendein Zeichen zu senden.
    Nach dem einfügen der Zeile bekam ich:

    Lebenszeichen2
    Lebenszeichen
    128
    da war was
    was sich laufend wiederholte. Also muss das senden meiner Nachricht "Lebenszeichen2" das "Usr.rxc" gefüllt haben, das dann auch immer gefüllt blieb/neu gefüllt wurde. Ich hatte angenommen "Usr.rxc" wäre nur zum empfangen, oder war das in meinem Beispiel falsch?

    Der Quellcode ist unten angefügt (ausschnitsweise).
    vielen Dank schon mal, mfG

    Code:
    Do
    Print "Lebenszeichen2"
    
       'uart IN
      If Usr.rxc = 1 Then                                       'Wenn Byte empfangen...
        I = Udr                                                 'Byte aus UART auslesen
        Print "Lebenszeichen"
        Print I
        Select Case i
        Case "A"                                                'Motor 1 vowraerts
          Portc.1 = 0
          Portc.2 = 1
          Mo1 = 1
          Print "Das A ist angekommen"
        Case "a"                                                'Motor 1 rueckwaerts
          Portc.2 = 0
          Portc.1 = 1
          Mo1 = 1
          Print "Das a ist angekommen"
        Case Else
        Print "da war was"
          If Mo1 = 1 Then
             Mo1s = I
             Mo1 = 0
          End If
             If Mo2 = 1 Then
             Mo2s = I
             Mo2 = 0
          End If
             If Mo3 = 1 Then
             Mo3s = I
             Mo3 = 0
          End If
        End Select
      End If
    
    Ocr2 = Mo1s
    
    Loop

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.378
    also in dem Select Case testest du zumindest schonmal auf ein kleines 'i' statt einem großen 'I' (wobei cih nicht weis ob das bei Bascom nen unterschied macht)

    zum anderen entspricht deine 128 dem '€' Zeichen, was auch schon seltsam scheint

    hast du Baudrate und Bit-Konfiguration überprüft?
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151
    Nein, ich denke das mit dem großen und dem kleinen i macht keinen Unterschied, sonst hätte er sich schon beschwerd.
    Da alles andere an Text Fehlerfrei ankommt müsste alles richtig eingestellt sein, den Fehler würde ich eher im Programm vermuten.

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    btw: Die VariablenNamen sind bei Bascom tatsächlich NICHT case-sensitiv. d.h. "i" = "I"

    Wenn du 128 reinkriegst, hat's was mit der Kommunikation.
    Beliebt bei Jung und Alt sind
    1) $CRYSTAL
    2) Fuses, oft in Tateinheit mit 1)
    3) Baudrate

    Check das einfach mit

    PRINT "HELLO, World"

    bevor du das nicht pippifein am Terminal stehen hast, ist alles andere Makulatur
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151
    hmm Zeit sich sorgen zu machen!
    Ich habe erst "Lebenszeichen2" in "Lebenszeichen 1" geändert und dann "64" da stehen gehabt (auch nach einem Reset des Controllers bleiben die Zahlen gleich).

    Ich hab jetzt noch was eingefügt:

    Code:
    Do
    Print "HELLO, World"
    Print "Dubidadubidu kakadu lala"
    Print "Lebenszeichen 1"
    und jetzt erkennt mein PC das USB-->RS232 Kabel als Maus, was zum einen dafür sorgt, dass mein Mauszeiger immer nacht rechts läuft und zum anderen, dass ein Teil von Windows für knapp 2 Minuten einfriert.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151
    Okay, hab den Teil mit "Dubidadubidu kakadu lala" rausgenommen uns jetzt läuft wieder alles wie gewohnt!
    Ich bekomme im Terminal:
    HELLO, World
    Lebenszeichen 1
    Lebenszeichen
    64
    da war was
    Meinungen?

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    naja, 64 ist immerhin knapp dran ( "A" = 65)
    aber knapp daneben ist eben auch vorbei.

    Ich würde einmal die Installation des USB/RS232 Adapters checken.

    Da du einen PC normalerweise auch mit "kakadu lala" eigentlich nicht dazu bringen kannst, einen µC als Maus einzustufen,
    (und wenn, wär's interessant ), gehen da offenbar seltsame Dinge vor.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151
    Ja, ich denke ich werde nochmal alles Nachmessen, aber das klingt nach keinem Fehler, der entsteht, weil irgendeine Lötstelle zu viel oder zu wenig da ist...wobei...das Teil nichts merkt wenn ich etwas vom PC aus sende, sondern erst dann glaubt etwas zu empfangen, wenn es selbst etwas sendet, oder? Na das klingt doch mal nach etwas, was eine Falsche Lötstelle anrichten könnte.

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Der USB/Rs232 Adaptor sollte auch funzen, wenn der µC NICHT daran angesteckt ist.
    Wenn du ihn absteckst und mit einer Drahtbrücke RX/TX ( leitung 2 / 3) überbrückst, müsste am Terminal alles was du auf den Tasten eintippst, am Schirm erscheinen (da kann nix hin werden)
    Dazu isses wurst, welche Baudrate eingestellt ist.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2006
    Beiträge
    151
    Wie's scheint kann ich kein Pieps senden. Da mein Gelöte ein für sich ganz gut aussieht werd ich mal versuchen an einen rechner mit echtem Comport zu kommen und das nochmal zu versuchen, vielleicht liegt es ja an dem USB-->RS232 Adapter.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Protokoll zur UART Kommunikation PC<->AVR
    Von Christoph2 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 25.06.2010, 17:56
  2. Kommunikation über UART - Problem
    Von filth im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 06.09.2009, 18:16
  3. µC Kommunikation via UART?
    Von Killer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 24.12.2007, 03:22
  4. Uart-Kommunikation zwischen µCs
    Von ProgDom im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 20.04.2006, 01:37
  5. Keine UART kommunikation mit ATmega128
    Von Kornhaas.net im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 29.08.2005, 18:21

Berechtigungen

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