mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik delay zw. UART-Ausgaben fehlt?


Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo!

Als Terminalprogramm nutze ich bisher erfolgreich minicom. Alternativ 
habe ich per Win-PC Hypertrm genutzt.
                 uart_puts("qwe");
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     uart_puts("rtz\n");

Dann müsste die zweite Hälfte der Ausgabe doch verzögert kommen. Kommt 
aber nicht! Mein Terminalprogramm erzeugt die Pause VOR den Ausgaben, 
die dann zeitgleich kommen! GRRR

Bitte um Hilfe!

ggf hilft der ganze code? (ATMEGA 32, AVRStudio, Winavr)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P schrieb:

> Dann müsste die zweite Hälfte der Ausgabe doch verzögert kommen.

Nicht unbedingt.
Kommt drauf an, welche und wieviele Pufferstufen dazwischen sind, die 
erst mal abwarten bis ein \n daherkommt, ehe sie dann die 
darunterliegenden Ausgabeschichten aktivieren.

> ggf hilft der ganze code? (ATMEGA 32, AVRStudio, Winavr)

Ist schon mal ein Anfang.
Aber such mal die Einstellungen deines Terminalprogramms ab, ob es dort 
sowas wie 'Zeilenpuffer' gibt, die abgeschaltet werden können.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mein Terminalprogramm erzeugt die Pause VOR den Ausgaben,
>die dann zeitgleich kommen!

Das kenn ich. Das liegt wohl an dem PC-Treiber. Der ist nicht für 
einzelne Bytes gedacht. Guck dir das mal mit nem Oszi an, das kommt 
bestimmt korrekt aus dem µC.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Lipinsky schrieb:
> Das liegt wohl an dem PC-Treiber.

ganz bestimmt nicht, für den Treiber sind es alles bytes und die werden 
auch zur not alle einzeln durchgeschoben.

Vermutlich warten das Terminalprogramm auf das \n

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder deine _delay_ms() funktioniert nicht. Lies mal unter Warteschleifen 
im AVR-GCC-Tutorial den Hinweis zur avr-libc 1.7.0

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
test mal bitte mit
  uart_puts("qwe\n");
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     _delay_ms(200);
     uart_puts("rtz\n");

Autor: Schorsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei telnet würde ich jetzt sagen: Schick nach dem ersten Wort und vor 
dem Delay ein "Go Ahead" (0xFF 0xF9), aber ob minicom bzw. Hyperterminal 
auf Telnet-Sequenzen reagieren?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.