Forum: Mikrocontroller und Digitale Elektronik ATmega8 + ENC28J60


von Mathias O. (m-obi)


Lesenswert?

Hallo,

ich bin im Moment dabei einen ENC28J60 an einem ATmega8 zum laufen zu 
bringen. Ich hab nun schon viele Stacks gefunden, aber die sind meistens 
schon einige Jahre alt und mein Compiler ist am meckern oder sie sind zu 
groß für den kleinen Mega8 oder wenn ich sie flashe funktiniert es 
nicht. Hat jemand einen kleinen funktionierenden Stack eventuell. Mir 
reicht zum Anfang ARP und UDP aus.


Gruß
Mathias

von Georg G. (df2au)


Lesenswert?

Vergiss es. Wenn überhaupt, bekommst du es nur sehr eingeschränkt zum 
Laufen. Der Protz hat zu wenig RAM und Flash ist auch mickrig.

von Frank K. (fchk)


Lesenswert?

Profis suchen sich ihre Hardware nach der Applikation aus. In diesem 
Fall hast Du schlichtweg die falsche Wahl getroffen.

Eine bessere Wahl wäre der pinkompatible Mega328.

Die optimale Wahl wäre der PIC18F67J60. Da ist alles in einem einzigen 
Chip drin: Controller, Ethernet MAC+PHY, Speicher,... Einfacher, kleiner 
und billiger kann man es nicht haben.

fchk

von Cube_S (Gast)


Lesenswert?

Ich beschäftige mich auch gerade mit dem Thema. Habe allerdings mehr den 
Mega328 im Auge und auch nur einfache Ethernet Frames um ein Rs485 
Protokoll ins Ethernet zu bringen. Dafür würde ein Atmega8 wohl auch 
genügen. ARP habe ich in AVR-Assembler und denke, dass das auch auf 
einem Atmega8 ginge. UDP z.B. Nur mit Broadcasts, warum nicht?

von SE (Gast)


Lesenswert?

Ein sehr schönes Beispielprojekt ist dieses hier:
http://www.tuxgraphics.org/electronics/200611/embedded-webserver.shtml

UDP und TCP/IP mit Webserver auf nem Mega88.

Hab das vorhin kompiliert und auf nen Mega88 mit internen 8Mhz Takt 
gebrannt.
Zum Testen nutze ich ein ENCJ28 Modul aus der Bucht. Der Mega88 sitzt 
auf dem Steckboard.

von Benedikt (Gast)


Lesenswert?

Ich hab es auf dem ATMega8A super am laufen, zumindest für geringen 
Netzwerkverkehr reicht der dicke.

Ich hab die Woche bereits ARP, UDP und ICMP implementiert und arbeite 
gerade an TCP.

Hier mal mein Code, ist zu 100% NICHT bugfrei, weder schön, noch gut 
kommentiert.
Die Funktionen sind hauptsächlich zum antworten auf empfangene Pakete, 
aber schau dir die ControlUnit.cpp an, da ist ein kleines Beispiel 
drinn.

Vielleicht hilft es dir ja weiter.

https://docs.google.com/file/d/0B_Jd-LI0kGZeeDNfOUViSDROZ2M/edit?usp=sharing

von Davis (Gast)


Lesenswert?

Benedikt schrieb:
> Ich hab es auf dem ATMega8A super am laufen, zumindest für geringen
> Netzwerkverkehr reicht der dicke.
>
> Ich hab die Woche bereits ARP, UDP und ICMP implementiert und arbeite
> gerade an TCP.
>
> Hier mal mein Code, ist zu 100% NICHT bugfrei, weder schön, noch gut
> kommentiert.
> Die Funktionen sind hauptsächlich zum antworten auf empfangene Pakete,
> aber schau dir die ControlUnit.cpp an, da ist ein kleines Beispiel
> drinn.
>
> Vielleicht hilft es dir ja weiter.
>
> https://docs.google.com/file/d/0B_Jd-LI0kGZeeDNfOUViSDROZ2M/edit?usp=sharing

Warum ist der Code im Headerfile? Eine ethernet.cpp wäre doch sinnvoller 
oder habe ich etwas übersehen?

von matrixstorm (Gast)


Lesenswert?

Was nur alle meckern hier.

Der ATmega8 ist ein toller MCU! g

Guggst du hier: 
http://www.pocketmagic.net/2012/07/atmega8-and-enc28j60-for-ethernet-support/#.UZO6R9dCRhE

Nach Anpassung der Makefile funktioniert das bei mir super toll.

von Mathias O. (m-obi)


Lesenswert?

Danke schonmal für das ganze Feedback. Klar der Mega8 ist ein bisschen 
zu klein dafür, vorallem weil ich noch nen Modbus-Stack integrieren 
will. Später soll es ein ATmega644 werden. Den Mega8 hab ich erstmal zum 
groben testen. Den hatte ich noch rumliegen.

@matrixstorm: Die Seite hatte ich auch schon gesehen. Nur irgendwie will 
er bei mir nix machen. Kannst du mal dein Projekt hochladen bitte?

von matrixstorm (Gast)


Lesenswert?

Hier die patchfile von der originalen ZIP zu einer Version die bei mir 
funktioniert:

http://matrixstorm.com/avr/others/201305152359/webserver_atmega8.patch

MfG

von Benedikt (Gast)


Lesenswert?

@Davis:
Ja der Code ist in einem Headerfile. Aus dem einfachen Grund, dass m-obi 
es mal schnell testen kann.

Ich hätte den Code sicher nicht als Beispiel hier reingestellt, jedoch 
wollte m-obi eine Version die 100% auf dem Mega8 läuft und das tut mein 
Code :-)

von Michael (Gast)


Lesenswert?

Hi zusammen,
ich habe mich etwas am Code vom oben genannten pocketmagic.net-Link 
orientiert und daraufhin direkt den stack von tuxgraphics verwendet (und 
minimal angepasst). Funktioniert wunderbar inkl. DHCP und ich habe sogar 
noch Platz für ausreichedn eigene Logik.

Im Augenblick bekomme ich es nur nicht hin, die von meiner 
Server-Applikation zurückgesendeten UDP-Daten einzulesen und zu 
verarbeiten. Gibt es da Beispiele oder hat da jemand Erfahrung?

Lese ich in buffer[UDP_DATA_P], bekomme ich nur die zuvor gesendeten 
Daten.

Grüße
Micha

von Uwe (de0508)


Lesenswert?

Hallo,

erwähnenswert ist noch die Implementierung unter LunaAVR.

http://forum.myluna.de/viewtopic.php?f=3&t=300

http://avr.myluna.de/doku.php?id=de:beispiel-sourcen

Die Quelldatei wird beim installieren der IDE/ Compilers gleich mit 
installiert.

Webserver-Änderungen
- ftpd-service (rudimentär, keine Schreibfunktionen)
- Konfiguration in einer Extradatei includes/config.luna
- Optimierte TCP-Verbindungen (Datei-Download nun mit bis zu 50 kb/s)
- UDP ~ 30 Pakete/s

von Michael (Gast)


Lesenswert?

Habe mein Problem in den Griff bekommen. Alles super. :)

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.