Forum: Projekte & Code Netzwerkkarte mit RTL8019


von Joline (Gast)


Lesenswert?

@Björn

Hast Du Dir schon mal Deine neue Seite aus dem Netz angeschaut?
Stichwort: Sonderzeichen.

von Bjoern Biesenbach (Gast)


Lesenswert?

Danke für den Hinweis Joline. Ich habe mich erst gefragt was du meinste,
hatte mir meine Seite mit Konqueror und IE angeschaut, doch in Mozilla
waren die Fehler dann sichtbar.

von Uli (Gast)


Lesenswert?

Hallo,

Neuer Source Code auf meine HP V1.16

Mfg Ulrich

von Mattias (Gast)


Lesenswert?

Was ist denn neu in dieser Version ????????
Die Beschreibung von version.txt geht nur bis 1.13 .

Gruss Mattias

von Henning (Gast)


Lesenswert?

genau deswegen habe ich mich davon gelöst und pflege meine eingene
Version. Da kommt nur rein, was ich haben will, bald werden die Sitens
dynamisch erstellt.

Ausserdem kann ich meine Compilierung ohne Probleme im AVRStudio
simulieren. Einzig Aufwendig ist es die Unterschiede zu den neuen
Versionen, die hier geboten werden, herauszufinden (zu vergleichen).

Die letzte Version, die ich von hier ausprobiert habe, hat den Server
übrigens nach dem Ersten HTTP Request regelmäßig resetten lassen. - War
für mich unerklärlich und ich bin wieder (aus Einfachheit) bei meiner
Version gelandet.

Hab aber noch ne Frage zu den HTTP Headern: Auch bei den JPG Dateien
wird der Header mit Content:HTML gesendet. Klickt man im IE auf das JPG
Bild mit Rechts und ruft die Eigenschaften auf, so wird auch das JPG
Bild als HTML content ausgegeben. (Fehler?)

Hab jedoch noch ne Frage zu den HTTP Headern: wenn ich
http://192.168.0.99/ als Adresse aufrufe, erscheint zwar die Site, aber
in der Titelleiste (des IE) erscheint die Meldung "Server nicht
gefunden". Öffne ich eine Adresse mit Filename wie zB
http://192.168.0.99/index.htm so klappt der Aufruf genauso, es wird
jedoch der Header der HTML-Datei (<head><title>Server</title></head>)
berücksichtigt. Gibt es eine Möglichkeit bei Eingabe der Adresse ohne
Datei einen Redirect zur Adresse mit Datei durchzuführen? Was sendet da
zB. Apache?

Und zu den HTML-Headern auch noch eine Frage g : Wieso ist der Inhalt
der Datei (zB Page1) nicht komplett, sondern es fehlen die <HTML> und
<HEAD> Tags (mit allem, was so dazugehört)? wurde das vergessen, oder
hat das einen Grund?

greez Henning

von Uli (Gast)


Lesenswert?

Hallo,

Was neu in der Version 1.16 zu 1.13 ist es wurde ein Fehler bei einen
Antwortpacket beseitigt. Es wurde Device.c auf Geschwindigkeit
optimiert. Aus dem Hauptprogramm sind die Routinen für den UART
entfernt worden und in eine eigende Datei. Ich glaube das wars.

Mfg Ulrich

von Joline (Gast)


Lesenswert?

Hallo,

ich habe mir bis jetzt immer nur den Quellcode (oberflächlich)
angesehen. Dabei habe ich festgestellt, dass in der von Uli gepflegten
Version (seit 1.03?) immer nur ein Bild angezeigt wird (bitte
berichtigen, wenn falsch), was ja für einen Webserver auf µC-Basis
eigentlich ein bisschen sinnlos ist.

Nun gibt es ja hier einige, die das Ganze schon nutzbringend einsetzen
(z.B. als Druckereinschalter). Kann mal bitte einer eine "webpage.h"
und die passende "httpd.c" posten, in der ein paar I/O's gesetzt und
abgefragt werden?

Danke Joline

von Uli (Gast)


Lesenswert?

Hallo,

Mal wieder eine neue Version auf meiner Homepage:

Über Telnet setzen der Uhrzeit mit set time xx xx xx
Ausgabe der Uhrzeit über Telnet mit time
Weitere infos in meiner Version.txt

Mfg Ulrich

von Uli (Gast)


Lesenswert?

Hallo,

So neue Version 1.21! Fehler in checksum.c noch gefunden.
Die Webseite wird alle 3Sec. nun neu geladen und ein Counter Zählt
hoch.

Mfg Ulrich

von Bjoern Biesenbach (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe es jetzt geschafft, einen DS18S20 Temperatursensor an den
Webserver anzuschliessen, und die gemessene Temperatur dort anzeigen zu
lassen.
Das Ganze läuft mit einem ATmega32.
An PD7 ist der Data-Pin des DS18S20 angeschlossen. Diese Leitung wird
noch mit 4,7kOhm gegen VCC gezogen. Das ist notwendig da der Sensor
über den internen Pullup des AVR nicht genug Saft bekommen würde. Somit
funktioniert der Sensor mit nur zwei Adern (DATA und GND).
Zur Realisierung der Software habe ich den Code dieser Seite
verwendet:
http://www.siwawi.arubi.uni-kl.de/avr_projects/index.html#ds18x20demo
Dann habe ich Diesen noch in Version 1.22 von Uli integriert.

Zu bekommen ist der Sourcecode entweder über den Anhang, oder übers
Subversion-Repository: svn://bjoern-b.de

Viele Grüße
Björn

von Martin (Gast)


Lesenswert?

Hallo,

ich habe gerade erste Versuche mit einem mega32 gemacht.
Dieser war natürlich noch ganz frisch: den Fehler den externen Quarz zu
aktivieren habe ich schon 1000 mal gemacht. Aber gerade habe ich fast 1h
gebraucht um zu bemerken das default JTAG aktiviert ist. Dann geht
erstmal gar nichts bzw der network card init ist imemr 255 :-)
Sonst muss ich sagen recht schnell und auf den ersten Blick sehr
stabil...

Martin

von Philipp Drewes (Gast)


Lesenswert?

Hallo Ulrich,
sag mal, sind deine Leiterplatten hand oder autogeroutet?
Ich habe bisher den Freeware Eagle benutzt und da konnte man den
Autorouter so gut wie vergessen.

Gruß Phili

von Mattias (Gast)


Lesenswert?

Also den Einplatinen - Server habe ich ja gemacht. Der ist vollständig
von Hand geroutet. Sowas kann Eagle nicht....

Gruss Mattias

von Uli (Gast)


Lesenswert?

Hallo,

Alle Platinen von mir sind Handgeroutet.

Mfg Ulrich

von Henning (Gast)


Lesenswert?

wurde schon öfters bemängelt: der Autorouter von Eagle ist mit den
meisten Aufgaben schon überfordert, bzw. erzielt keine
zufriedenstellende Ergebnisse... man kann sich die Arbeit damit jedoch
trotzdem um einiges vereinfachen, wenn man ihn geschickt auf einige
wenige signale ansetzt

von Volkmar (Gast)


Lesenswert?

Hallo,

ich verfolge den Thread schon geraume Zeit. Die Anwendung mit der
Temperatur ist ja schon ganz nett. Ich habe da aber noch was anderes im
Auge. Ich wäre an einer WebCam interessiert. Gibt es da Ideen?

Volkmar

von marcel (Gast)


Lesenswert?

hallo

@ uli
hab mal ne Frage zum Programmierstiel. mir ist aufgefallen das alle
*.c Datein in main.c eingebunden sind und nicht wie bei den meisten
anderen Beispielen hier im Forum einzeln übersetzt und zusammengelinkt
werden. gibt es dafür einen besonderen Grund?

von Uli (Gast)


Lesenswert?

Hallo,

Das ist schon lange nicht mehr der fall das *.c dateien eingelinkt
werden. nur noch *.h :-)
Die neuste Version ist 1.30 natürlich auf meiner HP

von Andreas Jakob (Gast)


Lesenswert?

Hab ich grad gefunden :

AVR + NE2K zu Steuerung der Motoren einer beweglichen Webcam
+ Display und LED´s

http://home.teleport.ch/idobson/projects/UDP-webcam.htm

ganz unten auf der Seite den Link anklicken,
da kann man das ganze live ausprobieren.
Echt cool ! bekam sogar Antwort auf die Texte die ich im
Display anzeigen ließ :-)

Grüße
Andreas

von Jochen (Gast)


Lesenswert?

Hallo,
hab gerade den Thread gefunden und durchstöbert. So ein
Ein-Platinen-Webserver ist genau das, wonach ich suche.

Euch fehlt es an Anwendungen? Gibt's doch nicht:o) Ich suche nach
sowas, um Luftfeuchte und Temperatur abzufragen. Und für ein AQ oder
Terrarium sind die käuflichen Lösungen überdimensioniert, sowohl von
den Abmessungen her als auch vom Preis. Ich möchte aber nicht den PC
immer laufen lassen, um diese Daten zu erfassen. Und Flatrate ist
sowieso vorhanden. Also wäre ein Ethernet Sensor ideal.

Ich würde den Ein-Platinen-Webserver ein einfaches XML-Dokument
bereitstellen lassen, und dieses von einer im Internet bereitgestellten
php Seite auslesen/einbinden.

Für diejenigen unter uns, die noch kein AQ oder Terrarium haben:
Luftfeuchte ist auch im Wohnraum nicht uninteressant.

Ein scheinbar recht brauchbarer (und daher auch nicht ganz billiger)
Sensor wäre z.B.
http://www.sensirion.com/en/sensors/humidity/sensors_devices/sensorSHT71.htm

Wenn jemand einen anderen Sensor kennt, bitte hier kurz vermerken.
Ansonsten muss ich jetzt nur noch Zeit finden, mich mit dem AVR erstmal
auseinander zu setzen, die Bauteile aufzutreiben und die Platine
aufzubauen... das wird sicher einige Wochen dauern. Ich hätte also
nichts dagegen, wenn jemand ebenfalls sowas brauchen kann und schon mal
das Sensorprotokoll implementiert:o)

Bis dahin,
Jochen

von Thorsten (Gast)


Lesenswert?

Hat eigentlich schon mal jemand darüber nachgedacht, eine
Sammelbestellung für Platinen für den Webserver anzuleiern?

von Henning (Gast)


Lesenswert?

@Thorsten
ich denke nicht, denn so kompliziert ist das Projekt mit dem M32 nicht.
Auch auf Lochraster kann das gut aussehen, wenn es darum geht. beim m128
sieht das natürlich anders aus...

von Jens123 (Gast)


Lesenswert?

hallo

ich haette da auch noch eine kleine anwendung..

Euch allen sagt sicher Instabus etwas oder??

was ist, wenn man nun hingeht und in (jeden) raum einen von diesen
webservern baut mit einer eigenen ip versieht und daraus lichtschalter,
steckdosen etc aufbaut oder sogar darueber den strom misst??

evtl laesst sich dieses projekt damit erweitern
die ip adresse koennte man dann ueber einen externen 8bit DIP Schalter
aufbauen..

von Tobias Schneider (Gast)


Lesenswert?

@Uli
Hast du noch so ca 10 Stueck von den Netzwerkkarten abzugeben?

Gruß Tobias

von Ulrich (Gast)


Lesenswert?

Hallo,

Leider habe ich nur noch 5 Netzwerkkarten, die ich selber gebrauche!

Mfg Uli

von Tobias Schneider (Gast)


Lesenswert?

Hi,
ok ist nicht so tragisch.

Gruß Tobias

von Volker Klautsch (Gast)


Lesenswert?

@Tobias

Ich habe noch genügend. Wenn du immer noch welche haben willst - melde
dich bei mir.

MFG Volker

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Volker Klautsch (Gast)


Lesenswert?

@All

Hallo - ich will mich ja net aufdrängen, aber wer noch Netzwerkkarten
haben will kann sich gerne bei mir melden :-)
Das sind die Karten, welche noch vor ein paar Monaten bei ebay zu je 50
Stk. zu ersteigern waren - also RTL8019AS Chip auf einer ISA-Karte.

Volker

von Tobias Schneider (Gast)


Lesenswert?

Hi,

wieviel willst du denn pro stueck haben? wierde gern noch ein paar
nehmen

Gruß Tobias

von Volker Klautsch (Gast)


Lesenswert?

Also ich habe damals 39 Euro für 50 Stk. bezahlt.
Macht also, wenn ich mich jetzt nicht verrechnet habe, 78 Cent/Stk.
(Kommt natürlich eventuell für dich noch das Porto dazu :-)

Volker

von Tobias Schneider (Gast)


Lesenswert?

Hi,
wuerd da dann gern noch 5 stueck nehmen(hab inzwischen noch welche bei
ebay gefunden).

Ich schreib dir noch ne mail.

Gruß Tobias

von Jon (Gast)


Lesenswert?

Hallo Volker,

ich würde gern 5-10 Karten bestellen, wenn das möglich ist.

Gruß, Jon

von Alno (Gast)


Lesenswert?

Hi All,

nachdem ich den ganzen thread durch habe meine Frage:

kann man den Aufbau auch verwenden um z.B. ein WOL Signal
"abzufangen" und als Schaltvorgang umzusetzen? Ist die MAC Adresse im
Realtec chip gespeichert und auslesbar?

Gruß

von Frank Bertling (Gast)


Lesenswert?

Hallo zusammen,

