Forum: Mikrocontroller und Digitale Elektronik Webclient mit Atmega8 & ENC28J60


von Volker B. (sitekick)


Lesenswert?

Hallo @all,

zunächst mal guten Tag. Ich bin neu hier und sehr begeistert was sich 
mit den Prozessoren der Atmega-Serie so alles anstellen lässt.
Natürlich habe ich auch eine Idee und dazu gleich mal eine Frage.

Ausgangssituation: Ich habe eine funktionierende Schaltung mit einem 
Atmega8 der über SPI mit dem ENC28J60 zusammenspielt. Das ganze hängt 
über Magjack am Ethernet und funktioniert soweit ganz gut. Natürlich 
habe ich auch die Toolchain und diese ganzen Sachen am Laufen.

Mein Ziel ist es auf diesem Chip eine Art Mini-Webclient zu 
installieren, welcher mir eine fixe Adresse in regelmäßigen Abständen 
abruft und den Inhalt (Text maximal 40 Zeichen) auf einem LCD ausgibt. 
Mit LCD meine ich 2x20 Zeichen, nicht Dotmatrix oder sowas.

Solche Ideen wurden in 2-3 Beiträgen bereits angesprochen aber soweit 
ich weiß nie wirklich gelöst.

Ich kann mir vorstellen dass es mit der vielzitierten uIP Lösung von 
Adam Dunkels funktionieren müsste, habe aber auch gelesen dass diese für 
den Atmega abgeändert werden sollte. Den Port selbst habe ich nicht 
gefunden.

Mich interessiert eure Meinung dazu, bevor ich mich hier weiter 
reinkniehe.

Vielen Dank schon mal.
Volker

von Frank aus Köln (Gast)


Lesenswert?

Hallo Volker,

sollte eigentlich nichts dagegen sprechen.

Du startest per TCP eine verbindung zum server mit einem SYN Request.
Dann kommt vom Server ein ACK zurück und dann forderst Du mit "GET 
/dieSeitedieduhabenwillst" die seite an.
Jetzt musst du nur noch die Textinformation aus dem Paket rausfiltern 
und an dein Display schicken.
Evtl. muss Du noch abschliessend auf ein FIN Paket antworten, oder 
selber ein FIN Paket losschicken.

Wenn Du bereits den ENC am laufen hast mit TCP, dann brauchst Du deine 
software nur noch ein bisschen zu erweitern.
Einen anderen TCP/IP Stack brauchst Du dafür dann nicht.
Wenn Du das testen willst dann logge mal den Datenverkehr mit Wireshark 
mit, wenn Du die Seite vom PC aus abrufst.

Gruß

Frank

von Volker B. (sitekick)


Lesenswert?

Vielen Dank für die Schnelle Antwort. DHCP hätte ich dann aber noch 
nicht, oder?

Grüße vom Bodensee
Volker

von Mike R. (thesealion)


Lesenswert?

Volker Biberger wrote:
> DHCP hätte ich dann aber noch nicht, oder?

Wenn der ENC28J60 schon läuft, dann müßte er doch auch eine IP haben. 
Und wenn er die hat, läuft entweder ein DHCP-Client oder sie ist fest 
vergeben.


von Frank aus Köln (Gast)


Lesenswert?

Hallo Volker,

entschuldige, aber die frage verstehe ich jetzt nicht.
Normalerweise wird der DHCP request vom Webserver beim Starten der 
Applikation einmal ausgeführt und dann bekommt deine Schaltung eine IP 
und diverse andere nützliche Informationen mitgeteilt.
Im übrigen läuft DHCP über das UDP Protokoll, d.h. da musst du 
eigentlich gar nicht dran um webseiten abzurufen. Da TCP Protokoll.

Gruß

Frank

von Volker B. (sitekick)


Lesenswert?

Ah. Mist. Erst denken dann posten (werde ich in zukunft machen). Ich 
hätte gerne einen DHCP-Client drauf und möchte gerne wissen ob ich das 
uip einfach nehmen kann, ober ob ich für DHCP uip gar nicht brauche.

Tschuldigung, hatte das mit dem DHCP vergessen zu schreiben. Derzeit 
nutze ich eine feste IP-Adresse und werde damit weiter herumprobieren.

Danke für die Antworten
Volker

von Frank aus Köln (Gast)


Lesenswert?

Hallo Volker,

so genau kenne ich den UIP Stack nicht, aber mir hat aus diesen Thread

Beitrag "ENC28J60 Basics[Beispielprogramm in AVRGCC für atmega8]"

der code von Dirk Broßwick weitergeholfen. Die Informationen in der 
Wikipedia sind diesbezüglich etwas dürftig. Ich würde aber unbedingt 
empfehlen einen DHCP Server auf einen PC zu installieren und mir dann 
mit Wireshark den Datenverkehr zwichen ENC und PC anschauen. Sonst sucht 
man sich nämlich einen Wolf, weil man nur das erste ausgehende Paket vom 
ENC sieht und nicht die Antwort vom DHCP Server.
Als DHCP Server Software habe ich dhcpd32 von dieser Seite benutzt:

http://tftpd32.jounin.net/

Diese Software scheint es aber anscheinend nicht mehr zu geben, aber 
tftpd32 soll ebenfalls einen DHCP Server enthalten. (Habe ich aber noch 
nicht getestet)

Also DHCP sollte auch in deinem bereits vorhandenen Programm zu 
implementieren sein, ist aber etwas aufwändiger als das blosse abfragen 
einer webseite.

Gruß

Frank

von Volker B. (sitekick)


Lesenswert?

Hallo,

nach verschiedenen Versuchen komme ich nicht weiter:

1) Einen ARP-Aufruf habe ich abgesetzt und die MAC-Adresse kommt auch 
zurück
2) Den Code für SYN-ACK und ACK habe ich, ich schaffe es jedoch nicht 
einen SYN-Aufruf abzusetzen, da ich den ja erst mal komplett bauen 
müsste.

Jetzt ist die Frage wie ich am besten weiterkomme. Alleine wohl eher 
nicht. Gibt es jemanden im Bereich ALDI Süd der mal Zeit hätte mit mir 
diesen rudimentären IP-Stack zu bauen oder einen anderen abzuspecken und 
zu integrieren. Ich glaube nicht, dass ich alleine weiterkomme.

Vermutlich müsste ein Tag reichen. Falls Ihr alternativ-Vorschläge habt, 
wie ich in diesem Problem weiterkomme, dann bin ich dafür auch dankbar.

Meine Anforderung ich habe ist oben ja beschrieben, ich hoffe, das 
reicht zu einer Einschätzung der Lage. Hier zur Sicherheit nochmal in 
kurz

- Vergesst DHCP - brauche ich doch nicht
- Ich möchte einen Ziel URL und eine statische IP Adresse angeben 
(hardcoded)
- Der Return der Seite soll ausgewertet und zum Beispiel auf dem Display 
angezeigt werden.
- Hardware ist Atmega8 & ENC28J60 sowie ein 2 x 20 Zeichen Display und 
das funktioniert auch schon.
- Als Server funktioniert das ganze (also Aufruf durch Browser und 
Darstellung von Inhalten auf dem LCD)
- Als Client welcher sich die Daten automatisch selbst holt nicht.

Vielen Dank für eure Antworten.
Gruß
Volker

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.