www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ETH_M32_EX: Telnet bricht Übertragung ab.


Autor: Kant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, Formum

Wir haben ein ETH_M32_EX mit ATMEGA644 und wollen über Telnet (IP) Daten 
übertragen. Das funktioniert auch schon, allerdings tritt dabei das 
Problem auf, daß die Anzeige plötzlich abbricht. Wir haben uns zum 
Testen eine Routine geschrieben, die 200 mal das ABC zeilenweise 
überträgt, aber zwischen der dreißigsten und siebzigsten Zeile wird 
mitten in der Zeile nichts mehr angezeigt, obwohl der Controller noch 
arbeitet. Manchmal wird am Ende noch die letzte Zeile angezeigt, danach 
kann man wieder Kommandos eingeben.

Wir sind nicht sicher, ob die Datenübertragung abbricht oder die Anzeige 
nicht hinterherkommt (Telnet unter Windows)

Für den Fall, daß die Übertragung einfach zu schnell geht, haben wir am 
Ende der Schleife ein delay eingebaut, aber das hat leider nur eine 
Verlangsamung, keine Verbesserung gebracht.

Weiß vielleicht jemand, woran das liegen könnte und ob man das Problem 
beheben kann? Hier im Forum scheint damit noch nie jemand Probleme 
gehabt zu haben.

Vielen Dank im Voraus, wenn jemand Zeit hat, es auszuprobieren.

Kant


Hier ist unserer Code: (aus cmd.c)
--------------------------------
void command_testausgabe(void)  // hier haben wir ein neues Kommando definiert.
{
    for (int i = 0; i < 200; i++)
        {
            for (int j = 65; j < 65+26; j++)   //gib die Buchstaben "A" bis "Z" aus
                {
                     usart_write("%c", j);
                }   
            usart_write(" %i\r\n", i);
           //_delay_ms(200);   //nachdem eine Zeile fertig ist, warten
        }
}
--------------------------------

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deine Ausgabe geht doch an den UART und nicht über Telnet?!

Sascha

Autor: Kant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jein, eine Telnet-Kommunikation ist auch über IP möglich, weil der 
Microcontroller eine Kommunikation mit der RS232-Schnittstelle über 
Telnet zur verfügung stellt. Das funktioniert auch schon, es treten nur 
die o.g. Störungen auf, die noch eliminiert werden müssen.

Kant

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kant schrieb:
> Jein, eine Telnet-Kommunikation ist auch über IP möglich

Ja aber in Deinm Codebeispiel steht
>usart_write("%c", j);

Also hat Sascha darauf geschlossen daß Du serielle Kommunikation nutzt, 
zumal das für Telnet ja auch nahe liegt.
Falls das der Fall ist, schreibe Dir doch mal ein einfaches 
Leseprogramm, das die serielle Schnittstelle ausliest, dann weisst Du 
daß dein Problem nicht an Telnet liegen kann.

Ggf sollte es auch im Internet Programme geben mit denen Du eine 
serialle Kommuniaktion mithören kannst. Die kann man auch dazu verwenden 
auf einer Schnittstelle nur zu lesen.

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kant,

also wenn dein usart_write("%c", j) über telnet raus geht sehe ich das 
Problem das dort ja neue TCP-Pakete erzeugt und gesendet werden. Solange 
sich das Programm in der Ausgabeschleife befindet werden aber keine 
eingehenden ACK-Pakete mehr bearbeitet, also merkst du nicht wann die 
Gegenseite (PC) keine Daten mehr aufnehmen kann. Oder der ENC28J60 hat 
ein Problem mit dem Puffer wenn die eingehenden Pakete nicht ausgelesen 
werden.
Also: beim senden dafür sorgen, das auch der IP-Stack gelegentlich noch 
bedient wird.
Kannst ja auch mal mit wireshark schauen ob noch Pakete rausgehen und 
vom PC ACK-Pakete ankommen.

Sascha

Autor: Kant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, und Danke für die Antworten. Ich denke. Sascha Webers Ansatz wird 
wohl der richtige sein. Wir haben jetzt einen anderen Weg gefunden, der 
das Problem löst, und zwar haben wir einen primitiven TCP-Dämon 
geschrieben, über den wir auch größere Mengen an dynamisch generierten 
Daten senden können. Ich habe bisher noch keine Anleitung dazu gefunden, 
wenn also Interesse besteht, dann schreibe ich dazu mal was in einem 
neuen Thread.

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.