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


von Billy (Gast)


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

von Benedikt K. (benedikt)


Lesenswert?

Handshaking

von Billy (Gast)


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

von Benedikt K. (benedikt)


Lesenswert?

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

von Billy (Gast)


Lesenswert?

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

von Peter D. (peda)


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

von Billy (Gast)


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

von Karl H. (kbuchegg)


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.

von Billy (Gast)


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

von Karl H. (kbuchegg)


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?

von Johannes M. (johnny-m)


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.

von Karl H. (kbuchegg)


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

von Billy (Gast)


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

von Johannes M. (johnny-m)


Lesenswert?

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

von Karl H. (kbuchegg)


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.

von Billy (Gast)


Lesenswert?

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

MFG
Billy

von Gast (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.