- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Übertragungsfehler bei Rs232 Verbindung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121

    Übertragungsfehler bei Rs232 Verbindung

    Anzeige

    E-Bike
    Nabend,
    ich schicke mit einem Delphi Programm größere Datenmengen an meinen Mega32, den ich mit Bascom programmiert habe und der die Zahlen mit dem Input() Befehl engegen nimmt.
    Dabei kommt es öfters zu Übertragungsfehlern (anscheind je länger das Gerät in Betrieb ist, desto häufiger). Die Daten bestehen aus mehreren 4 stelligen Integer Zahlen. Bei Übertragungsfehlern werden dann manchmal ein oder zwei Stellen gar nicht übertragen, wo dran kann das liegen?
    Ich habe es mit einer Übertragungsgeschwindigkeit von 9600 Baud und 19200 Baud probiert, aber ohne Unterschiede.
    Kann das an meinem USB -> RS232 konverter liegen, oder ist sowas "normal"?
    Wie kann ich diese Übertragungsfehler verhindern, ohne alles doppelt und dreifach übertragen zu müssen?
    Wär toll wenn mir da jemand einen Tipp geben könnte, danke

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Moin,
    was macht der M32 sonst so in der Zeit,
    evtl. hält ihn etwas ab vom Zeichen empfangen ?
    Irgendwelche Interrupts aktiv ?

  3. #3
    Gast
    hmmm, ich hab einen Servo angeschlossen der ja mit einem PWM Signal angesteuert wird. Da wird doch auch ein Interrupt benutzt, das wär natürlich übel

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121
    man, das war natürlich von mir. Werd nachher dann mal ausprobieren, ob das was ändert wenn ich den weg nehme.
    Wenn Servo und UART sich blockieren könnte natürlich auch erklären, warum der Servo manchmal so leichte zuckungen hat.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hallo Static,

    ich wäre sehr an Deinem Quellcode interessiert, weil ich auch einen Versuch unternehmen wollte, einen Mega 8 mit Delphi über die RS232 anzusprechen.

    Darf ich Dich bitten, Dein Delphi-Programm und den Bascom-Code mal hier zu posten? Das würde mir sicher zu einem leichteren Start verhelfen!

    Besten Dank und viele Grüße

    Torsten

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121
    Ich hab mal alles aus meinem Delphi Programm rausgebaut, so das es im Prinzip nur noch ein kleines Terminal Programm ist (ich wollte nicht meinen ganzen Code posten, das ist mir zu peinlich, außerdem hätte er dir ja wahrscheinlich nicht viel genutzt)
    Das Programm ist geschrieben mit Delphi 2005 und benötigt die ComPort Libary http://sourceforge.net/projects/comport/
    um kompiliert werden zu können.
    Wenn du es startest musst du zuerst auf den SetCom Button klicken und deinen Comport einstellen. Danach klickst du auf Open, womit der ComPort geöffnet wird.
    In dem Textfeld über Senden kann man dann etwas eingeben und dann auf Senden drücken, worauf hin die Eingabe über den Comport geschickt wird. Alle gesendeten und empfangenen Daten werden in dem großen Textfeld angezeigt.
    Der Clear Button dient dazu das Textfeld zu leeren, da ich noch keine Möglichkeit gefunden habe (bzw. noch nicht lange genug gesucht habe) es hinzukriegen, dass das Feld automatisch weiter runter scrollt wenn es voll ist...

    Das Bascom Programm würde dir glaub ich nicht viel nutzen. Das ist eigentlich ganz einfach. Man kann mit Input(var) eine Eingabe vom RS232 lesen. Der µC wartet dann so lange bis etwas eingegeben wird und speichert dies dann in die Variable.

    Ich hoffe ich konnte helfen
    Angehängte Dateien Angehängte Dateien

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Hallo Static,

    vielen Dank, damit hast Du mir in jedem Fall weitergeholfen!

    Viele Grüße

    Torsten

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    68
    Beiträge
    77

    Re: Übertragungsfehler bei Rs232 Verbindung

    Zitat Zitat von Static
    Nabend,
    ich schicke mit einem Delphi Programm größere Datenmengen an meinen Mega32, den ich mit Bascom programmiert habe und der die Zahlen mit dem Input() Befehl engegen nimmt.
    Dabei kommt es öfters zu Übertragungsfehlern

    Ich würde mal sagen du müßtest da eine Flussteuerung "wie man das auf Deutsch nennt " einbauen. Also Xon/Xoff oder per Hardware.

    Wenn dein Programm in einer Interruptroutine springt, muss du dem PC mit Xoff sagen, daß er keine Daten senden soll weil der Empfänger nicht bereit ist. Das mußt Du auch immer machen wenn der Buffer voll ist.


    Ich weis nicht wie das in Bascom zu machen ist, kenne mich da nicht so aus.


    Edit:
    Wenn nicht versuche mit der bautrate weiter runter zugehen. So hat der Controller mehr Zeit .

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo ich habe so etwas ähnliches auch mal ausprobiert:

    $regfile = "m16def.dat"
    $crystal = 8000000
    $baud = 19200

    Dim I As Byte

    Do
    If Usr.rxc = 1 Then
    I = Udr
    Select Case I
    Case "H"
    Print "Hallo AVR"
    Case "h"
    Print "hallo avr"
    Case Else
    Print "Unbekannter Befehl"
    End Select
    End If
    Loop
    End

    damit kannste denn auch strings einlesen, während andere dinge gemacht werden, natürlich in einer interupptroutine.
    mfg pebisoft

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.01.2004
    Alter
    36
    Beiträge
    121
    vielen Dank für eure Tips, ich werd dann mal versuchen eine anständige Flussteuerung ein zu bauen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test