ich habe da mal 'ne Frage:
Sehe ich das richtig, dass man ausser einem Mega32 bzw. Mega128 einem
Quarz und der Netzwerkkarte (evtl. noch nen MAX232 zur Programmierung)
nichts weiter braucht, um das Teil ans laufen zu bekommen?

Wenn nicht, was muss ausser den o.g. Teilen noch auf seiten des "Atmel
Teils" der Schaltung vorhanden sein? Konnte das leider bislang nicht so
richtig ergründen.

Vielen Dank für alle Antworten und vorab schon mal große Anerkennung
für ein solch geniales Projekt.
MfG
Frank

von Ulrich (Gast)


Lesenswert?

Hallo @Frank Bertling

Ja so ist es, es reichen eine Netzwerkkarte ein Mega32 und wenige
passive Bauteile aus.

Mfg Uli

von Volker (Gast)


Lesenswert?

Hallo zusammen!

Ulrich erwähnte am 29.05., dass er den Webserver mit ner 3com Karte mit
3c509 TX Chipsatz getestet hätte, am 25.09. schrieb er, dass es mit 3com
Karten überhaupt nicht funktionieren würde. Was stimmt denn nun?

Ich könnte zur Zeit Karten mit 3c509B und 3c509TP Chipsatz bekommen.
Soll ich lieber die Finger von ihnen lassen?

Besten Dank für eure Hilfe!

Volker

von Ulrich (Gast)


Lesenswert?

Hallo,

3com Karten funktionieren nicht!!! Fehler meiner seits. Hatte hier so
viele Karten liegen und eine verwechselt.

Mfg Ulrich

von Volker (Gast)


Lesenswert?

Hallo zusammen,

nachdem die 3com Karten nun ja nicht wirklich funktionieren :-) suche
ich nach Karten mit z.B. RTL8019 Chipsatz. Hat zufällig jemand von euch
eine oder auch gerne mehrere abzugeben?

Meldet euch doch einfach mal!

Viele Grüsse

Volker

von Thorsten (Gast)


Lesenswert?

Bei Pollin gibt es gerade welche mit einem RTL8029AS, keine Ahnung ob
der auch funktioniert. Kosten EUR 2,50, die Best.-Nr. ist 700108.
Ansonsten gibts die Karten eigentlich ständig bei eBay.

Gruß
Thorsten

von Ulrich (Gast)


Lesenswert?

Hallo,

Ich benutze auch den RTL8019AS Chipsatz.

Mfg Uli

von Volker (Gast)


Lesenswert?

Danke für eure Antworten!

Geht denn der 8029er Chipsatz auch?

Viele Grüsse

Volker

von Ulrich (Gast)


Lesenswert?

Hallo,

Leider nein, der RTL8029 hat ein PCI Interface und lässt sich nicht
ohne weiteres an ein µC anhängen.

Mfg Uli

von Volker (Gast)


Lesenswert?

Okidoki,

das klingt logisch... könntest Du mal bitte ne aktuelle Liste der
getesteten Chipsätze posten? Danke!

Jetzt fehlt eigentlich nur noch ne WLAN Lösung :-)

Viele Grüsse

Volker

von Thorsten (Gast)


Lesenswert?

Die Karte bei Pollin ist aber eindeutig ne ISA-Karte.

von Ulrich (Gast)


Lesenswert?

Hallo,

Eigentlich alle NE2000 kompatible Netzwerk-Karten.
Am besten Realtek 8019, war gerade bei EBay da gibt es schöne kompakte
Netzwerkmodule.

Mfg Ulrich

von Volker (Gast)


Lesenswert?

..ausser 3com, das hab ich schon gelernt :-)

Was für Netzwerkmodule meinst Du?

Viele Grüsse

Volker

von 123 (Gast)


Lesenswert?

AVR Ethernet Platine

http://www.mikrocontroller.net/forum/read-1-138024.html#new

- Atmega128 bei 16MHz (oder UART Optimierter Takt)
- (optional) ca. 64KB Speicher
- (optional) MMC Karte
- (optional) RTC (Epson mit internen Quarz)
- Platine: 100mm x 80mm
usw...

von Stefan (Gast)


Lesenswert?

Hi Leute,

also auch erstmal Lob von mir an dieses schöne Projekt!

Ich hab jedoch ein paar Probleme:

Ich betreibe das ganze auf nem Atmega32 mit 16 MHz externen Oszillator
(fusebits korrekt gesetzt). Als Karte hab ich ne RTL8019as.
Wenn ich den Server starte, gibt er mir Init Ready mit dem Wert 34 aus,
Verbindungslämpchen an der Slotblende und am hub geht an, nur dass von
dann an nichts mehr passiert.
Das Timerinterrupt kommt regelmässig aber nicht das int0. Wenn ich dort
das Kabel rausziehe und wieder reinstecke, dann kommt int0 (funktioniert
also).
Sieht für mich also so aus, als ob die Netzwerkkarte nichts sagt :(.
Ich hab sie auf IRQ3 konfiguriert (und wenn ich mitm Multimeter die
pins messe, liegt auf dem Pin von IRQ3 auch ein low-level, bei allen
anderen ein high).
Kann mir jemand helfen, wie ich der Netzwerkkarte mal ein paar
informationen entlocken kann und woran das liegen könnte, dass die
nichts sagt?

Er lief übrigens auch schonmal kurzzeitig aber seit dem nicht mehr :(

juti, hoffe jemand kann mir helfen!
Stefan

von Tobias Schneider (Gast)


Lesenswert?

hi,
@uli: bei einem tcp/ip packet sind ja die lezten bytes des packtes
nutzdaten. wenn ich mir aber mal den buffer fuer die daten bis
packetlen ausgebenlasse bekomme ich am end eimme rnoch ein paar bytes
extra. werden die vom rtl angehaengt? und fuer was sind die gut? kann
man ihre laenge irgendwie bestimmen?

von Martin (Gast)


Lesenswert?

Hallo Tobias,

nicht das du deswegen genauso viele schlaflose Nächte hast wie ich: das
ist der CRC der MAC PDU - genau 4byte.


Martin

von CDG (Gast)


Lesenswert?

Hallo,
mein Versuch den Webserver mit einem ATMega8
nach Simon Lehmayr und der Datei mega8test.zip
aufzubauen hat nicht funktioniert.

Ich bekomme keine Ausgabe auf die serielle Schnittstelle.
Auch im Fehlerfalle (wohl auch ohne Netzwerkkarte),
sollte dort was ankommen., oder ???

Ich habe daher einen Mega8 mit einer kurzen Textausgabe programmiert
und in die Schaltung eingesetzt (ebenfalls int. Osc. mit 8 MHz).
Das funktioniert einwandfrei.

Meine Verdrahtung ist wie folgt und mehrfach überprüft,
GND und +5V an den Pins der RTL-Karte laut Ulrich Radig:

- Mega8 PORTB 0..7 --> ISA-BUS D0..D7
- Mega8 PORTC 0..4 --> ISA-BUS A0..A4
- Mega8 PORTD 2    --> ISA-BUS IRQ9 ???? richtig ????
- Mega8 PORTD 5    --> ISA-BUS /IOR
- Mega8 PORTD 6    --> ISA-BUS /IOW
- Mega8 PORTD 7    --> ISA-BUS RES DRV

Fusebits:
cksel 3..0  -> 0100
SUT 1..0    -> 10

Auf meinem System ist kein GCC oder ähnlich installiert,
darum habe die in obigem Zip-File enthaltene .hex Datei
in den ATMEL gebrannt.

Ist die Datei ok ??
Ein Widerspruch ist in der main.c wo folgendes steht,
#define sysclk  16000000  //Quarz Frequenz in Hz
da müsste es doch 8000000 (für 8 MHz) heißen.

Wenn dies der Fehler wäre, sollten trotzdem verstümmelte
Zeichen erscheinen.

Ich danke schonmal für Hinweise

cdg

von Jens123 (Gast)


Lesenswert?

externer quatz??
nim mal einen 16MHz Quarz an XTAL1 / XTAL2 mit den 2 kondensatoren..

sonnst stimmen die ganzen timings nicht mehr!!!

von CDG (Gast)


Lesenswert?

@Jens123
Wenn das an mich gerichtet ist, erstmal danke, aber

     ***!!!! ATMEL MEGA8 !!!!***
PB6+7 = XTAL1+2 sind belegt (siehe oben).
Dabei halte ich mich an die Beschreibung von Simon Lehmayr
also !! interner Oszillator 8MHz !!.

Hilfe von jemandem der das mit dem Mega8 laufen hat
wäre wohl sinnvoll.

MfG cdg

von Jon (Gast)


Lesenswert?

Der Atmega8 hat meines wissens intern nur 1MHz. Die 8 steht für den
Speicher, nämlich 8kB.

Soweit ich gehört habe ist der interne Oszillator auch sehr instabil
und das UART läuft damit nur auf 2400 BAUD o.ä. (müsste im Source
angepasst werden).

Du solltest also auf jeden Fall einen externen Oszillator anschließen,
mit 8 oder 16Mhz.

Gruß, Jon

von CDG (Gast)


Lesenswert?

@Jon und andere

Bitte versteht dies nicht falsch,
aber diese Antworten nützen mir nichts.

Ich wende mich an die, die den Webserver
mit dem mega8 laufen haben
wie z.B. der von mir oben angeführte Simon Lehmayr.

Angaben mit ... soweit ich weiß
oder interner Osc. ist instabil
oder intern nur 1MHz.
     Die 8 steht für den Speicher, nämlich 8kB.
     das UART läuft damit nur auf 2400 BAUD
sind schlichtweg falsch.
Aber wie schon gesagt, bitte nicht falsch verstehen
ich möchte den Webserver schon laufen haben.

Danke cdg

von Jon (Gast)


Lesenswert?

entschuldige die Fehlangabe... hatte übersehen dass man den internen
Takt verändern kann, dennoch steht die 8 für den internen Flash
Speicher.

Wieauchimmer, noch ein unerwünschter Tipp von einem Atmega32 Benutzer:
Die Funktion des UART (nämlich die Baudrate) hängt direkt von der
definierten Clock ab. (siehe uart.c)

Dass Deine serielle Schnittstelle nicht funktioniert könnte
(entschuldige die Unsicherheit) also durchaus daran liegen.

von CDG (Gast)


Lesenswert?

@Jon
Danke für deine Geduld.

Ich habe mir (siehe oben) einen mega8 mit einer Textausgabe
programmiert, ohne Quarz, internen Osc. mit 8MHz eingeschaltet
und Baudrate auf 9600 Baud eingestellt.
Mit Hyperterminal ist das auch ok.
Auch andere Projekte mit dem mega8 und internem Osc. habe ich laufen.

Da ja offensichlich Simon Lehmayr den mega8 Webserver laufen hat,
hier aber z.Z. nicht schreibt suche ich andere Nachbauer des
mega8-Webserver.

Ok, ich kann auf einen mega32 oder mega128 ausweichen,
habe aber noch das Übersetzungsproblem (keinen Compiler installiert).
Auch das war ein Grund für den mega8 (.hex-File war hier im Forum)

Mich würde trotzdem interessieren, warum es nicht läuft
bzw. warum nichts auf der ser. Schnittstelle erscheint.

Freundliche Grüße
cdg

von Henning (Gast)


Lesenswert?

Sorry, aber das hört sich leider ein wenig "wartend" an.

Versuche doch mal mit einem eigenen hex File eine Serielle Verbindung
aufzubauen. Wenn Du schreibst du hast nichteinmal nen compiler
installiert, dann sieht das ziemlich bequem aus.

Darüber kannst du dir dann sicher sein, das deine serielle Verdrahtung
in Ordnung ist und der Fehler nirgends in anderen Funktionen im
Programm liegen kann.

henning

von Jon (Gast)


Lesenswert?

Naja.. er hat ja schon ein serielles Testprogramm zum Laufen gebracht.
Nur die Atmega8 Sourcen stehen halt auf 16Mhz, es wird also eine
Baudrate in abhängigkeit von 16Mhz gesetzt. Da kommmen am Ende dann
nicht mehr die gewünschten 9600 raus.

Ich denke er muss die Sourcen neu kompilieren (mit sysclk=8000000) oder
einen 16Mhz Oszillator anschließen.

von Henning (Gast)


Lesenswert?

hatte das ganze so verstanden, das er das auf einem anderen system am
laufen hat. nicht aber auf dem, mit dem er die Netzwerkkarte ansprechen
will.

das währe natürlich relativ nutzlos.

von Simon Lehmayr (Gast)


Lesenswert?

Sorry für die späte Antwort zum Thema mega8 Server: Compiliert mit
WinAVR. Keine serielle Schnittstelle im Programm (der Code dafür hat
zuviel Platz benötigt, daher habe ich ihn entfernt). Die zweite
gepostete Version enthält richtiges #define SYSCLK (wird aber nicht
benötigt, weil keine Baudrate)
Mein mega8 Server hat nur an einem Switch richtig funktioniert, an
einem Hub wurde er mit IP-Paketen überlastet :-)

von Henning (Gast)


Lesenswert?

>Mein mega8 Server hat nur an einem Switch richtig funktioniert, an
>einem Hub wurde er mit IP-Paketen überlastet :-)

Das habe ich mit meinem Mega32 Server auch befürchtet, aber dann nicht
weiter verfolgt.

von CDG (Gast)


Lesenswert?

@Simon, Henning, Jon

Danke für die Hilfe, nun wird es klarer.
Laut Simon:
>Keine serielle Schnittstelle im Programm (der Code dafür hat
>zuviel Platz benötigt, daher habe ich ihn entfernt)

