Moin, moin, hätte da mal gerne ein Problem: Ein ATMega soll über RS232 mit Handshake Daten vom PC empfangen, Intel-Hex-File, diesen aufbereiten und an einen EPROM-Simulator PEPS(Conitec) übergeben. Mit dieser Zeile Config Serialin = Buffered , Size = 10 , Bytematch = 13 , Cts = Pinb.3 , Rts = Pinb.4 , Threshold_full = 6 , Threshold_empty = 2 aktiviere ich die Schnittstelle und eine ISR wertet das Steuerzeichen CR (13) aus. Das klappt auch alles, sobald der Buffer das 6. Zeichen empfangen hat, wird RTS entsprechend gesetzt und stoppt die Datenübertragung - soweit alles OK. Wenn ich dann den Buffer lösche sollte eigendlich das RTS-Signal wieder zurückgenommen werden damit die nächsten Bytes empfangen werden können - soweit die Theorie - tut es aber nicht ???? Als Notlösung steuer ich das RTS-Signal derzeit seperat, das halte ich aber für suboptimal. Hat jemand eine Erklärung, Lösung ? Gruß Werner PS: Das ist das reine Testprogramm für die V24
Die Subroutine "serial0charmatch" muß mit einem Return zurückkommen: Zitat aus der Hilfe: You must include the label yourself in your code and end it with a return. Du mußt noch einen 2.Puffer deklarieren, nämlich Serialout. In order to work with CTS-RTS, you need both a serial input buffer, and a serial output buffer. So use both CONFIG SERIALIN and CONFIG SERIALOUT to specify the buffers. MfG Paul
Werner Römer schrieb: > Hat jemand eine Erklärung, Lösung ? Clear Serialin löscht nur den Puffer, übersieht aber RTS zu behandeln, das wäre 'ne Sache für den Support. Eine Lösung: den Puffer normal auslesen und damit leeren.
Danke für die schnellen Antworten bei meinen Testläufen war es egal ob die Ausgabe gepuffert ist oder nicht (im Quelltext ausmaskiert) und ein Return hilft leider auch nicht. Da man die "Systemvariablen" nicht direkt bearbeiten soll, habe ich die Daten per Overlay (im Testprogramm nicht dargestellt) ausgewertet und dann mit clear serialin den Buffer gelöscht (hier, der Einfachhalber lediglich eine Zeitschleife zum löschen) ... Gibt es noch eine andere Möglichkeit ihn zu leeren ? Gruß Werner
Werner Römer schrieb: > Gibt es noch eine andere Möglichkeit ihn zu leeren ? Das hab' ich berets beantwortet, einfach auslesen, dann klappt's auch mit dem automatischen Rücksetzen des RTS.
moin, moin, habe das Problem zum Support geschickt, es scheint ein Bug zu sein Zitat: Thanks for reporting the problem. User MWS reported this to me yesterday and i have fixed it for the next update/fix. I see that you have Size = 10 which is a bit small imo? While you use cts/rts, i would use a bigger buffer so you can read a whole line at once using INPUT. Zitat Ende: So werde ich bis zum nächsten Update mit der "Krücke" (RTS manuell löschen) leben müssen ... Das er über meinen kleinen Buffer mit 10Zeichen die Stirn runzelt, ist mir schon klar, aber ich hatte keine Lust 80Zeichen zu Tippen um die RTS-Steuerung zu testen ;-)) Für den Eingangsbuffer habe ich 80Zeichen vorgesehen damit eine komplette Zeile Intel_Hex rein geht. der Ausgangsbuffer ist nicht kritisch, hier werden nur Menü und Statusmeldungen zurückgegeben ... Nochmals Danke für Eure Anregungen, bis neulich Gruß Werner
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.