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


von Kant (Gast)


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)
--------------------------------
1
void command_testausgabe(void)  // hier haben wir ein neues Kommando definiert.
2
{
3
    for (int i = 0; i < 200; i++)
4
        {
5
            for (int j = 65; j < 65+26; j++)   //gib die Buchstaben "A" bis "Z" aus
6
                {
7
                     usart_write("%c", j);
8
                }   
9
            usart_write(" %i\r\n", i);
10
           //_delay_ms(200);   //nachdem eine Zeile fertig ist, warten
11
        }
12
}
--------------------------------

von Sascha W. (sascha-w)


Lesenswert?

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

Sascha

von Kant (Gast)


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

von U.R. Schmitt (Gast)


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.

von Sascha W. (sascha-w)


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

von Kant (Gast)


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.

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
Noch kein Account? Hier anmelden.