>Mein mega8 Server hat nur an einem Switch richtig funktioniert, an
>einem Hub wurde er mit IP-Paketen überlastet :-)

Ok, ein Switch ist vorhanden.

zu Henning:
>Versuche doch mal mit einem eigenen hex File eine Serielle Verbindung
>aufzubauen.

Wie oben geschrieben, hatte ich das gemacht und es funktionierte !!
Der Fehler bzw. warum keine Ausgabe ist ja nun klar.

>Wenn Du schreibst du hast nichteinmal nen compiler
>installiert, dann sieht das ziemlich bequem aus.

Wenn bei einer Anleitung ein .hex File ist (alles in der .zip) und ich
hier in mehreren Beiträgen lese, neuere Compiler kommen mit den Sourcen
nicht klar, warum soll ich dann einen Compiler installieren
der anschließend nicht das gewünschte Ergebnis bringt.
Also erstmal Hexfile brennen und wenn blutgeleckt, dann Compiler
und Sourcen anpassen usw.

Werde nun aber doch zu einem größeren ATMEGA greifen,
zumal dort auch Erweiterungen in Arbeit sind und dort genug Platz ist.

Vielen Dank
cdg

von Uwe Nagel (Gast)


Lesenswert?

Hallo

habe den Webserver mit einem Mega32 aufgebaut.
Takt 14,318MHz, Softwareversion 1.33

Dabei sind mir ein paar Probleme aufgefallen:

1. Auf meinem IE6 wird die Beispielseite nicht richtig angezeigt. Nur
die Hintergrundfarbe erscheint. Schaue ich mir den Quelltext an fehlt
ein Teil (das Ende) der Datei. Breche ich die Übertragung ab erscheint
die Seite, allerdings ohne den Counter, der steht auch nicht im
Quelltext. Ich dachte erst der Controller überträgt nicht alles, habe
die MTU-SIZE erhöht und bekam entsprechend mehr Zeichen !
Dann hab ichs mit Firefox probiert und alles ist OK. Was ist das denn
nun, mal wieder Microdoof oder was?

2. Es wird immmer nur der HTTP_OK1 zurückgegeben, scheint aber die
Browser nicht zu stören...

3. 'Card Init: 34' wird auch angezeigt, wenn gar keine Netzwerkkarte
angeschlossen ist! Erst als ich Pullup-Widerstände an den Datenbus
gehängt habe, kam 255.

4. Die IOWR-Leitung liegt meistens auf 0. Wie kommt das, die wird doch
in ReadRTL und WriteRTL gleich nach dem Datentransfer wieder auf 1
gesetzt?

Versuchsweise hab ich auch mal die alte Version 1.08 ausprobiert. Dabei
ist mir Effekt 1 und 4 nicht aufgefallen. Bei 1. liegts wohl an der
kürzeren Seite.

Noch ne Frage:
Eigentlich könnte ich so was wie einen minimal-Web*Browser* gebrauchen.
Wozu? Ich möchte einfach ein PHP-Script auf einem anderen Server
aufrufen und ihm dabei einige Werte übergeben, die er in einer
Datenbank ablegen soll und dann grafisch aufbereitet im lokalen oder
auch globalen Netz anbietet.
Die Werte soll der AVR regelmässig ermitteln.
Lässt sich sowas mit den vorhandenen Routinen realisieren?

Vielen Dank
Uwe

von Martin (Gast)


Lesenswert?

Hallo Uwe,

zu 1: was passiert wenn er nur die Hälfte der Seite anzeigt? Geht
danach noch ein telnet oder hängt der ganze webserver?


Martin

von Uwe Nagel (Gast)


Lesenswert?

Hallo Martin,

der Server hängt nicht, mit Telnet kann ich drauf zugreifen.
IE abbrechen, Firefox nehmen, Seite aufrufen, geht...
Stimmt nicht ganz: geht erst beim zweiten oder dritten Aufruf.
Vorher kommen nur Text und Bilder, aber kein Counter und der Browser
meldet ewig 'Laden...'.
Rufe ich mit Firefox den Server in zwei Tabs auf, zeigen beide nach
kurzer Zeit den beschriebenen Effekt (sollten ja nach 3s neu geladen
werden).

Ist der Server damit schon überlastet?

PC und Server sind über einen D-Link Router/Switch verbunden, falls das
eine Rolle spielt.

Gruß
Uwe

von Tobias Schneider (Gast)


Lesenswert?

Hi,
das mit dem Card init kommt daher, das bevor die 34 gelesn wird auch
eine 34 auf den bus geschrieben wird und daher einfach der selbe wert
zureuck kommt, wenn keine karte ngeschlossen ist.

von Uwe Nagel (Gast)


Lesenswert?

Hallo

das mit dem CardInit hab ich mir auch so vorgestellt, deshalb helfen
hier auch die Pullups.
Inzwischen habe ich festgestellt, das das ständige Neuladen der Seite
auch mit Firefox nicht dauerhaft geht, wenn man das System ganz in Ruhe
lässt. Irgendwann hängt es. Die Ausgabe über RS232 sieht übrigens
vernünftig aus und nach einer kurzen Pause kann man auch wieder auf der
Server zugreifen.
Mir scheint da gehen die Pakete unterwegs verloren, lade mir gerade mal
ETHEREAL...

Uwe

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Welche Version benutzt ihr??
Dieses Problem hatte ich bei meiner alten Versionen auch mit der Neuen
sollte dieses Problem nicht mehr auftauchen war ein Problem in
checksum.c im Anhang nochmal die neue.

Mfg Ulrich

von Uwe Nagel (Gast)


Lesenswert?

Hallo Ulrich

ich verwende V1.33 von deiner Homepage, da ist diese Version von
checksum.c drin.
Mit Ethereal komme ich noch nicht ganz klar, versuche noch die
Bedeutung der Werte hinter seq= und ack= zu verstehen.
Was ich sagen kann: die erste Hälfte von Index.htm kommt an, wird
quittiert und dann kommt unter Firefox oft, mit IE6 nie der zweite
Teil. Bei den Bildern gibt es keine Probleme, da kommen immer alle
Teile. Da aber das Ende vom HTML-Text fehlt, zeigt IE nichts an,
Firefox gibt sich wohl auch mit Bruchstücken zufrieden. Der wartet aber
ewig auf den Rest und führt das Reload nicht aus.

Uwe

von Uli (Gast)


Lesenswert?

Hallo,

Wird eine MMC/SD-Karte verwendet? und wenn nicht sollte man den MMC
Teil deaktivieren. Bei mir tritt kein Fehler auf.

Mfg uli

von Uwe Nagel (Gast)


Lesenswert?

Hallo,

den Teil muss ich ja deaktivieren, sonst wirft er mir auf RS232 immer
'keine MMC/SD-Karte gefunden' oder so ähnlich aus.
Ich vermute, dass es mit dem genauen Timing der Zugriffe zusammenhängt,
eventuell liegt es auch am Router. Habe gerade kein gekreuztes
Netzwerkkabel zur Hand, sonst würde ich mal eine direkte Verbindung
versuchen. Vielleicht morgen...
Erstmal werde ich mich mit Ethereal (echt interessantes Programm, wenn
man es versteht) und den diversen Protokollen beschäftigen.

Uwe

von Michael (Gast)


Lesenswert?

Hab mal mein bastelzimmer nach ner alten isa netzwerkkarte durchsucht
und nix gefunden sniff

Das projekt find ich genial und will mir das auch nachbasteln !

möchte das dann auch noch mit nem vs1001k erweitern und dann als
streaming server verwenden können,
evtl. nen tv ausgang um die files auch schön anzuzeigen wär dann auch
ganz witzig :-)

mal schauen

hätte noch jemand eine (oder auch mehr) alte netzwerkkarte rumfliegen
für mich?

von Uli (Gast)


Lesenswert?

Hallo @Uwe,

Ohne MMC/SD - Karte würde ich mal die Version 1.24 probieren! Ich
glaube nicht das es am Router liegt. Hast du die Orginalseite
verändert? Oder lauft es mit deiner Seite nicht.

Mfg Ulrich

von Elektrikser (Gast)


Lesenswert?

Ich habe deine V1.33 probiert. O.K. ich hatte [b]keine[/b]
MMC/SD-Karte...
Aber der Server reagierte sehr interessant darauf:
er brachte erstmal dreimal MMC/SD-Karte nicht gefunden und danach die
Meldung, das er eine gefunden hätte. Ja, wie jetzt? Das hat er bei mir
wiederholt gemacht. Sehr selten, dass er bei der Meldung "Keine
MMC/SD-Karte gefunden" blieb.
Der Bildaufbau der Webseite wahr natürlich (er suchte ja immer wieder
die MMC/SD...) nicht möglich. Die V1.24 hat sofort geklappt.
Danke Ulrich!

@Uli
Warum hast du eigentlich das Ein- und Ausschalten von Ports wieder
herausgenommen? Weiter oben im Thread, waren ja Versionen, in denen der
PB0 geschaltet wurde. Es würde mich sehr interessieren. Bin leider in
HTML ein frisch geschlüpftes Küken...
Hast du da noch ein Beispiel, wie das geht?

Gruß Gerd G.

von Tobias Schneider (Gast)


Lesenswert?

Hi,
falls jemand ein Programm zum beschreiben des EEPROM sucht kann das
unter ftp://152.104.125.40/cn/nic/rtl8019as/rset-8019(330).zip finden

Gruß Tobias

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Michael (Gast)


Lesenswert?

@guido
nö nu mußt nur das (330).zip mit aufnehmen
iss also nix *.exe :-)

von Jochen (Gast)


Lesenswert?

Uwe Nagel schrieb am 23.01.2005 11:56 :
> Eigentlich könnte ich so was wie einen minimal-Web*Browser*
> gebrauchen. Wozu? Ich möchte einfach ein PHP-Script auf
> einem anderen Server aufrufen und ihm dabei einige Werte
> übergeben, die er in einer Datenbank ablegen soll und
> dann grafisch aufbereitet im lokalen oder auch globalen
> Netz anbietet.

Du möchtest, dass der AVR zyklisch eine URL aufruft, und dabei
Parameter an dein php script übergibt? Warum nicht anders herum? Ich
hab das weiter oben schon mal angedeutet:
http://www.mikrocontroller.net/forum/read-4-87092.html#131470

Der AVR stellt dann gar kein html bereit, sondern nur eine einfache
(aber problemlos erweiterbare) XML-Datei. Die kann das php script
zyklisch (via cron job oder auch bei jedem seitenaufruf) abrufen und
die Daten weiterverarbeiten. Auf diese Weise könntest du auch jedem
Besucher die brandaktuellen Daten präsentieren. Und die Parameter wären
nicht auf URL Länge begrenzt. Sag Bescheid wenn du es so oder so
umgesetzt hast.

Gruß,
Jochen

von Uwe Nagel (Gast)


Lesenswert?

@Uli

ok, werde mir die V1.24 runterladen und heute abend ausprobieren. Ich
habe deine Originalseite verwendet und nur die darin enthaltene IP auf
meine Verhältnise angepasst.
Wie schon gesagt, es fehlt infach der zweite teil der HTML-Seite.
Ethereal sieht dieses Datenpaket zumindest auf der PC-Seite des Switchs
nicht, deshalb möchte ich eine Direktverbindung probieren.

@Jochen

auch eine Idee! Ich werde mir beide Versionen überlegen.

Uwe

von Tobias Schneider (Gast)


Lesenswert?

Hm irgendwie bekomm ich jezt keine leds mehr am switch zum leuchten. Die
 led an der karte leuchtet immer, egal ob ein kabekl dran ist oder
nicht. Die karte gibt auch brav 34 zurueck.

In dem konfig programm habe ich als medium 10 base-t no link layer
detection angemacht.

weis jemand rat?

Gruß Tobias

von Tobias Schneider (Gast)


Lesenswert?

Uli:
welches programm benuzt denn du?

von CDG (Gast)


Lesenswert?

@Michael

Ich habe noch passende Netzwerkkarten.

Schicke bitte eine Mail vieviel du brauchst.

MfG cdg

von Uwe Nagel (Gast)


Lesenswert?

@Tobias

meldet sich die Karte überhaupt?
34 ist kein Beweis, das zeigte mein Aufbau sogar ohne Karte.
Erst Pullup-Widerstände an PortA habe ohne Karte 255 gebracht.
Häng doch mal einen Pullup an PortA Bit 7, dann kommt ohne Karte
128+34=162.

Uwe

von Tobias Schneider (Gast)


Lesenswert?

hi,
das mit den 34 stimmt schon., hab den sorurce so veraendert, dass jezt
vorher noch 255 ausgegeben wird damit spaeter nicht wieder 34
eingelesen wird.

von Tobias Schneider (Gast)


Lesenswert?

Vorallem interessiert es mich gerade, ob es bei einer konfigurierten
karte normal ist, das die link led immer an ist ...

von Uli (Gast)


Lesenswert?

Hallo,

Natürlich benutze ich die Version 1.33! Est ist auch richtig das erst
mit Pullup Widerständen die 34 Aussgagefähig ist. Das Gleiche gilt für
die MMC/SD Karte! Wer nun jetzt den Source Code 1.33 ohne mmc benutzt
muß use_mmc auf 0 setzen.

mfg uli

von Tobias Schneider (Gast)


Lesenswert?

Hi,
wenn ich pin 65 auf high lege funktioniert alles(mit eingesetztem
eeprom) obwohl ich das eeprom im pc konfiguriert hatte. Hat dafuer
jemand eine erklaerung?

