Forum: Mikrocontroller und Digitale Elektronik Webserver Atmel - Ethernet


von Aaron (Gast)


Lesenswert?

Hallo und guten Abend.

Kürzlich habe ich gesehen, dass der AT32UC3 eine Ethernet Hardware an 
Bord hat. Da kam mir die Idee, einen Webserver zu realisieren. Dann 
könnte ich per Webbrowser Ausgänge schalten.

Hat das jemand schon mal gemacht?

Kenn mich mit uC aus und auch allgemein mit Ethernet (IP, MAC, 
Subnetz,...), aber was dann alles auf den unteren Ebenen soll (TCP-IP 
Stack, ...) weiß ich nicht.

Ideal wäre für mich ein Quellcode, welcher zumindest den Stack fix und 
fertig hat.. Habe schon das Webmodul von Ulrich Radig gesehen und auch 
FreeRTOS.
Machen möchte ich alles mit der internen Hardware. Folglich fällt die 
Software von Ulrich Radig weg (bzw. kann ich dort nur teilweise etwas 
abschauen).
Bei FreeRTOS blicke ich übehaupt nicht durch, was das ganze soll.

Was brauche ich an Hardware? Übertrager?

Grüße
Aaron

von Svenska (Gast)


Lesenswert?

Den AT32UC3 kenne ich nicht, aber guck dir mal uIP (sehr klein) oder 
lwIP (klein) an. Zumindest ersteres fand ich recht übersichtlich 
programmiert, wenn auch an die Anwendung ein paar ungewöhnliche 
Anforderungen (Retransmit) gestellt werden.

FreeRTOS ist ein Echtzeitbetriebssystem. Wenn du nicht mehrere Tasks 
brauchst, kannst du darauf auch verzichten.

An Hardware brauchst du MAC und PHY, wobei der MAC (selten auch PHY) im 
µC integriert ist.

von Stefan (Gast)


Lesenswert?

Du brauchst neben dem AVR noch einen PHY Chip und einen dazu passenden 
Übertrager.

Auf meiner Homepage findest Du einen Webserver, der auf uIP basiert.
http://stefanfrings.de/avr_io/index.html

Du musst im Grunde genommen nur den Ethernet Treiber (driver/CP2200.c) 
ersetzen. Dein Treiber muss nur wenige Dinge tun:

- Den MAC (im AVR) initialisieren
- Den PHY initialisieren
- eine Prozedur kopiert Daten vom RAM in den Puffer des MAC
- eine andere Prozedur kopiert Daten vom Puffer des MAC ins RAM

Das Kopieren der Daten machst Du sinnvollerweise mit DMA. Meine Firmware 
macht das noch "zu Fuß" weil sie für einen kleineren Controller ohne DMA 
Features implementiert wurde.

Falls Du Dich wunderst, dass uIP die beiden Prozeduren zum Senden und 
Empfangen scheinbar gar nicht aufruft: Die Aufrufe findest Du in der 
main.c. uIP selbst sendet und empfängt nämlich nicht, sondern es 
verarbeitet nur die empfangenen Daten und stellt welche zum Senden 
bereit. Die eigentliche Datenübertragung zwischen Ethernet-Puffer (RAM) 
und Ethernet Controller findet in der Hauptschleife des Programmes 
statt, also außerhalb der uIP Library.

von Stefan F. (sfrings)


Lesenswert?

Die aktuelle Version von uIP findest Du im Contiki Projekt. Für meinen 
Webserver habe ich sie an einigen Stellen gepatcht um Bugs zu beheben 
und DHCP hinzuzufügen

von Frank K. (fchk)


Lesenswert?

Aaron schrieb:
> Hallo und guten Abend.
>
> Kürzlich habe ich gesehen, dass der AT32UC3 eine Ethernet Hardware an
> Bord hat. Da kam mir die Idee, einen Webserver zu realisieren. Dann
> könnte ich per Webbrowser Ausgänge schalten.
>
> Hat das jemand schon mal gemacht?

Nicht mit dem AT32UC3. Der PIC18F67J60 ist die billigste und 
kleinstmöglichste Lösung für sowas. In einem TQFP64 ist alles drin, 
Prozessor, Ethernet MAC und Ethernet PHY (der ist normal nicht 
integriert, sondern ein extra 48- oder 64 pinniger Chip, auch bei Deinem 
AVR32). Du brauchst nur noch ein paar passive Bauteile und eine 
Ethernet-Buchse mit eingebautem Übertrager. Ansonsten ist das eine 
1-Chip-Lösung. Die zugehörige Software gibt bei Microchip zum Download. 
Da ist alles drin, Webserver, DHCP-Client, DNS-Client, usw usw.

fchk

von Aaron (Gast)


Lesenswert?

Danke für die guten Tipps und Beschreibungen. Nun ist mir schon einiges 
klarer und ich denke, ich komme damit schon zurecht.

Die Komplettlösung mit dem PIC gefällt mir sehr gut, obwohl ich lieber 
mit Atmels Prozessoren arbeite. Da habe ich bereits Programmer...
Aber natürlich sind PIC Programmer kein Problem.

Ich werde mir das noch einmal nachlesen, und wenn es mir dann doch nicht 
gefällt, werde ich wohl den Arduino Ethernet verwenden.

Vielen Dank nochmal und noch schönen Abend
Aaron

von Andreas (Gast)


Lesenswert?

Kauf dir doch das PIC32 Ethernet Starter Kit. Damit brauchst du für den 
Anfang nicht gleich einen Programmer und du kannst damit auch debuggen.
Die Software dazu ist die gleiche wie von Frank K. beschrieben.

von Stefan (Gast)


Lesenswert?

Bei Chip45 kannst Du auch ein fertiges Ethernet Modul (mit AVR Xmega128) 
bekommen. Gib bei der Bestellung an, dass du einen Bootloader drauf 
haben willst, dann brauchst Du auch dort keinen ISP Programmer sondern 
nur ein USB Kabel.

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.