µC bleibt stehen sobald per PC ein Comport geöffnet wird, Bootloader schuld?

Gast #3246538
Lesenswert?
• ▲
▼
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
Gast #3246576
Lesenswert?
• ▲
▼
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?
Gast #3246837
Lesenswert?
• ▲
▼
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?
Gast #3246928
Lesenswert?
• ▲
▼
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!!!
Gast #3247916
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.