von Michael R. (Gast)


Lesenswert?

Moinsen...

Ich hab mir das ganze grade mal nachgebaut... Netzwerkkarte is ne alte
DM9008F (NE2000 kompatibel) hab die dann auf IO300 eingestellt und
IRQ10 (9 wollte er net) hab dann das kabel zum INT0 aber auch an IRQ10
gelötet und net an IRQ9... ;)

Als Basis dient mir im mom das rn-control1.4, und nun kommt mein
Problem... Es funzt alles klasse - bis auf die tatsache, das ich keine
antwort beim ping oder beim webseiten aufruf bekomme - hab v1.33 von
Uli grade in benutzung... ausgabe übers Terminal ist:

Init Network Card: ......... Init Ready!
Card Init: 34

My Mac: 1e.a.2b.2b.2d.4d
My IP : 192.168.1.101

hört sich also gut an und 192.168.1.101 is auch in meinem Netzwerk
richtig und auch noch nicht vergeben...

von Henning (Gast)


Lesenswert?

Deine mac adresse ist an der zweiten stelle nicht 2stellig. ändere das
doch einfach mal.
bekommst du am server denn überhaupt daten, soll heissen wird die
entsprechende empfangsroutine den aufgerufen?

von Michael R. (Gast)


Lesenswert?

Ups - hatte die einfach so gelassen, wie sie eh im source stand...

Habs nu geändert, jetzt kommt:
Init Network Card: ......... Init Ready!
Card Init: 34

My Mac: 1e.1f.2b.2c.2d.4d
My IP : 192.168.1.101

aber ping geht noch immer nicht - und mehr sagt er auch im terminal
net...

von Michael R. (Gast)


Lesenswert?

so, das mit der empfangroutine hatte ich eben glatt überlesen - ups...
%)

Ähm, nein... kommt nicht... habe jetzt in der interrupt4.c in zeile 36
das printf("interrupt\n"); reingenommen - und es sagt nie etwas von
einem interrupt im terminal... Heißt also, mein interrupt funzt net -
frage ist jetzt nur noch warum nicht? Windows98 meinte ja, ich hätte
IRQ10 und von da geht jetzt ja auch die Strippe nach Portd.2 (int0 am
m32)...

von Tobias Schneider (Gast)


Lesenswert?

Hi,
so hier mal ein kleines Video davon was ich bis jezt damit gemchat habe
:)
http://kudd-radio.com/~schneider/Film.wmv

Gruß Tobias

von Uwe Nagel (Gast)


Lesenswert?

@Michael
was Windows meint muss nicht unbedingt stimmen...
Probier mal die anderen Interrupt-Leitungen (insbesondere 9) aus.
Ich wollte auf meiner RTL8019 Karte unter DOS 9 einstellen, ging aber
nicht, da 9 schon irgendwas anderes belegt hatte. Hab ich 5
eingestellt, am Controller kam trotzdem 9...
Hat wohl was mit Plug and Pray zu tun.

Uwe

von Michael R. (Gast)


Lesenswert?

Also ich hab die Leitung von IRQ10 jetzt mal auf alle anderen verlegt
und geguckt... aber es ändert sich net wirklich was... auf manchen
bekomme ich endlos viele Interupts auf anderen garkeine oder er sagt
einfach nur "Overrun" aber das irgendwie zufällig... XD

Was ich sehr praktisch fänd, währe, wenn ich einfach den Eeprom
abmachen könnte - nur leider werd ich aus dem Datenblatt nicht schlau,
was dann standard is, wenn der net da is... weil der Eeprom is nur in
nen sockel gesteckt und von daher schön easy raus und reinsteckbar...
Aber vielleicht kann ja jemand von euch mir mit dem Datenblatt
weiterhelfen:
http://modding.mr-action.de/projects/porsche_cayenne_s/DM9008F.pdf

von Henning (Gast)


Lesenswert?

es wird zwar auf den picowebserver verwiesen, sieht aber recht ähnlich
aus:
http://www.heise.de/ct/machflott/projekte/55848

von Jon (Gast)


Lesenswert?

Hallo,

ich beschäftige mich in letzter Zeit intensiv mit dem Thema dieses
Threads und hänge vor allem in Sachen Ne2000 Programmierung den
"Vorgaben" von Ulrich hinterher.

Kann jemand eine gute Referenz empfehlen, wo die Ne2000 (oder AS8019)
spezifiziert ist? Ich habe auf die "Schnelle" nichts sinnvolles
finden können.

Gruß, Jon

von max (Gast)


Lesenswert?

das datenblatt, welches uli empfohlen hat, ist das einzige an specs was
ich gefunden hab.

ich hab mich dann auf den linux kernel treiber verlassen:

/usr/src/linux/drivers/net/ne.c
oder
/usr/src/linux/drivers/net/8390.*

nett anotiert und ein paar tricks kann man sich da auch abschauen

ansonsten empfehle ich noch:
- interrupts aus und karte regelmäßig auf neue packete abchecken
- mac auf 00:00:xx:xx:xx:xx setzen. im oberen bereich liegen irgendwo
die multicast adressen. das kann probleme mit schlauen switches/routern
geben.

von hebel23 (Gast)


Lesenswert?

@Michael R.:

also bei gezogenem EEPROM hat der RTL8019AS die Defaulteinstellungen:
-IRQ enable
-IRQ 2/9 (bedeutet INT0 am Chip, also PIN 4)
-I/O Baseadresse 0x300

Steht eigentlich alles im Datenblatt.
Zum Debuggen ist es sicher nützlich auch die TX und RX - LED´s
anzuschließen, damit man sieht ob physikalisch überhaupt irgendwas im
NIC ankommt.

Gruß Andreas

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Uli (Gast)


Lesenswert?

Hallo @hebel123,

Mir ist es schon passiert das bei gezogenen EEprom die Werte laut
Datenbatt nicht stimmten, wieso? Weil ein Pullup oder Pulldown
Widerstand an der Datenleitung dran war :-)
Aber sonst stimmt das Datenblatt ohne EEprom haben Realtekkarten mit
rtl8019 IRQ9 IO 300 und MAC 00:00:00:00:00:00
Allerdings sollte man mit einer eigenen MAC aufpassen! Am besten die
alte von der Netzwerkkarte aufschreiben.
Ich hatte als mac mein Nachnamen benutzt (hexcodiert) und dieser
funktionierte nicht, obwohl die Werte im erlaubten bereich waren.
Ausserdem sollte die MAC im Netzwerk nicht doppelt vergeben sein, das
sollte aber ziemlich schwer sein wer eine Zufallszahl benutzt.
Ansonsten empfehle ich demjenigen Lotto zu spielen. Achso das Internet
arbeitet mit IP Adressen und nicht mit MAC Adressen nur eine anmerkung
zum Schluß.

Mfg Ulrich

von hebel23 (Gast)


Lesenswert?

Hi Uli,
aber werden die IP-Adressen nicht nur benutzt um via ARP die
MAC-Adresse rauszubekommen um anschließend über diese eine Verbindung
herzustellen?

@Guido:
Genau genommen stehen im EEPROM sogar die kompletten Config 1-4
Register, die MAC-Adresse, die Product-ID, die Vendor-ID, Seriennummer
sowie ein Haufen Plug and Pray - Info´s...

Gruß Andreas

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Tobias Schneider (Gast)


Lesenswert?

Hi,
Uli hab einen fehler in Read_Ethernet_Frame() in rtl8019.c gefunden.
Ziemlich gegen ende der funktion heist es
buffer[tmp1 + 1] = 0;
damit schreibst du aber hinter den buffer. Bei großen packeten wird
dann bufferlen ueberschrieben und der mc hanegt sich auf.
es muss heisen
buffer[tmp1] = 0;

Wozu diese null ueberhaupt?

Gruß Tobias

von Tobias Schneider (Gast)


Lesenswert?

Ach ja, was sidn eigendlich die aenderungen von 1.33 zu 1.34 ?

von Uwe Nagel (Gast)


Lesenswert?

Habe mich nach zwei Wochen wieder mal mit diesem schönen Programm
beschäftigt. In der Zwischenzeit eine neue Netzwerkarte besorgt aber
immer noch Rätsel.
Das Originalprogramm in Version 1.34 läuft jetzt bei mir auf einem
mega32! Liegt aber nicht an der neuen Version, die alten gehen auch,
sondern daran das ich den Quarztakt reduziert habe!
Mit verschiedenen Quarzen zwischen 4 und 12 MHz läuft das Programm
stabil, mit 14.318 MHz nicht.
Jetzt habe ich in rtl8019.c überall, wo zwei nop's stehen 5 nop's
hingeschrieben, nun scheint es auch mit 14.318MHz zu laufen, jedoch
nicht mit 16MHz, da halfen auch zwei weitere nop's nicht.
Desweiteren verbesserte sich die Stabilität (bei 14MHz und zwei
nop's), wenn ich in die interrupt4.c ganz vorne ein
  printf("interrupt %d",ReadRTL(ISR));
einfüge (auch ohne den ReadRTL bringt es was), also hier ein wenig Zeit
verschwende.
Hier zeigt sich auch, dass 'interrupt 0' angezeigt wird, also ein
Interrupt ausgelöst wird, aber der RTL keine Ursache nennt!
Dieser Effekt verschwindet auch nicht ganz, wenn man den Interrupt nur
auf steigender Flanke auslöst, also in main.h schreibt:
#if defined (_AVR_ATmega32_)
  #define Networkcard_INT_Set()  MCUCR=0x03;
#endif
Warum eigentlich auf beiden Flanken? Das erzeugt doch nur eine
zusätzlichen Interrupt nach den eigentlichen, nämlich wenn der RTL
seine Interruptleitung wieder auf Null setzt. Letzteres führt
unweigerlich zur 'interrupt 0'-Meldung...
Kann es sein, dass der RTL hin und wieder einen Waitstate in seine
Zugriffe einlegen möchte?

Uwe

von Volker (Gast)


Lesenswert?

Hallo Uwe

Hast du bei deinem Mega32 das CLKOPT Fuse gesetzt?

Volker

von Elektrikser (Gast)


Lesenswert?

Könnten wir nicht das Programm mal besser beschreiben? Ulrich hatte da
zwar was vor, aber da geht anscheinend nix mehr weiter...

Gruß Elektrikser

von Jon (Gast)


Lesenswert?

Im Rahmen eines Uni-Projekts haben wir einen TCP/IP Stack implementiert,
bzw. sind noch dabei, und werden das in Kürze hier veröffentlichen (Wenn
die Dokumentation vervollständigt ist). Lediglich auf der
Hardwareschicht, die wir quasi von Ulrich abgekupfert haben, hängts
manchmal ein wenig, auch weil wir noch keine ordentliche Dokumentation
dazu gefunden haben und keine Zeit hatten das detailliert zu
analysieren. (Hat da jemand Ahnung?)

Es muss also nicht unbedingt eine Initiative zum Neuschreiben gegründet
werden, da gibts evt. schon was :-) Wiegesagt... in Kürze mehr dazu an
dieser Stelle.

von Elektrikser (Gast)


Lesenswert?

Ich wäre für jede Info dankbar, bzw. würde mich gerne beteiligen. Habe
da noch Probleme, alle Einzelheiten zu verstehen. Aber Rom wurde auch
nicht an einem Tage erschaffen...

von hebel23 (Gast)


Lesenswert?

Hallo allerseits,

ich verfolge schon seit längerem sehr interessiert diesen Thread. Ich
habe mir anhand des ulrichschen Codes, Ethernut und easyWEB und anderen
Quellen meinen eigenen TCP/IP-Stack zusammengebaut.
Beim näheren Studieren des TCP/IP-Standard´s bin ich nun auf einige
Ungereimtheiten gestoßen. Bei TCP/IP-Verbindungen geht es ja um eine
gesicherte Verbindung mit Rückkanal, Bestätigung etc.
Dazu ist:

1.Verbindungsaufbau
2.Übertragung
3.Verbindungsabbau

vorgesehen.
Das Problem ist, dass das irgendwie jeder anders zu machen scheint.
Es fängt schon bei der Definition des Socket-Status an (Socket_Close
(0), Socket_Open(1) etc.)
Ich habe im Netz mehrere verschiedene Kombinationen von Zahlenwerten
und Statusdefinitionen gefunden, was früher oder später schief gehen
muss.
Laut RFC793 scheint das Folgende korrekt zu sein:

// TCP Status
#define SOCKSTAT_CLOSED      0 // Verbindung getrennt
#define SOCKSTAT_LISTEN       1 // Warten auf TCP-Verbindungssetup
#define SOCKSTAT_SETSYNC     2 // Veränderung der Verbindung gesendet
#define SOCKSTAT_GETSYNC     3 // Veränderung der Verbindung empfangen
#define SOCKSTAT_ESTABLISHED 4 // Verbindung besteht
#define SOCKSTAT_CLOSEWAIT   5 // Auf Verbindungsabbau warten
#define SOCKSTAT_FINWAIT1    6 // Warten auf Abbruchbestätigung
#define SOCKSTAT_CLOSING     7 // Schließen der Verbindung
#define SOCKSTAT_LASTACK     8 // Letzte Bestätigung
#define SOCKSTAT_FINWAIT2    9 // Warten auf Abbruchbestätigung
#define SOCKSTAT_TIMEWAIT   10 // Warten

