Gast
#922527
Hallo Leute, Bin gerad dabei eine RS232 Kommunikation auf einem ATmega128 in GCC zu schreiben. Klappt auch alles wunderbar. Wenn ein Zeichen ankommt, springt er in die ISR, schreibt UDR weg in eine Variable, die ich dann weiterverarbeite. Alles bestens. Jetzt zu dem Problem: Die Daten die empfangen werden sollen, liegen in einer Datei auf dem PC vor (.txt). Da der uC die Daten schon wärend des Empfangs verarbeiten soll, suche ich nach einer Lösung die das Senden des PC´s anhalten kann. Die Lösung, dachte ich, ist in einer Hardware Flußkontrolle zu finden. Also die RTS Leitung des SUB-D Steckers auf T2out des Max232 und einen freien Portpin des Processors auf T2in. Das Terminal Programm (HTerm) visualisiert mir auch das gesetzt sein, oder nicht, richtig. Jetzt aber zu dem erstaunlichem: Ich will beispielsweise drei Byte empfangen... Sende ich sie einzeln, geht die CTS Anzeige im Terminalprogramm nach dem dritten Byte (zeichen) aus, und es werden keine weiteren zeichen gesendet. Wunderbar, genauso wie ich es haben wollte. Jetzt nehme ich eine Datei (.txt) mit 10Byte, und, er sendet und empfängt diese 10Byte!! und erst danach geht die CTS Anzeige im Terminalprogramm aus und es kann nichts mehr gesendet werden. Es kann natürlich sein, bzw. ist so, das die CTS Anzeige halt auch schon nach 3Byte aus geht, nichts desto trotz sendet der PC fröhlich weiter als wäre nichts! Wenn ich dann nachdem ich die drei Byte verarbeitet habe, wieder zurück springe, CTS wieder auf 1 schreibe und die restlichen 7Byte erwarte, passiert natürlich nichts mehr... Jemand irgendeine Idee?? Gruß Ralf