Hallo Leute :) Wie schon im Betreff beschrieben. Ich benutze einen ATMega88 mit Bascom. Er tut nix anderes als einen String über uart(emuliert über usb) an den Pc zu senden, das klappt wunderbar, Hterm meldet den korrekten string. Doch wenn ich über Putty (Oder ein eigenes Programm in c++ geschrieben) eben jenen Comport öffne bleibt der Controller stehen, bzw sendet noch den string zuende der eben geschickt wird und pausiert dann die "loop forever" bis der Port geschlossen wird. Ich hoffe jemand weis was, danke schonmal im Vorraus :) Gruß Sanchez
Was ist das für eine Loop und was ist ihre Abbruchbedingung? Inkompatible Flusskontroll- Einstellungen?
Hallo, schau mal ob den uC sensibel ist auf die Stellung der Handshake-Leitungen RTS und/oder DTR Das Verhalten kannst du einfach mit HTERM ausprobieren! Gruss
Sanchez schrieb: > eben jenen Comport öffne Was genau meinst du mit öffnen? Schon bei Openfile/Createfile oder dann wenn du was sendest? Ich würde mal in dem Moment die Statussignale, v.a. RTS/CTS, beobachten. So eine kleine Box mit LEDs dafür ist sehr hilfreich. Gruss Reinhard
Sanchez schrieb: > Doch wenn ich über Putty (Oder ein eigenes Programm in c++ geschrieben) > eben jenen Comport öffne bleibt der Controller stehen, bzw sendet noch > den string zuende der eben geschickt wird und pausiert dann die "loop > forever" bis der Port geschlossen wird. Dann steht zu vermuten, dass in Putty der Handshake eingeschaltet ist. Benutzt dein µC-Programm vielleicht Softwarehandshake und bekommt von Putty ein XOff?
Tatsächlich! Danke schonmal für den Tip Er bleibt stehen sobald ich bei Hterm DTR einschalte, aber was erwartet der µC jetzt? bzw. wenns programm anhält, wie soll ich da ne Kommunikation realisieren?
Hallo, du hast grundsätzlich 3 anerkannte Möglichkeiten 1.) eine RS232 Kommunikation ohne Handshake oder 2.) eine RS232 Kommunikation mit Handshake (mit RTS/CTS und DTR/DSR) 3.) eine Kommunikation mit Software-Handshake mittels XON/XOFF In allen Fällen müssen deine Programme (auf PC-Seite und uC-Seite) das berücksichtigen und das gleiche Verhalten an den Tag legen. Mischen (das hast du jetzt) funktioniert nicht. Mach dich schlau wie RTS/CTS und DTR/DSR arbeiten http://de.wikipedia.org/wiki/RS232 (Tabelle ganz unten) und passe deine Programme an!!!
Habe nun rausgefunden das der µC einen Reset durchführt sobald DTR aktiv wird. Werde nun versuchen das ganze mit software handshake zu lösen und danke nochmal :)
Sanchez schrieb: > Habe nun rausgefunden das der µC einen Reset durchführt sobald DTR aktiv > wird. Dann pass doch Dein Programm so an, dass das nicht passiert. Oder ist es nicht Dein Programm? Ich würde vielleicht auf einen nicht durch eine ISR abgefangenen Interrupt tippen. Ist aber nur so eine Vermutung.
Sanchez schrieb: > Habe nun rausgefunden das der µC einen Reset durchführt sobald DTR aktiv > wird. Das kann ja Absicht sein, irgendwie muss man den µC anhalten bzw. in den Bootloader schicken können, sonst könnte man ihn nicht programmieren. Also Schalter oder Jumper oder ein externes Signal. Wenn du die Software nicht ändern kannst, einfach die DTR-Leitung durch einen Schalter unterbrechen. Gruss Reinhard
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.