// TCP Flags
#define  FIN_FLAG 0x01 // Datenübertragung wird beendet (finish)
#define  SYN_FLAG 0x02 // Verbindung aufbauen (synchronize)
#define  RST_FLAG 0x04 // Verbindung neu initialisieren (reset)
#define  PSH_FLAG 0x08 // Datenübergabe an Anwendung (push)
#define  ACK_FLAG 0x10 // Datenübertragung bestätigen (acknowledged)

Mir ist bei Ulrich´s Code aufgefallen, dass z.B. nie der Status
Socket_Established(4) erreicht wird und daher eigentlich nie eine
"richtige" TCP/IP-Verbindung besteht.
Beim Verbindungsabbau, also wenn der "Auflegende" das FIN-Flag setzt,
wird hier die Verbindung nicht geordnet abgebaut (FINWAIT1 und
FINWAIT2), sondern per Reset-Flag hart abgebrochen. Das sollte IMHO nur
bei einem schweren Fehler (keine Antwort über Timeout etc.) gemacht
werden. Sicherlich geht der TCP/IP-Standard damit relativ tolerant um,
so dass Daten ausgetauscht werden können aber so 100%ig korrekt scheint
mir das nicht zu sein. Was denkt Ihr darüber?

Gruß Andreas

von Jon (Gast)


Lesenswert?

Hallo Andreas,

es spielt keine Rolle, mit welchen Zahlenwerten die Socket-Status
kodiert werden. Diese Zahlen sind sowieso intern und werden zwischen
verschiedenen Stacks ja nicht ausgetauscht. Wichtig ist lediglich, dass
die TCP Flags identisch sind, aber das sollte nun wirklich überall so
sein.

Ulrichs Stack macht kein echtes TCP. Er macht gerademal genug, um TCP
Verbindungen im Idealfall (keine Retransmissions, etc.) laufen zu
lassen. Das ist auf dem AVR insofern praktikabel, weil dort so wenig
RAM vorhanden ist, aber es geht natürlich besser ;-)

Wir sollten aber einen separaten Thread aufmachen glaube ich, wenn wir
die Interna von TCP diskutieren wollen.

von Uli (Gast)


Lesenswert?

Hallo @hebel23,

Jon nimmt mir das Wort aus dem Mund ;-), natürlich geht es elleganter,
und mit mehr Speicher wäre es auch kein Problem! Ich überprüfe auch
nicht die Checksumme von eingehenden Datenpacketen! In meinen
SourceCode ist das min. von TCP/IP implementiert was für eine Webseite
benötigt wird, wie bei vielen anderen mini Webservern auch und diese
benötigen noch zusatz Speicher.
Aber das ändert sich bald :-) Was neues ist schon in der mache.

Mfg Ulrich

von Roland (Gast)


Lesenswert?

Hallo,

ist es möglich Daten über UDP an den Webserver zu schicken ? Wenn ja
würde mir ein kurzes Beispiel sehr weiter helfen.

Vielen Dank Roland

von Tobias Schneider (Gast)


Lesenswert?

Hi,
hier eine einfach implementierung:

-----------------udp.h------------------------
#ifndef _UDP_H
#define _UDP_H

#define UDP_OFFSET        0x22

struct UDP_Header  {
  unsigned int   UDP_SrcPort;  //der Quellport für das Packet
  unsigned int   UDP_DestPort;  //der Zielport für das Packet
  unsigned int  UDP_PacketLen;  //Packetlänge incl. Header
  unsigned int  UDP_CheckSum;
};

#define  UDP_SRCPORT        UDP_OFFSET+0x00  //der Quellport für das 
Packet
#define  UDP_DESTPORT      UDP_OFFSET+0x02  //der Zielport für das 
Packet
#define  UDP_PACKETLEN      UDP_OFFSET+0x04//Packetlänge incl. Header
#define  UDP_CHECKSUM      UDP_OFFSET+0x06
#define UDP_DATASTART      UDP_OFFSET+0x08
#define UDP_HEADERLEN      0x08

#endif
--------------------------udp.h----------------------------


----------------------------interrupt4.c-------------------
...
struct UDP_Header *udp;
udp = (struct UDP_Header *)&packet[UDP_OFFSET];
...
if(ip->IP_Proto == PROT_UDP){
   if (udp->UDP_DestPort == SOCKET_BLINKENLIGHTS){
  unsigned int temp;
  temp = udp->UDP_PacketLen << 8;
  temp |= udp->UDP_PacketLen>>8;
  blinkendata(packet+UDP_DATASTART,temp-UDP_HEADERLEN);
   }
...
----------------------------interrupt4.c-------------------

Du musst natuerlich in in socket.h ein define fuer deine port adresse
anlegen. ich uebergebe der funkzion fuer die daten einfach nur den
bereich fuer die rohdaten. du kannst natuerlich auch einen pointer auf
die udp struct uebergeben, dann koennen auch noch quelladresse etc.
ausgwertet werden. Ich empfange damit blinkenlights frames. du musst
aber aufpassen, dass eine udp packet in den buffer passen muss. sonst
wird es beschnitten


Gruß Tobias

von Roland (Gast)


Lesenswert?

Hallo

Vielen Dank Tobias für dein Beispiel. leider verstehe ich den Code
nicht wirklich da ich ein C Anfänger bin. Die udp.h habe ich denke ich
einigermaßen durchschaut aber die interrupt4.c verstehe ich ncith
wirklich. Wo genau muss ich deinen Code dort einfügen ? Und in welcher
Variablen befinden sich dann die empfangenen Daten ?


Vielen Dank schon mal
Roland

von hebel23 (Gast)


Lesenswert?

@Ulrich:
Alles klar. Naja ich hab das Ganze auf einem Mega128 laufen - Speicher
hab ich also genug. Vielleicht könnte man wirklich einen neuen Thread
aufmachen, für die Leute die an den Tiefen von TCP/IP interessiert
sind.
Was benutzt Du denn für Literatur?

Gruß Andreas

von Roland (Gast)


Lesenswert?

Am besten bräuchte ich den Code um einfach alles was über den UDP
reinkommt mit der UART zu weiter zu senden.

von Jon (Gast)


Lesenswert?

@Andreas & Co.

Ich habe mal einen neuen Thread aufgemacht, der sich evt. nicht nur um
Ulrichs Webserver dreht, sondern umfassendere Diskussionen bzgl.
Netzwerkprotokollen zulässt.

http://www.mikrocontroller.net/forum/read-4-157859.html#new

Gruß, Jon

von Michi (Gast)


Lesenswert?

Mir würde eine Festplatte an dem Webserver gefallen. Da mir das
technische Verständnis für die Erweiterung fehlt hoffe ich das jemand
genauso denkt und mehr von der Materie versteht.

Hat jemand Interesse den Webserver um eine Festplatte zu erweitern?

von Roland (Gast)


Lesenswert?

Hallo

nochmal eins vorneweg: Ich hab von C keine Ahnung also bitte nicht böse
sein. Ich habe mal versucht irgendwie mit Tobias Programm an die per UDP
übermittelten Daten zu kommen. Dazu habe ich gedacht dass er mit dem
Befehl "blinkendata(packet+UDP_DATASTART,temp-UDP_HEADERLEN);" die
UDP Daten in die Variable blinkendata schreibt. Jetzt scheint es mir
allerdings eher als wäre blinkendata eine Funktion ? Wie kann ich denn
die Daten in eine Variable bekommen oder in welcher sind sie schon drin
?

Vielen Dank schon mal für die hoffentlich anfängerkompatiblen
Antworten
Roland

von Tobias Schneider (Gast)


Lesenswert?

Hallo Roland,
ja blinkendata ist eine funktion die die daten auswertet und die daten
komprimiert an mein blinkenled weiterleitet. Das hat dann aber nichts
mehr mit dem netzwerkteil zu tun und daher hab ich sie auch nicht
begefuegt.

Die daten des udp packets lassen sich im packet buffer wiederfinden.
Und zwar beginnen die eigendlichen nutzdaten bei packet[UDP_DATASTART]
und haben die laenge von temp-UDP_HEADERLEN wobei temp die zuvor
berechnete laenge des gesammten udp packets ist. das blinkendata() sich
nicht um die herkunft des packets und checksummen kuemmert hab ich
einfach einen zeiger auf das erste nutzdatan byte uebergeben und das
ist nunmal packet+UDP_DATASTART

Ich hoffe dir geholfen zu haben

Gruß Tobias

von Roland (Gast)


Lesenswert?

Hallo Tobias,

ja du hast mir schon mal weitergeholfen. Vielen Dank dafür schon mal.
Aber kannst du mir ein konkretes Beispiel geben wie ich die Daten in
eine Variable kriege ? Ich hab leider wirklich keine Ahnung von C und
bin daher für jede Hilfe dankbar.

von OldBug (Gast)


Lesenswert?

Die Daten stehen bereits in einer "Variablen"; und zwar in einer, die
im Speicher an der Adresse "packet+UDP_DATASTART" liegt.
Du brauchst die Daten ja nicht noch ein mal kopieren, das wäre
Speicherverschwendung. Damit man nicht wild im Speicher herumliest,
muss man natürlich auch noch die Länge des Packets kennen.

Verständlich?

von Roland (Gast)


Lesenswert?

Hallo (OldBug),

hm ja also die Daten sind also im Speicher. Aber in keiner Variablen
mit der ich sie einfach abrufen kann. Um sie abzurufen muss ich sagen
an welcher Stelle sie sind und wie lang sie sind? Wenn ich die Daten
jetzt einfach mit dem UART weiterschicken will geht dass mit dem outp
Befehl ? Kann mir das jemand konkret kurz aufschreiben wie das geht ?

Vielen Dank schon mal wieder

von Jon (Gast)


Lesenswert?

Hallo Roland,

ich glaube das kann man so allgemein nicht vormachen. C ist zwar nicht
superkompliziert, hat aber schon viele Eigenheiten, die sich so
zwischen zwei Sätzen nicht wirklich erklären lassen. Falls Du im
Englischen gut bewandert bist, kann ich Dir folgendes Buch sehr ans
Herz legen. Wenn Du dort unter Arrays und Pointern nachschlägst wirst
Du vieles von dem, was hier schon geschrieben wurde, verstehen.

http://www.amazon.de/exec/obidos/ASIN/0131103628/qid=1109323054/ref=sr_8_xs_ap_i1_xgl/302-6235070-0919213

Viele Grüße,
Jon

von Roland (Gast)


Lesenswert?

Hallo,

wieso kann man das nicht so allgemein machen ? Ich bin überzeugter
Basic Programmierer und wir machen so was so :
Print (UDPDaten)
Ich kann irgendwie nicht glauben dass es in C so ein großes Problem ist
eine "Variable" (was das in C euch auch immer heißt) mit dem UART zu
senden. Kann mir niemand kurz die Zeile hinschreiben, wie das geht,
dann seid ihr mich auch los, es sei denn es ist wirklich nicht so
einfach möglich.

Gruß
Roland

von Jon (Gast)


Lesenswert?

Natürlich ist es möglich per
  printf("Test");
eine Nachricht über das UART zu senden. Das setzt aber voraus, dass Du
einen String in der Hand hast. Das eingehende Paket ist aber ein Array
von Charactern. Da muss man einfach die Datentypen von C verstehen. Ein
Character Array in C ist potentiell auch als String zu verstehen, wenn
es durch ein 0-Character abgeschlossen wird. Soviel zur Vorrede.

Die Daten stehen im Speicher in der Variable packet, die ein Character
Array darstellt. Über packet[UDP_DATASTART] gelangst Du an die Stelle
im Array, an dem die von Dir gesuchten Daten stehen. Wenn Du an das
Ende der Daten einen 0-Character setzt, hasst Du einen String in der
Hand, den Du ausgeben kannst.

packet[UDP_DATASTART+temp-UDP_HEADERLEN+1]='\0';
printf("%s",&(packet[UDP_DATASTART]));

Aber wiegesagt. Das Speicher- und Variablenkonzept von C unterscheidet
sich doch deutlich von Sprachen wie Basic oder Pascal. Man kann sehr
effizient auf dem Speicher operieren, ohne ihn durch unnötige Variablen
zu verschwenden, was gerade bei AVR Programmierung sehr vorteilhaft
ist.

Das mit dem Buch war vorhin nicht schnippig gemeint. Ich habe daraus
sehr viel gelernt/nachgeschlagen und habs gern weiterempfohlen. Was
hilft Dir der Beispielcode von oben (der vielleicht sogar fehlerhaft
ist, ich habs nicht getestet), wenn die Zusammenhänge nicht klar sind?
:-)

von Ralf Kirmis (Gast)


Lesenswert?

@Tobias

Die Funktion mit dem Blinkenleds würde mich näher interessieren,
da ich auch ein Blinkenled habe.
Kannst Du noch mehr zu dem Thema veröffentlichen ?
z.b. Die Funktion selber, oder den gesamten Source ?
evtl. Schaltplan.

Vielen Dank,

Ralf

von Roland (Gast)


Lesenswert?

Hallo Jon,

jetzt funktioniert es wunderbar. Vielen Dank für dein Bemühen. Das mit
dem Buch war schon OK. Wenn ich mich mal mit C auseinander setzen will
werde ich auf jeden Fall darauf zurück kommen, da es auch bei Amazon
durchgehen sehr gut bewertet wird. Nur im Moment habe ich dazu keine
Zeit und wollte das Problem nur möglichst schnell und einfach lösen.

Also nochmal vielen Dank an Tobias, OldBug und Jon
Roland

