-         

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

Thema: Controller verschluckt 4. Zeichen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2007
    Beiträge
    18

    Controller verschluckt 4. Zeichen

    Anzeige

    Hallo Zusammen,
    wir haben das rn-Board mit dem 2560 Controller.

    Wir haben die RN-Control per USB (UART) mit dem PC verbunden und auf dem PC ein Terminal gestartet.
    Zu Tests habe ich ein Bascom Programm geschrieben, welches alle ankommenden Zeichen an der UART-Schnittstelle sofort wieder rauschickt.

    Sendet man mit dem Terminal zum Beispiel "Test" an den Controler, so erwiedert dieser auch sämtliche Zeichen und sendet "Test" zurück.
    Bei einem Wort mit 5 Buchstaben z.B. "Start" wird das 4. Zeichen verschluckt und nur "Stat" zurück an das Terminal gesendet.

    Wenn ich das Terminal innerhalb des PCs mit 2 Commports verbinde, dann klappt das prima.

    Vielleicht hat jemand einen Tip woran das liegen könnte ?

    Vielen Dank im vorraus


    Folgender Programm Code befindet sich auf dem Atmel:

    Code:
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
    
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    
    
    'Config Scl = Portd.0                                        'Ports fuer IIC-Bus
    'Config Sda = Portd.1
    
    Sound Portg.5 , 400 , 450                                   'BEEP
    Sound Portg.5 , 400 , 250                                   'BEEP
    Sound Portg.5 , 400 , 450                                   'BEEP
    
    Config Pind.5 = Output
    Led Alias Portd.5
    
    Config Pine.5 = Input
    USB Alias Pine.5                                            'Ist 1 wenn USB angeschlossen
    
    
    'Usb Schnittstelle UART initialisierung
    Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Open "com4:" For Binary As #4                               'USB Buchse
    
    
    'Initialisierung LCD
    Config Pinf.6 = Output
    Lcd_rw Alias Portf.6
    Lcd_rw = 0
    
    Config Lcd = 20 * 4a , Chipset = Ks077
    Config Lcdpin = Pin , Db4 = Portf.3 , Db5 = Portf.2 , Db6 = Portf.1 , Db7 = Portf.0 , E = Portf.5 , Rs = Portf.7
    Config Lcdbus = 4
    
    Initlcd
    
    'Ansteuerung LCD
       Cls
       Locate 1 , 1                                             'Cursor auf 1 Zeile, 1 Spalte
       Lcd "Test-Platine"
       Print #4 ,"Test-Platine"
    
       Locate 2 , 1
       Lcd "Initialisierung"
       Print #4 ,"Initialisierung"
    
       Locate 3 , 1
       Lcd "Ausgabe"
       Print #4 ,"Initialisierung"
    
       Locate 4 , 1
       Lcd ""
    
    
    Dim B As Byte
    Dim L As Integer
    L = 1
    'Schleife Tastatureingabe replay
    
    Do
       B = Inkey(#4)
       'Waitms 500
    
    If B <> 0 Then
       Print #4 , Chr(b)
       Locate 4 , L
       Lcd Chr(b)
       L = L + 1
    End If
    
    Loop
    
    End

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    ....Wenn ich das Terminal innerhalb des PCs mit 2 Commports verbinde, dann klappt das prima. ...

    wofür soll das denn gut sein he...lol...damit findest du nicht den fehler innerhalb des pc.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2007
    Beiträge
    18
    Die Verbindung der 2 Commports war nur zum Testen.Ob das Terminal die Daten korrekt sendet und empfängt oder der Fehler schon im Terminal liegt... ALso virtuelle Verbindung im Terminal und beide Comports des PCs mit einem COM-Kabel verbunden...
    Dazu habe ich das Terminal dann 2x gestartet und jeweils mit einem Comport vorbunden, sozusagen als Chat

    Das Problem ist aber beim Microcontroller.
    Ich sende mit dem Terminal ein Wort zum COntroler.
    Dieser empfängt das und soll es 1zu1 wieder zurück schicken.
    Leider kommt dann der 4. Buchstabe des Wortes nicht an, also:
    Start -> Stat

    Komischerweise funktioniert ein 4 zeichen Wort Problemlos
    Test -> Test

    Habe ich einen Fehler im Bascom oder wo liegt denn mein Fehler ?
    Ich verstehe das nicht

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    30
    Beiträge
    270
    Hm, also 16MHz und 9600 Baud...
    klingt eigentlich gut: 0,8% fehler sollte eigentlich noch gehen. (Man sagt maximal 1%)
    siehe hier: http://www.mikrocontroller.net/artic...Tutorial:_UART

    Ansonsten kannst du es nur mit nem krummen Quarz probieren. Dadurch geht die Fehlerrate runter (nicht immer aber öffters)

    Ansonsten: Was zeitg er denn auf dem LCD an? Start oder auch nur Stat?

    Ach ja: und was passiert denn wenn du ein längeres Wort mit z.B. 12 Zeiche oder so sendest? fehlt dann immer jeder 4. Buchstabe oder wie schauts dann so aus?
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2007
    Beiträge
    18
    Auf dem LCD wird auch nur Stat angezeigt.
    Irgendwo wird also mein 4. Zeichen verschluckt.


    Der Text, welcher beim Starten des Programms gesendet wird:
    Test-Platine
    Initialisierung
    Initialisierung
    Kommt auch ohne Fehler im Terminal und auf dem LCD-Display an. Es liegt also wohl Tatsächlich am Empfangen und Weiterverarbeiten...

    Kann eine Änderung des Quarzes den gewünschten Erflog bringen ?

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.05.2007
    Ort
    Mannheim
    Alter
    30
    Beiträge
    270
    Okay, also ich sehe grad das ich mich verrechnet hatte:
    9600 Baud und 16MHz ergeben laud Bascom berechnung 0,16% Fehler. Also absolut top.

    Also ich vermute das sich dein Controller dabei etwas "verschluckt" durch das senden und wieder empfangen.
    Schreib deine Schleife mal (nur zum testen) folgender maßen (der rest gleich wie oben):

    PS: Die Variable L kannst du dir auch sparen

    Code:
    Do 
       B = Inkey(#4) 
       'Waitms 500 
    
    If B <> 0 Then 
       Locate 4 , L 
       Lcd Chr(b) 
       L = L + 1 
    End If 
    
    Loop
    So und dann sag mal was dein LCD so ausspuckt
    Wer aufhört besser zu werden, hat aufgehört gut zu sein

    Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    wie sieht es eigentlich mit 6-stelligen Texten aus? kommt dann statt "Start2" "Sta2"???
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2007
    Beiträge
    18
    Hallo, leider konnte ich das erst jetzt testen...

    Mit dem Code von robodriver wird das Wort "Start" nun korrekt auf dem Display angezeigt.
    Wenn ich aber das Wort "Starte" eingeben dann wird auch hier nur "stare" angezeigt.
    Das Problem hat sich jetzt also um ein Zeichen verschoben...

    Vielen Dank

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2007
    Ort
    Kornwestheim (kWh)
    Beiträge
    1.118
    wie sieht es bei deinem alten code aus?

    ich hätte nämlich gerade auf eine zu klein deklarierte Variable getippt, kenn mich aber in dem bereich senden/empfangen noch nicht so gut aus....
    Gruß, AlKi

    Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
    ==> UMPROGRAMMIEREN!

    Kubuntu

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2007
    Beiträge
    18
    Wenn man bei der alten Version ein Wort mit 5 Buchstaben sendet "Start2", dann erhält man als Ausgabe auf dem Display und dem Terminal "Stat2"

    Er verschluckt also immer das 4. Zeichen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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