www.mikrocontroller.net

Forum: Compiler & IDEs Daten verlust wie kann ich lösen?


Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo leute,
ich habe ein Problem wenn ich die daten vom PC zu Mikrocontroller 
übertragen will. wenn mein Puffer voll ist und die PC noch daten 
schickt, geht einigen verloren. ich weisse nicht wie ich dieses Problem 
lösen kann. wie kann ich zu dem PC sagen das er muss daten aüfhören zu 
senden wenn der Puffer voll ist?
MFG
Billy

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Handshaking

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich versuche ja mit dem Harware Handshaking das Problem zu lösen aber 
mit dem RS232 ich weisse nicht wie ich den RTS/CTS pin ansprechen kann. 
oder ist es uberhaupt ansprechbar? (ich benutze die ATMEGA16 STK500 
Platine)
MFG
Billy

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist da jetzt das Problem ?
Sobald dein Puffer voll wird, setzt du einen beliebigen Portpin der mit 
CTS verbunden ist.

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte Benedikt sagt mir wie ich das Z.b mit dem Pin1 des PortA machen 
kann.
Bitte
MFG
Billy

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit einem Protokoll:

Der PC schickt soviel Bytes, wie in Deinen SRAM-Puffer des AVR passen 
und wartet dann auf ein Zeichen zum Senden des nächsten Blocks.


Alternativ kann man auch die Baudrate soweit runtersetzen, daß der AVR 
mit der Bearbeitung hinterher kommt, während im SRAM schon die nächsten 
Bytes gepuffert werden.


Peter

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann jemand mir sagen wie ich kann einen beliebigen Portpin mit der CTS 
verbinden. wenn jemand schon etwa so gemacht hat bitte zeigt mir den weg 
wie ich mein problem lösen kann. weil zeit eine weile versuche ich das 
CTS/RTS meiner Platine (STK500 ATMEGA16) aber ich komme nicht zu recht.
MFG
Billy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise hast du auf deinem MAX232 noch 2 Kanäle
frei. Einen zum Empfangen und einen zum Senden.

Du brauchst den Sendekanal.

Den verbindest du mit der CTS Leitung auf dem RS232 Kabel.
Den zugehörigen Ansteuereingang legst du auf irgendeinen
Pin an deinem Mega16, der noch frei ist. Und mit diesem
Pin steuerst du dann die CTS Leitung, die zum PC führt.

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meiner Platine hat 2 RS232 schnittstelle eine RS232 CTRL und eine RS232 
SPARE
und keine MAX232 kannst du mir sagen wie ich mit dieser RS232 machen um 
dieser problem zu lösen Karl.
MFG
Billy

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann wirst du wohl einen RS232 Treiber nachrüsten müssen.
Irgendwie musst du die 0/5V von deinem µC auf die
geforderten +/- 12V auf der RS232 umsetzen muessen.

Wenn du keinen MAX232 auf der Platine hast, wie wird
denn bei den anderen RS232 Leitungen die Umsetzung
von 0/5V auf +/- 12V gemacht?
Das duplizierst du und baust die Treiberstufe einfach noch
mal auf und führst einen normalen PortPin da drüber
auf die CTS Leitung.

Ist das wirklich so schwer?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem STK500 geht das so direkt nicht, weil bei der seriellen 
Schnittstelle kein Hardware-Handshaking vorgesehen ist. Die beiden 
anderen Kanäle des MAX202 auf dem Board sind durch die 
Programmierschnittstelle belegt und am Stecker sind die Pins bereits 
untereinander verbunden. Da muss man, wenn man Hardware-Handshaking 
nutzen will, ein Zusatzplatinchen zusammenlöten und auf die 
on-board-RS232 verzichten.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes M. wrote:

> Programmierschnittstelle belegt und am Stecker sind die Pins bereits
> untereinander verbunden.

Ah. Das ist natürlich schlecht.

> Da muss man, wenn man Hardware-Handshaking
> nutzen will, ein Zusatzplatinchen zusammenlöten und auf die
> on-board-RS232 verzichten.

Oder Strategie ändern:
* Software Handshake (falls die Art der Daten das zulässt)
* eigenes Protokoll

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie sieht aus mit dem software handshake um dieser problem zu lösen. 
wenn das einfach ist als Hardware Handshake  Bitte sagen sie mir wie es 
geht
MFG
Billy

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal z.B. bei Wikipedia unter "Datenflusskontrolle" und "XON/XOFF". 
Da steht eigentlich zunächst mal alles Wissenswerte.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit einem Strategiewechsel bei dir?
Wir liefern dir die Stichworte und du versuchst
selbst im Web Informationen zu diesen Stichworten
zu finden.

Autor: Billy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo karl, ich bin dafür mit deine strategie. ich melde mich jetzt weil 
seite letze mal ware ich krank

MFG
Billy

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Software-Handshake könnte auch folgendermaßen aussehen :
Für jedes Byte, welches Du vom PC aus sendest, erwartest Du ein ein ECHO 
vom µC zurück. Dieses ECHO ist im einfachsten bzw. besten Fall das 
gesendete Byte (so kann zusätzlich eine korrekte Übertragung geprüft 
werden). Der µC überwacht nun intern seinen Buffer und verzögert das 
ECHO-Senden bei vollem, noch nicht abgearbeiteten Buffer, d.h. hierdurch 
wird der PC automatisch in einen Wartezustand gebracht solange kein ECHO 
vom µC kommt. Es sollten nun keine Daten mehr verloren gehen, der 
einzige Nachteil der auftreten kann, sind spontane nicht vorhersehbare 
Wartezyklen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.