von Tobias Schneider (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Ralf,

ich habe das blinkenled vor ca. 2 Jahren gebaut. Damals war die Idee,
es mit einem eeprom und einer rs232 Schnittstelle auszustatten, um
Filme im eeprom abzuspeichern bzw. es an der seriellen schnittstelle zu
betreiben. Dafuer hab eich einen AT89S8252 verwendet. Das ist ein 8051er
von Atmel mit 8kb isp flash im dip 40 Gehaeuse. Der abgespeckte Code
fuer die Ethernet Variante braucht gerademal etwa 250Byte. Die leds
werden nicht per multiplex angesteuert, sondern jede Spalte mit 8 low
current leds haengt an einem CD4094 der wiederum am mc haengt. Strobe
und clock aller Schieberegister sind dabei zusammengafasst. Damals habe
ich mir noch ein kleines java Programm geschrieben, das die
blinknelights Packete entgegennahm und auf die serielle schnittstelle
ausgab. Mit der Möglichkeit, dies in einem MC mit RTL8019 zu
realisieren habe ich einfach noch eine Platine gemacht um sie auf die
Lochrasterplatine des Blinkenled zu stecken. Sie besteht aus einem
ATMega8 mit RTL8019 und dem zugehoerigen Kleinkram und basiert
ebenfalls auf dem Design von Uli. Auf ihr laeuft der abgeaenderte Code
von Uli. Es werden etwa 2kb Speicher benoetigt. Das Eternetmodul
kommuniziert per spi mit dem 8051er. Ich habe mal die Sourcecodes und
eagle Dateien in ein zip gepackt. Vll. kannst du ja was damit anfangen.
Der code fuer den 89S8252 und den mega8 ista auf das noetigste
abgespeckt und enthaelt keinerlei unoetige Features.

Wenn ich das Projekt nochmal machen sollte wuerde ich einfach einen
groesseren Mega mit mehr io-pins nehmen und die leds direkt in einer
Matrix ansteuern. Ich schaetze, dass der Code nicht groeser als 4kb
werden duerfte ob ein mega16 jedoch genug pins hat habe ich jezt nicht
gezaehlt.

Die Beschaltung fuer die Schieberegister habe ich jezt nicht als
Schaltplan sie sollte jedoch ziemlich leicht aus dem Code auzulesen
sein.

Gruß Tobias

von Michael (Gast)


Lesenswert?

Hallo,

ich habe mir Ulrichs Projekt mit einem ATmega162 (hat 2 kB internes
RAM) aufgebaut. Ein Ping auf den Webserver funktioniert, aber leider
krieg ich im Internet Explorer die Homepage des Webservers nicht
angezeigt (da muss ich doch einfach nur http://192.168.0.101 eingeben,
oder?).

Ich verwende momentan keine MMC, der Compilerswitch USE_MMC ist
auskommentiert. Im internen Flash müsste doch aber die Homepage auch
abgelegt sein, richtig? Reichen die 2 kB RAM des ATmega162 aus oder
könnte daher das Problem kommen?

Bin für Tipps dankbar.

Gruß
Michael

von Uwe Nagel (Gast)


Lesenswert?

Hallo Michael,

die 2k RAM reichen, ich habe es für den mega32 compiliert, der hat auch
nicht mehr. Aber Probleme hab ich auch damit, siehe weiter oben.
Passt die IP-Adresse zu deinem Netzwerk? Sonst musst Du sie anpassen.
Kommt aus der RS232 was raus? Kommt überhaupt was im Browser? Bei mir
kommt oft nur ein blauer Hintergrund. Stabil läuft das Programm bei mir
nur bis etwa 12 MHz Takt ohne Änderungen. Versuchs mal mit kleinerer
Frequenz, vielleicht hilft's.

Uwe

von Michael (Gast)


Lesenswert?

Ups, ich meinte natürlich 1kB RAM beim ATmega162. Reicht das trotzdem?

Die IP-Adresse passt zu meinem Netzwerk, ein Ping funktioniert ja auch
problemlos, bloß im Internet Explorer bekomme ich nichts angezeigt
(Seite kann nicht gefunden werden). Auch auf dem UART kommt das
richtige raus. Die Taktfrequenz ist bei mir 8 MHz.

Gruß
Michael

von Jon (Gast)


Lesenswert?

1kB dürfte schon verdammt knapp sein.

von Jon (Gast)


Lesenswert?

ach, noch ein hinweis. MTU soweit runter setzen wie möglich und alle
Debugmeldungen auskommentieren (die fressen auch RAM).

von Michael (Gast)


Lesenswert?

Ich hab das ganze nun mal mit einem ATmega32 statt des ATmega162
probiert, mit dem Mega32 funktioniert alles wunderbar, die Homepage
wird im Internet Explorer angezeigt.

Somit scheinen die 1 kB RAM des ATmega162 nicht auszureichen.
Wo könnte man denn noch RAM-Speicherplatz sparen, damit man auch mit 1
kB auskommen könnte?

Gruß
Michael

von Jon (Gast)


Lesenswert?

RAM wird zum einen durch den Ethernet Frame verwendet (den kannst Du
mittels der MTU verkleinern) und durch Stack und Heap, auf denen sich

* Variablen (auch die Strings der Debugmeldungen), und
* Funktionsaufrufe

tummeln. Neben dem Heruntersetzen der MTU könntest Du also sämtliche
Funktionsaufrufe vermeiden und alles innerhalb des Interrupt Handlers
(interrupt4.c) unterbringen.

Alle Strings für Debugmeldungen oder andere Ausgaben kann man über das
Schlüsselwort PROGMEM im ROM unterbringen, braucht dann aber eine
angepasste print Routine.

von Martin Schuhmacher (Gast)


Lesenswert?

Oben wurde mal gefragt, ob eine SMC 83C795 funktioniert. Hab' hier eine
in Verwendung, allerdings ist mi unklar, ob ich irgendwo einen Fehler
bei der Verdrahtung habe oder die Software den 83c795 nicht mag.
Weiss jemand genaueres ?
Softwareversion: 1.38, Board: ExBoard 1.4 (mit Anpassungen an meine
Anforderungen, aber unbedeutend).

Ansonsten währe eine passende ISA Karte mit 8019 nicht schlecht, hat
noch jemand zu viele ?

von Jon (Gast)


Lesenswert?

Ich habs mit ner SMC 83C79QF auf nem Board probiert, das sonst mit dem
RTL 8019 funktioniert, sie ging nicht. Suchen im Netz ergaben auch,
dass  diese Karte nicht NE2000 kompatibel ist.

von Max (Gast)


Lesenswert?

Hallo!

ich habe ebenfalls den webserver von ulli gebaut und für meine zwecke
adaptiert. nur etwas störend ist, dass ich für einen upload vom pc auf
den webserver ca 70kByte/s erreiche und für einen download vom
webserver etwa nur so 5-6KByte/s. Ich schätze dass liegt daran, dass
der uC beim download die CRC usw selbst generieren muss. Würde es daher
etwas bringen zum bsp einen CRC Lookup Table auf der SD karte zu
speicher, um die CRC berechnung zu beschleunigen?

ich verwende einen atmega32 für den webserver.

schöne grüße,
Max

von Martin Schuhmacher (Gast)


Lesenswert?

Tach,
habe mittlerweile eine rtl8019as ergattern können.
Funktion: leider nicht 100%ig,
Ausgabe:
Init Network Card: ......... Init Ready!
Init: Okay 34
My Mac: 0.80.c6.5.5c.29
My IP : 10.1.1.11

Overrun!

Ping: funktioniert, telnet: funktioniert
http Anfragen timen out, aber auf der
ser. Konsole erschreint die angefragte Datei.

Hardware: das Board von Uli mit einem ATMega 128
da ich keine mmc/sd Karte angeschlossen habe,
habe ich die main.c um "#undef USE_MMC" ergänzt.

von Elektrikser (Gast)


Lesenswert?

Hallo,
die MMC kannst du in der mmc.h deaktivieren, indem du USE_MMC auf null
setzt. Also:
#define  USE_MMC  0
ziemlich am Anfang der Datei. Da steht normalerweise ne 1 drin.

Gruß Elektrikser

von Martin Schuhmacher (Gast)


Lesenswert?

Herzliches Dankeschön. Daran lags.
Jetzt lacht mir der Ulrich aus dem Browser heraus entgegen :-)

von Arne Rossius (Gast)


Lesenswert?

Tag,

ich moechte noch was zum Mega8-Webserver beitragen. Ich hab mir den
gerade auch mal aufgebaut und das fertige Mega8-Hexfile
reinprogrammiert. Zuerst lief leider gar nichts (die Karte hat zwar die
Link-LED angemacht, wenn ich ein Kabel reingesteckt habe, aber Ping und
weiteres ging nicht). Die Loesung des Problems: 4,7k-Pullups an den
Datenleitungen! Ausserdem muss ich dem AVR aus irgendwelchen Gruenden
auch nach dem Einschalten immer noch mal einen Reset geben (obwohl der
BOD an ist), bevor der Webserver im Netzwerk erreichbar ist. Und so
sieht das ganze bei mir aus:
http://www.elektronik-kompendium.de/public/arnerossius/temp/Webserver-Mega8_0.jpg

Jetzt werde ich mich mal dran versuchen, die neuste Version des
Webservers auf den Mega8 zu portieren, weil ich unter Linux nur die
neuste Version vom avr-gcc nutzen kann, die den alten Code ja leider
nicht mehr mag.

von Elektrikser (Gast)


Lesenswert?

Hallo,
bekomme nur eine 404-Meldung wenn ich auf den Link klicke. Hast du noch
nicht upgeloadet, oder habe ich ein Problem?

Gruß Elektrikser

von Arne Rossius (Gast)


Lesenswert?

Sorry, ist mein Fehler, ich habe noch 2 weitere Bilder gemacht und das
dann alles in ein Unterverzeichnis gepackt und hab nicht dran gedacht,
dass hier noch ein Link ist. Der neue Link ist jetzt
http://www.elektronik-kompendium.de/public/arnerossius/temp/Webserver/

von Arne Rossius (Gast)


Lesenswert?

Ein Freund hat mir gerade etwas geholfen, es ist gar nicht noetig, den
neuen Code zu portieren, es muessen einfach folgende Zeilen hinter das
#include <avr/signal.h>
in main.c eingefuegt werden, damit der alte Mega8-Code mit dem neuen
avr-gcc funktioniert:

#define  cbi(sfr, bit)   ((sfr) &= ~_BV(bit))
#define  sbi(sfr, bit)   ((sfr) |= _BV(bit))
#define  bit_is_set(sfr, bit)   ((sfr) & _BV(bit))
#define  bit_is_clear(sfr, bit)   (!((sfr) & _BV(bit)))
#define  loop_until_bit_is_set(sfr, bit)   do { } while
(bit_is_clear(sfr, bit))
#define  loop_until_bit_is_clear(sfr, bit)   do { } while
(bit_is_set(sfr, bit))

Unter Linux muessen ausserdem alle Dateinamen, die Grossbuchstaben
enthalten (Device.c, Device.h und ARP.c), in Kleinbuchstaben geaendert
werden (device.c, device.h, arp.c). Die Pfadangaben im Makefile
scheinen unter Linux nicht beachtet zu werden, koennen also ungeaendert
drinbleiben.

Und schon funktioniert's :-)
(getestet mit avr-gcc 3.4.3)

von Ulrich Radig (Gast)


Lesenswert?

Hallo,

Diese Funktionen wie cbi,sbi... benutze ich schon lange nicht mehr!
Den neue Source Code gibt es schon lange auf meiner Homepage.

Mfg Ulrich

von Arne Rossius (Gast)


Lesenswert?

Hallo Ulrich,

dass die Funktionen in deinem Source nicht mehr drinstehen, habe ich
gesehen, aber ich konnte auf deiner Seite keinen Code fuer den Mega8
finden, deshalb habe ich die letzte Version von mega8test.zip aus
diesem Thread verwendet.

von Arne Rossius (Gast)


Lesenswert?

Noch ein Nachtrag: es finktioniert scheinbar doch nicht. Der Code laesst
sich zwar fehler- und Warning-los kompilieren, aber der Webserver
funktioniert trotzdem nicht. Der Code ist auch voellig anders als der
im beiliegenden Hexfile (der erste Unterschied schon an Adresse 0000).

Ich sage wieder Bescheid, wenn ich rausgefunden habe, was da
schieflaeuft.

von Arne Rossius (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab' es jetzt aufgegeben mit dem alten Mega8-Paket und mal den
neusten Source auf Mega8 zu portieren versucht. Hat auch geklappt :-)
Ich habe den Source und ein funktionierendes Hexfile mal angehaengt,
aber bitte nicht erschrecken, der Code sieht ein bisschen aus wie
Schlachtfeld, ich werde da noch etwas dran herumspielen und alles etwas
ordnen. Der Fehler, dass man den AVR immer erst einmal resetten muss,
ist auch weg.
Uebrigens, man kriegt knapp 3kB Programmspeicher frei, wenn man aus
webpage.c das Bild rauswirft!

von Stefan Seegel (Gast)


Lesenswert?

@Uli:

Kann man eigentlich Deine Hardware zusammen mit der Ethernut Software
verwenden ?

Stefan

von hebel23 (Gast)


Lesenswert?

...das geht nicht ohne Änderungen. Ulrich hat seinen Stack (extra?) so
gebaut, dass der NIC an jedem beliebigen Port eines AVR hängen kann.
Bei der Ethernuthardware dagegen hängt der NIC am Memorymapped-IO des
Mega128 und wird auch über diesen angesprochen...

