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
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
Wo ist da jetzt das Problem ? Sobald dein Puffer voll wird, setzt du einen beliebigen Portpin der mit CTS verbunden ist.
Bitte Benedikt sagt mir wie ich das Z.b mit dem Pin1 des PortA machen kann. Bitte MFG Billy
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
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
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.
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
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?
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.
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
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
Schau mal z.B. bei Wikipedia unter "Datenflusskontrolle" und "XON/XOFF". Da steht eigentlich zunächst mal alles Wissenswerte.
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.
Hallo karl, ich bin dafür mit deine strategie. ich melde mich jetzt weil seite letze mal ware ich krank MFG Billy
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.