Andreas

von plitzi (Gast)


Lesenswert?

...wobei sich der Umfang der Änderungen eigentlich in Grenzen halten
müsste. Ich kenne zwar den Code nicht (und habe auch recht wenig Ahnung
von C) aber meines Erachtens müssten ja "nur" die "low-level Ein- und
Ausgabe Routinen" (und etwas in der Initialisierung natürlich) geändert
werden. Also aus den über Portzugriffe "gestrickten" Ein- und Ausgaben
muüssten st und ld Zugriffe werden, oder?

Jörg

von Ulrich Radig (Gast)


Lesenswert?

Hallo,

So wie ich meine kann man meine Hardware nicht für Ethernut verwenden.
Das liegt daran ich wollte einen Webserver ganz ohne externes SRAM
aufbauen. Also Processor und die Netzwerkkarte FERTIG. Ethernut ist von
der Software wesentlich besser geschrieben (meine Software war nur mal
ein Versuch gewesen) dieser Stack benötigt aber noch externes SRAM. Das
war für meine Kaffeemaschine mit Ethernet doch etwas viel aufwand :-)
deshalb entstand meine Software.


Mfg Ulrich

von Tobias S. (tobias)


Lesenswert?

Hi,
wer die Platine von Guido hat kann da ein Ethernut draufmachen. Imgrund
emuss man nur ein paar Paramter im Konfigurationstool bearbeiten.

In der CVS-Version gibt es glaub bereits Hardwaredefinitionen dafuer.

Gruss Tobias

von Martin Schuhmacher (Gast)


Lesenswert?

ich bins mal wieder...
hab' mich mit dem ATMega128-Board von Uli und einer SD Karte
versucht.
Anschluss der Karte an PB3,5,6,7. Pegelanpassung über 1k8 / 3k6
Widerstände und 2x1n4148 in der Versorgungsspannung.

Problem: Ausgabe "wie wild" keine SD/MMC Karte gefunden.
Rebootet der ATMega grübel ? Zur Stabilisierung habe ich noch 100nF
zu den 1µF zwischen Reset / GND gelötet. Hat jemand ne Idee ? Vielen
Dank schonmal im Voraus.

von Volkmar (Gast)


Lesenswert?

@Martin,

neuer ATmega128? Mega103-Compatibility-Fuse angepaßt?

Volkmar

von Stefan Seegel (Gast)


Lesenswert?

Was hat das nun mit dem Thread zu tun ?
Bitte mal in einem MMC/SD Thread fragen. Ach ja, die Erzeugung der
Betriebsspannung mit 2 Dioden ist nicht sehr gut, bitte einen
Spannungsregler, z.B. LM317, verwenden.
Ansonsten:
DI/DO richtig rum angeschlossen ?
Als Clock Leitung auch den SCLK verwendet (weiß grad nicht die PB
Zuordnungen auswendig)

Stefan

von Elektrikser (Gast)


Lesenswert?

Verwende einen Spannungsregler, der dir 3,0 V oder 3,3 V liefert. Mit
den zwei Dioden kommst du auf 3,6 bis 3,8 V und das verweigern viele
der SD-Karten. Sie gehen zwar nicht kaputt, aber arbeiten tun sie dann
auch nix.

Gruß Elektrikser

von Joline (Gast)


Lesenswert?

Hallo,

ich habe den Webserver mit Holger's Platine (www.mikrocontroller.com)
aufgebaut. Aber ich bekomme den irgendwie nicht zu Laufen. :o(

Ich habe zwei Netzwerkarten mit UM9008 Chip. Sollten lt. Uli auch
laufen. Alle Werte auf den Karten sind korrekt eingestellt (9,300). Und
trotzdem bekomme ich kein Card Init: OKAY 34.

Ich bekam anfangs meistens folgende Werte:
Card Init: ERROR(255).

Dann habe ich einen Pullup an einen Dataport gehangen. Fortan bekomme
ich nun:
Card Init: ERROR(162).

Wäre wahrscheinlich auch in Ordnung. Die Karte wird eben nicht erkannt.
Aber bei jedem 4.-8. Reset erhalte ich:
Card Init: ERROR(34).

Das heisst doch, beim ersten Test ReadRTL() bekommt der AVR einen Werte
!= 34 und beim anschliessenden printf ist der Wert dann '34'. Also
wird die Karte doch manchmal erkannt, oder?

Und wenn ich dann einen
Card Init: ERROR(34)
bekommen habe, dann kommt nach einiger Zeit auch ein
Overrun!

Also wird doch auch ein Interrupt ausgelöst!? Ich habe nun auch mal in
der Interrupt-Routine ein printf("interrupt") eingefügt, damit ich
sehe, ob und wann die Funktion aufgerufen wird. Nun habe ich folgendes
entdeckt: Wenn ich nach einem Card Init: ERROR(34) meinen Rechner mit
der Karte verbinde, kommt nach einer Weile ein 'interrupt' und gleich
darauf ein 'overrun!'. Dann pinge ich den Webserver mal an. Eine Weile
tut sich gar nichts, aber nach 30-60s (da steht schon lange im
DOS-Fenster mehrfach 'Zeitüberschreitung' drin) werden plötzlich 4-5
Zeilen 'interrupt' z.T. auch 'overrun!' auf der seriellen
Schnittstelle ausgegeben.

Mir sieht das Ganze nach einem gewaltigen Timing-Problem aus.

Ich hoffe, meine Ausführungen waren nicht zu wirr. Hat hier vielleicht
einer eine Idee, was ich noch machen kann, damit es geht?

Danke
Joline

P.S. Ich benutze übrigens die Quellen von www.mikrocontroller.com
v1.38.

von Joachim B. (Gast)


Lesenswert?

Hallo Joline,

hast Du die Fuse-Bits richtig programmiert?
Bei www.mikrocontroller.com findest Du ein Bild
mit der richtigen Einstellung.

Gruß
Joachim

von Joline (Gast)


Lesenswert?

Hallo Joachim,

ja, habe ich.

Joline

von Sssssss (Gast)


Lesenswert?

Hi!

Funktioniert der Webserver auch mit ner UM9007AF ?
Hab hier zwei rumliegen und gerade versucht den Webserver
aufzubauen.
Ich bekomme aber nur:
Card Init: ERROR(255).
zurück.

Wenn ich die NW Karte nicht mit 5V versorge bekomme  ich
Card Init: ERROR(31).

Eine meiner Karten scheint defekt zu sein, ich höre ein leises 2 Hz(?)
klacken dass aber beim Avr reset kurz aufhört.

Ich hab das eeprom der karten abgezogen.
CPU ist nen mega32.

jemand ne Idee ?

von Birger* (Gast)


Lesenswert?

Mein Aufbau inklusive AT90CAN128 mit CAN-Abindung, RS232 sowie LCD
entwickelte einen hörbaren hochfrequenten Ton, den ich lange einfach
nicht lokalisieren konnte. Hatte alles schon wieder ausgebaut oder
abgelötet, bis sich herausstellte, dass meine RS232-Treiber MAX202 dran
schuld war. Hat jemand schon mal piepende Treiber gehabt? Es scheint an
meinem Platinenlayout zu liegen, denn in einer anderen Schaltung piept
der Baustein nicht.

von Sssssss (Gast)


Lesenswert?

Hi!

Meine fiepende Karte kam daher dass ich beim ISA Stecker die Leitungen
komplett
vertauscht angelötet hatte :o
Ich dachte die Zeichnung im Pdf sei wenn man von unten auf die karte
guckt, sie zeigt sie aber von oben ...
Hab mich gestern gewundert wieso Vcc und GND nicht an die dicken
Leitungen gehen g
Hatte aber nur 5V mit 200mA Begrenzung dran (die sprang nicht an)

Leider funktioniert die Karte auch korrekt angeschlossen nicht..
Entweder hab ich sie getoastet oder sie gingen eh nicht.
Werde heute mal versuchen ne rtl8019 zu organisieren ;)

von Birger* (Gast)


Lesenswert?

Meine Verwendung des Webservers soll irgendein Schalten/Abfragen von
Ports (LEDs u. Schalter) werden. Weiter oben im Thread wurde ja schon
mehrfach nach Webseiten-Vorlagen bzw. Hinweisen, wie man das dann im
Quellcode aktiviert, gemacht. Leider gab's keine/unzureichende
Antworten, die alten Quellcodes sind nicht mehr vorhanden oder die
Beispiele hier sind weder kompilierbar noch fehlerfrei. Mag vielleicht
jemand nochmal sein Wissen hier posten? Das wäre nett.

von Elektrikser (Gast)


Lesenswert?

Ich versuche einmal es zu erklären.
In der Original-Version von Ulrich wird die Webpage alle paar Sekunden
aktualisiert und in der Mitte links wird der Zähler erhöht. Wenn du in
der webpage.c schaust, wirst du an der Stelle des Zählers "%VA1"
finden.
In der tcp.h wird in der Funktion tcp_add_data (...) diese Zeichenkette
gesucht, ausgeblendet und durch die Anzahl der Aktualisierungen
ersetzt.
1
// Wird VA1 gefunden %VA1 Variable1 einfügen
2
if (strncmp_P("VA1",(pointer+1),3) == 0)
3
{
4
  pointer++; //don't show "%VA1"
5
  pointer++; //don't show "%VA1"
6
  pointer++; //don't show "%VA1"
7
  pointer++; //don't show "%VA1"
8
         
9
  unsigned int tmp=sitecounter;
10
  char counter[5]; 
11
12
  for(unsigned char i=0; i<5; i++)
13
  {
14
    counter[i] = (unsigned char)(tmp%10) + '0';
15
    tmp/=10;
16
    }
17
                                 
18
  for(unsigned char i=0; i<5; i++)
19
    {
20
    buffer[result16] = counter[4-i];
21
    result16++;
22
    } 
23
    sitecounter++;
24
    }
Was man jetzt machen kann ist, dass man eine schöne Website macht und
mit z. B. Checkboxen den Zustand der Eingänge anzeigt:
1
"<p><font size=\"4\">&nbsp;&nbsp;&nbsp;&nbsp;Port D Bit 0
2
:&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"test0\"
3
value=\"1\" %VA3></font></p>"

Die Abfrage erfolgt dann auch wieder in der tcp.c, z.B. so:
1
if (strncmp_P("VA3",(pointer+1),3) == 0)
2
  {
3
  pointer++; //don't show "%VA3"
4
  pointer++; //don't show "%VA3"
5
  pointer++; //don't show "%VA3"
6
  pointer++; //don't show "%VA3"
7
          
8
  char counter[8] = "dekcehc";
9
         
10
  if (PIND & (1<<7))
11
  {
12
    for(int i=0; i<7; i++)
13
      {
14
      buffer[result16] = counter[6-i];
15
      result16++;
16
      } 
17
  }
18
}

Ich hoffe ein bißchen geholfen zu haben. Ich wollte eigentlich mein
komplettes Programm posten. Den habe ich zum Testen für ein Projekt
verwendet (eine Art Wetterstation mit Netzwerk und Speicherung auf
MMC), aber da muß ich noch viel ändern und erstmal überflüssiges
ausholzen.

Gruß Elektrikser

von Elektrikser (Gast)


Lesenswert?

1
Port D Bit 0
 stimmt nicht. Es sollte Bit 7 sein. Kommt davon,
weil ich zusammenkopiert habe.

von Sssssss (Gast)


Lesenswert?

Hi!

Also ich habs jetzt laufen :D

Bei mir steckt eine Genius LAN K0236012 Karte im ISA Slot...
Jumper steht auf AUTO.
Dann ergibt sich eine io von 0x300 und IRQ 5. Also hab ich den irq
einfach umgelötet ;)

Die UM9007 Karten werden jetzt auch mit OK erkannt.
Wenn ich den Int wieder umlöte laufen die evtl auch ;)

Meine Fehler:
- JTAG war beim Atmega32 an (ARGHHH...)
- zu doof zum Kabel stecken aufm Experimentierboard


Was mir gerade aufgefallen ist:
In der tcp.h wird für html und jpeg derselbe OK Header gesendet.
Dort sollte beim jpg anfordern auch der jpg header geschickt werden ;)

von Sssssss (Gast)


Lesenswert?

sorry meinte natürlich httpd.c:

Statt:
1
tcp_add_data (HTTP_OK1,buffer,bufferlen);

Besser was wie:
1
if ( memcmp(File_Name,"ulrich.jpg",10) == 0)
2
    tcp_add_data (HTTP_OK2,buffer,bufferlen);
3
else
4
    tcp_add_data (HTTP_OK1,buffer,bufferlen);

von Birger* (Gast)


Lesenswert?

Schön das Ganze bis hier, ich kann jetzt bei mir 'nen Taster mit ner
Box abfragen. Und wie geht der umgekehrte Weg? Ich klicke in so 'ne
Box und der Webserver zündet die Bombe oder so.

von Birger* (Gast)


Lesenswert?

Im Übrigen sind diese netten Codeschnibsel hier mit Firefox nicht
sichtbar - es erscheint viel graue Fläche.

von Birger* (Gast)


Lesenswert?

Komisch, jetzt gehen sie doch.

von Elektrikser (Gast)


Lesenswert?

Da muss dann die Abfrage in der httpd.c erfolgen. Du brauchst dann aber
noch eine Anzeige auf deiner Webseite, da nach einem Refresh der Haken
aus der Checkbox verschwindet.

von Birger* (Gast)


Lesenswert?

Geht das noch etwas genauer? Wie müßte so ein HTML-Tag aussehen und wie
fragt man dieses dann in der httpd.c ab? Bin leider kein
Webseiten-Experte, die Mechanismen sind mir nicht so ganz klar.

von Elektrikser (Gast)


Lesenswert?

HTML oder Webpages programmiere ich normalerweise auch nicht. Noch nie
vorher gemacht. Ich habe so lange probiert, bis ich einen Weg gefunden
habe. Ist vielleicht nicht der Schönste, aber funktioniert.

webpage.c:
1
"<p><font size=\"4\">&nbsp;&nbsp;&nbsp;&nbsp;Port B Bit 0
2
:&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"b0\"
3
value=\"1\" %VB0></font></p>"

Damit werden zwei Checkboxen angezeigt. Die erste ist für das Ein- und
Ausschalten gedacht und die zweite als Anzeige. Jetzt muss in der
httpd.c abgefragt werden, ob im HTML-Header die Checkbox „b0“ gesetzt
worden ist. Das kann man in der Funktion httpd  machen. Bei mir steht
es nach dem die beiden Ulrich-Bilder verarbeitet werden.
1
DDRB = 0xff;  
2
if ( strstr(File_Name,"b0=1") != 0)
3
  {
4
  if (bit_is_set(PORTB,0))
5
    {
6
    PORTB &= ~(1<<DDB0);
7
    }
8
    else
9
    {
10
    PORTB |= (1<<DDB0);
11
    }
12
  }
Die zweite Checkbox kann jetzt noch in der tcp.c abgefragt werden, aber
das ist das gleiche, wie bei den Eingängen.


Gruß Elektrikser

von Joline (Gast)


Lesenswert?

Hi,

ich habe die Sache jetzt eine Weile (aus Zeitmangel und aus Frust, weil
ich es nicht hinbekomme) liegen lassen. Aber ich bekomme das einfach
nicht zu Laufen. Was ich auch anstelle, immer dasselbe Ergebnis
(http://www.mikrocontroller.net/forum/read-4-87092.html#229383).  :(

Ich habe die Original-Quellen von Holger benutzt und die Fuses genau
wie auf seiner Seite beschrieben, gesetzt. Aufgebaut ist das auch auf
seiner Platine (Also scheiden Verdrahtungsfehler ja fast aus...). Das
Einzige, was anders ist, ist die Netzwerkkarte. das ist eben eine mit
UM9008 Chip. Aber die sollte ja auch laufen. Habe die Konfiguration nun
auch schon mehrfach überprüft (IRQ9, I/O 0x300, Auto-Mode, Keine
EEPROM-Adresse).

Was könnte noch schief laufen?

Joline

von Birger* (Gast)


Lesenswert?

Der Frust kann beim Stochern im Nebel meist recht groß werden. Bei mir
hat das Ganze glücklicherweise auf Anhieb funktioniert. Ich hatte mir
'ne eigene Platine nach eigenen Bedürfnissen entwickelt. Nun klemmt's
höchstens an der Software noch ein wenig.

Zu Joline, nur mal so'n paar Fragen: Hast du die Karte mal in 'nem PC
auf Funktion getestet? Wenn sie dort geht. PNP mit 'nem Konfig-Tool
ausgeschaltet und Medientyp richtig gewählt? PullUps halte ich bei den
Datenleitungen nicht für nötig bzw. ist überflüssig. Wenn du Probleme
mit den Interrupts hast, verbinde doch einfach brutal alle ISA-IRQs
(B4, B21-B25) und führe diese dann gemeinsam zum Interruptanschluß des
Mikrocontrollers; das hab ich auch so gemacht. Dann, ist dein
Mikrocontroller noch in Ordnung, irgendwelche Leitungen vieleicht doch
vertauscht oder Kurzschlüsse oder gar alles spiegelverkehrt
(Betriebsblindheit?!), geht beim Einstöpseln des Kabels die Link-LED
nach 1-2 Sekunden wirklich an und beim Abziehen auch wieder aus? Wenn
letzteres klemmt, ist was mit der Resetleitung nicht in Ordnung. Ist
beim Kompilieren der richtige Prozessor im Makefile gewählt? Die Liste
ließe sich fortsetzen....

von Joline (Gast)


Lesenswert?

@Birger*

1. Ich habe 2 Karten gleichen Typs. Beide liefen vorher in
verschiedenen PC's. Mit dem PNP-Tool habe ich die Einstellungen
vorgenommen und abgespeichert (Beim nächsten Neustart kontrolliert).

2. Ich benutze die Platine von Holger. Da sind schon alle Interrupts
miteinander verbunden. Leitungen vertauscht kann deswegen auch nicht
sein, es geht ja bei anderen. Und in benutze einen ATMega32 und die
passende SW von Holgers Seite. Also alles "Standard".

3. Ja, die Link-LED geht an. Anschliessend kommt nach einer gewissen
Zeit "Overrun!". Also wird die Interrupt-Funktion ja auch
aufgerufen.

Wa mich irgendwie stutzig macht, ist die Tatsache, dass manchmal nach
der Initialisierung ein 'Card Init: ERROR(34)' erscheint. Wenn man
sich den Code anschaut, dann wird zum Test, ob alles i.O. war, ein
ReadRTL(0) ausgeführt. Ist der Return-Wert != 34, dann erfolgt die
Ausgabe von 'ERROR(...)'. Was dann in den Klammern steht, ist der
Return-Wert eines weiteren ReadRTL(0). Und wenn der nun 34 ist, dann
ist doch nun alles OK, oder? Aber warum erst beim 2. Mal?

Und warum erfolgt die Ausgabe 'Overrun!'?

von Birger* (Gast)


Lesenswert?

Leider kann ich dir aber über diesen Weg nicht noch weiter helfen. Und
weitere übliche Allgemeinplätze helfen dir so nicht. Meine Erfahrung
sagt mir allerdings, dass der Fehler meistens vor dem Bildschirm sitzt.
Auf jeden Fall scheint bei dir doch irgendwie der Wurm drin.

von Joline (Gast)


Lesenswert?

@Birger*

Ja,ja. Ich weiss schon: Fehler 40.  ;)

von Andreas G. (ag1brg)


Angehängte Dateien:

Lesenswert?

Hi allerseits
Zuerst einmal Hut ab vor Uli und Holger!
'n Spitzen Projekt das da auf die Füße gestellt worden ist. Respekt!!

Ich hab den AVR Webserver meinerseits nachgebaut.
Technische Daten:
- AtMega32 auf STK500
- Netzwerkplatine von Uli (leicht abgeändert)
- 128MB sdCard mit 7407er Pegelwandler
- I2C Bus

Ausserdem hab ich ein eigenes Layout entworfen und dabei höchsten Wert
auf minimalen Platzverbrauch gelegt.

Dabei ist jetzt eine Platine entstanden die nicht grösser ist als eine
!Checkkarte!

Nun stehe ich allerdings vor dem Problem dass sich die (professionelle)
Platinengerstellung für mich alleine fast nicht rechnet.

Also möchte ich hier einfach mal auf den Busch klopfen ob jemand
Interesse an so einem Board hätte.
Der Preis einer "nackten" Platine würde bei ca 20EUR liegen.

Technische Daten:
- Platine 8.5 * 5.5 cm
- Doppelseitig + Durchkontaktiert
- mit Lötstopplack und Bestückungsdruck

Im Angang ein vorläufiger Screenshot

Schaltplan und Bestückungsplan auf Anfrage erhältlich

Die meisten verwendeten Bauteile sind soweit Standart und leicht
erhältlich.
Widerstände und Kondensatoren sind hauptsächlich in 0603er SMD
Bauform.
Unter Umständen könnte ich auch fertig bestückte Platinen anbieten.

tnx für eure Aufmerksamkeit
Andreas

von Andreas G. (ag1brg)


Lesenswert?

Hi
mir is da leider n Fehler in der Kalkulation unterlaufen
Die Leiterplatte kostet NICHT 20Eur sonder nur 10Eur

sry für das Missgeschick

Andreas

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Andreas G. (ag1brg)


Lesenswert?

@ Guido
also von dir is dieses Luxusgerät!
Meinen Respekt

Danke für deinen Tip. Ich nehm' ihn mir zu Herzen.

Zum Thema kleiner:
der einzige RTL8019-Based Webserver den ich gesehen hab der kleiner
ist, war die Ausführung mit ATMega8. Der ist Hard- und
Softwarewaremässig ziemlich "geschrumpft" worden um auf diese Grösse
zu kommen.
Meine Interpretation von Ulis Webserver Basiert auf 'nem Mega32 und
hat so eben 32kB Flash, ausserdem hab ich die SD-Card+Pegelwandler
onboard dabei!

MFG
Andreas

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Birger* (Gast)


Lesenswert?

Schöner Vorschlag, ich vermisse nur richtige Steckanschlüsse für die
Stromversorgung. Die Idee bei einer hergestellten Platine mit
Pfostensteckkontakten zu hantieren halte ich persönlich für nicht
tragbar. Dann hab ich am Ende eine fast perfekte Platine, die wiederum
nur mit Gebastel funktioniert. Ich verwende für meine Projekte immer
diese Hohlstecker (bei Reichelt HEBW 21). Und wenn ich die nicht mag,
kann ich immer noch mit Freidrahtgetstrippe hantieren - nur umgekehrt
geht's nicht. Und warum muss es ein ATmega32 sein? Der mega128 bietet
doch mehr Speicher für alle Lebenslagen und damit wäre das Projekt
deutlich zukunftssicherer. Was nützt eine Fallstudie mit einem knapp zu
kleinen Mikrocontroller, die nachher in der Ecke liegt? Und wenn ich
hier schon rumnöle, dann würde ich eine professionelle Platine so
herstellen, dass der RTL8019 nicht per Portpolling sondern via
memory-mapped-Modus angesprochen wird. Das würde das System sicherlich
noch um Einiges beschleunigen und die Anpassungen im Quellcode wären
minimal. Die letztliche Platinengröße wäre für mich hierbei
zweitrangig, denn für mich zählt Funktionalität und Performance.

von Andreas G. (ag1brg)


Lesenswert?

Meine Version war Ursprünglich als Erweiterung für bestehende oder
zukünftige Projekte gedacht. Um z.B. ein Gerät um eine Webkonfiguration
zu erweitern...
Die Server-Platine sollte mit den Pfostensteckern auf die
Projekt-Platine "gesandwitcht" werden könne.
Für Standalone Webserver liegen ja bereits ausreichend Bauvorschläge
vor.
Der Webserver sollte über seinen "Slave" mit Spannung versorgt
werden, weshalb auch keine eigene Netzbuchse vorhanden ist.

Und zum Thema in der Ecke liegen:
Mit einer compilierten Version von Ulis Software ist gerade mal knapp
über die Hälfte des Flashspeichers des ATMega32 belegt. Und da ist
immernoch die Webseite mit einem Bild dabei!

Mit dem Thema Portpolling vs Memory Mapping hab ich mich noch nicht
beschäftigt.
Aber wäre gut wen du dazu evtl. Unterlagen oder einen Link hättest
Tnx an Birger*

von Freaky (Gast)


Lesenswert?

Hi,
Ich möchte nur eine Telnet verbindung, mit der ich ein paar
einstellungen vornehmen kann. kann ich so was auch mit einem PIC oder
HC12 machen?
MfG Freaky

von Birger* (Gast)


Lesenswert?

Hat sich eigentlich schon mal jemand Gedanken über die Nutzung des
Eprom-Sockels auf den Netzwerkkarten gemacht? Könnte man dort nicht
auch wunderbar Daten - sprich Webseiten ablegen? Hätte doch den Reiz,
keine SD-Karte oder internen Controllerspeicher samt umfangreichen
Routinen  gebrauchen zu müssen. Das spart etwas Programmierzeit.

Dazu müßte man doch eigentlich nur wissen, wie die Karte mit dem
Mikrocontroller über den Adress-Datenbus (also memory-mapped)
verdrahtet gehört. Vorteil wäre auch ein schnellerer Zugriff auf die
Register der Netzwerkkarte selber. Für interessante und konstruktive
Vorschläge bin ich zu haben.

von Bent Rössing (Gast)


Lesenswert?

Hi (oder Mahlzeit :-))

Ich bin gerade beim basteln mit dem RTC EPSON RX8564LCBT
-leider sehr kleines Gehäuse!
Hat jemand dazu eine Eagelib gebastelt und würde sie mir zur verfügung
stellen ?

von No N. (birger)


Lesenswert?

abo

von Patrick (Gast)


Lesenswert?

Hallo,

suche auch noch eine RTL8019-ISA-Netzwerkkarte! Hat irgendjemand noch
welche auf Lager und kann 3 Stück verkaufen?

Würde mich über eine Antwort freuen :-)

Grüße,
Patrick

von cdg (Gast)


Lesenswert?

@Patrick
Mit Mailadresse hättest du schon antwort ...

MfG cdg

von Patrick (Gast)


Lesenswert?

Entschuldigung, natürlich.

Meine Mailadresse: pady (at) freakmail.de

von Max Friedrichs (Gast)


Lesenswert?

Hallo Leute,

Ich suche noch RTL8019-ISA-Netzwerkkarten!
Wenn jemand noch welche hat und die verkauft bitte melden.

Saiztmp (at) gmail.com


Danke

von Ludwig W. (lordludwig)


Lesenswert?

Ebay Artikelnummern für RTL8019 Netzwerkkarten:

200004558184
290005374996
180006214792 (2 davon)
170003454377 (JUMPERBAR!!!!)

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.