Gast
#101787
@Björn Hast Du Dir schon mal Deine neue Seite aus dem Netz angeschaut? Stichwort: Sonderzeichen.
|
Anzeige
|
Netzwerkkarte mit RTL8019
Gast
#101787
@Björn Hast Du Dir schon mal Deine neue Seite aus dem Netz angeschaut? Stichwort: Sonderzeichen.
Gast
#101788
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.
Gast
#101789
Hallo, Neuer Source Code auf meine HP V1.16 Mfg Ulrich
Gast
#101790
Was ist denn neu in dieser Version ???????? Die Beschreibung von version.txt geht nur bis 1.13 . Gruss Mattias
Gast
#101791
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
Gast
#101792
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
Gast
#101793
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
Gast
#101794
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
Gast
#101795
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
Gast
#101796
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
Gast
#101797
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
Gast
#101798
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
Gast
#101799
Also den Einplatinen - Server habe ich ja gemacht. Der ist vollständig von Hand geroutet. Sowas kann Eagle nicht.... Gruss Mattias
Gast
#101800
Hallo, Alle Platinen von mir sind Handgeroutet. Mfg Ulrich
Gast
#101801
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
Gast
#101802
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
Gast
#101803
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?
Gast
#101804
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
Gast
#101805
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
Gast
#101806
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
Gast
#101807
Hat eigentlich schon mal jemand darüber nachgedacht, eine Sammelbestellung für Platinen für den Webserver anzuleiern?
Gast
#101808
@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...
Gast
#101809
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..
Gast
#101810
@Uli Hast du noch so ca 10 Stueck von den Netzwerkkarten abzugeben? Gruß Tobias
Gast
#101811
Hallo, Leider habe ich nur noch 5 Netzwerkkarten, die ich selber gebrauche! Mfg Uli
Gast
#101812
Hi, ok ist nicht so tragisch. Gruß Tobias
Gast
#101813
@Tobias Ich habe noch genügend. Wenn du immer noch welche haben willst - melde dich bei mir. MFG Volker
Gast
#101814
Dieser Beitrag wurde auf Wunsch des Autors geloescht.
Gast
#101815
@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
Gast
#101816
Hi, wieviel willst du denn pro stueck haben? wierde gern noch ein paar nehmen Gruß Tobias
Gast
#101817
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
Gast
#101818
Hi, wuerd da dann gern noch 5 stueck nehmen(hab inzwischen noch welche bei ebay gefunden). Ich schreib dir noch ne mail. Gruß Tobias
Gast
#101819
Hallo Volker, ich würde gern 5-10 Karten bestellen, wenn das möglich ist. Gruß, Jon
Gast
#101820
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ß
Gast
#101821
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
Gast
#101822
Hallo @Frank Bertling Ja so ist es, es reichen eine Netzwerkkarte ein Mega32 und wenige passive Bauteile aus. Mfg Uli
Gast
#101823
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
Gast
#101824
Hallo, 3com Karten funktionieren nicht!!! Fehler meiner seits. Hatte hier so viele Karten liegen und eine verwechselt. Mfg Ulrich
Gast
#101825
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
Gast
#101826
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
Gast
#101827
Hallo, Ich benutze auch den RTL8019AS Chipsatz. Mfg Uli
Gast
#101828
Danke für eure Antworten! Geht denn der 8029er Chipsatz auch? Viele Grüsse Volker
Gast
#101829
Hallo, Leider nein, der RTL8029 hat ein PCI Interface und lässt sich nicht ohne weiteres an ein µC anhängen. Mfg Uli
Gast
#101830
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
Gast
#101831
Die Karte bei Pollin ist aber eindeutig ne ISA-Karte.
Gast
#101832
Hallo, Eigentlich alle NE2000 kompatible Netzwerk-Karten. Am besten Realtek 8019, war gerade bei EBay da gibt es schöne kompakte Netzwerkmodule. Mfg Ulrich
Gast
#101833
..ausser 3com, das hab ich schon gelernt :-) Was für Netzwerkmodule meinst Du? Viele Grüsse Volker
Gast
#101834
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...
Gast
#101835
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
Gast
#101836
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?
Gast
#101837
Hallo Tobias, nicht das du deswegen genauso viele schlaflose Nächte hast wie ich: das ist der CRC der MAC PDU - genau 4byte. Martin
Gast
#101838
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
Gast
#101839
externer quatz?? nim mal einen 16MHz Quarz an XTAL1 / XTAL2 mit den 2 kondensatoren.. sonnst stimmen die ganzen timings nicht mehr!!!
Gast
#101840
@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
Gast
#101841
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
Gast
#101842
@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
Gast
#101843
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.
Gast
#101844
@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
Gast
#101845
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
Gast
#101846
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.
Gast
#101847
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.
Gast
#101848
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 :-)
Gast
#101849
>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.
Gast
#101850
@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
Gast
#101851
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
Gast
#101852
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
Gast
#101853
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
Gast
#101854
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.
Gast
#101855
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
Gast
#101856
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
Gast
#101857
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
Gast
#101858
Hallo, Wird eine MMC/SD-Karte verwendet? und wenn nicht sollte man den MMC Teil deaktivieren. Bei mir tritt kein Fehler auf. Mfg uli
Gast
#101859
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
Gast
#101860
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?
Gast
#101861
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
Gast
#101862
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.
Gast
#101863
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
Gast
#101864
Dieser Beitrag wurde auf Wunsch des Autors geloescht.
Gast
#101865
@guido nö nu mußt nur das (330).zip mit aufnehmen iss also nix *.exe :-)
Gast
#101866
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
Gast
#101867
@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
Gast
#101868
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
Gast
#101869
Uli: welches programm benuzt denn du?
Gast
#101870
@Michael Ich habe noch passende Netzwerkkarten. Schicke bitte eine Mail vieviel du brauchst. MfG cdg
Gast
#101871
@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
Gast
#101872
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.
Gast
#101873
Vorallem interessiert es mich gerade, ob es bei einer konfigurierten karte normal ist, das die link led immer an ist ...
Gast
#101874
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
Gast
#101875
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?
Gast
#101876
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...
Gast
#101877
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?
Gast
#101878
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...
Gast
#101879
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)...
Gast
#101880
Hi, so hier mal ein kleines Video davon was ich bis jezt damit gemchat habe :) http://kudd-radio.com/~schneider/Film.wmv Gruß Tobias
Gast
#101881
@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
Gast
#101882
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
Gast
#101883
es wird zwar auf den picowebserver verwiesen, sieht aber recht ähnlich aus: http://www.heise.de/ct/machflott/projekte/55848
Gast
#101884
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
Gast
#101885
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.
Gast
#101886
@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
Gast
#101887
Dieser Beitrag wurde auf Wunsch des Autors geloescht.
Gast
#101888
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
Gast
#101889
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
Gast
#101890
Dieser Beitrag wurde auf Wunsch des Autors geloescht.
Gast
#101891
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
Gast
#101892
Ach ja, was sidn eigendlich die aenderungen von 1.33 zu 1.34 ?
Gast
#101893
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
Gast
#101894
Hallo Uwe Hast du bei deinem Mega32 das CLKOPT Fuse gesetzt? Volker
Gast
#101895
Könnten wir nicht das Programm mal besser beschreiben? Ulrich hatte da zwar was vor, aber da geht anscheinend nix mehr weiter... Gruß Elektrikser
Gast
#101896
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.
Gast
#101897
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...
Gast
#101898
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
Gast
#101899
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.
Gast
#101900
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
Gast
#101901
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
Gast
#101902
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
Gast
#101903
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
Gast
#101904
@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
Gast
#101905
Am besten bräuchte ich den Code um einfach alles was über den UDP reinkommt mit der UART zu weiter zu senden.
Gast
#101906
@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
Gast
#101907
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?
Gast
#101908
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
Gast
#101909
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
Gast
#101910
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.
Gast
#101911
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?
Gast
#101912
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
Gast
#101913
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
Gast
#101914
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
Gast
#101915
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?
:-)
Gast
#101916
@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
Gast
#101917
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
Gast
#101918
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
Gast
#101919
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
Gast
#101920
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
Gast
#101921
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
Gast
#101922
1kB dürfte schon verdammt knapp sein.
Gast
#101923
ach, noch ein hinweis. MTU soweit runter setzen wie möglich und alle Debugmeldungen auskommentieren (die fressen auch RAM).
Gast
#101924
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
Gast
#101925
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.
Gast
#101926
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 ?
Gast
#101927
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.
Gast
#101928
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
Gast
#101929
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.
Gast
#101930
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
Gast
#101931
Herzliches Dankeschön. Daran lags. Jetzt lacht mir der Ulrich aus dem Browser heraus entgegen :-)
Gast
#101932
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.
Gast
#101933
Hallo, bekomme nur eine 404-Meldung wenn ich auf den Link klicke. Hast du noch nicht upgeloadet, oder habe ich ein Problem? Gruß Elektrikser
Gast
#101934
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/
Gast
#101935
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)
Gast
#101936
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
Gast
#101937
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.
Gast
#101938
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.
Gast
#101939
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!
Gast
#101940
@Uli: Kann man eigentlich Deine Hardware zusammen mit der Ethernut Software verwenden ? Stefan
Gast
#101941
...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
Gast
#101942
...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
Gast
#101943
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 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
Gast
#101945
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.
Gast
#101946
@Martin, neuer ATmega128? Mega103-Compatibility-Fuse angepaßt? Volkmar
Gast
#101947
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
Gast
#101948
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
Gast
#101949
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.
Gast
#101950
Hallo Joline, hast Du die Fuse-Bits richtig programmiert? Bei www.mikrocontroller.com findest Du ein Bild mit der richtigen Einstellung. Gruß Joachim
Gast
#101951
Hallo Joachim, ja, habe ich. Joline
Gast
#101952
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 ?
Gast
#101953
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.
Gast
#101954
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 ;)
Gast
#101955
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.
Gast
#101956
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.
Was man jetzt machen kann ist, dass man eine schöne Website macht und mit z. B. Checkboxen den Zustand der Eingänge anzeigt:
Die Abfrage erfolgt dann auch wieder in der tcp.c, z.B. so:
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
Gast
#101957
stimmt nicht. Es sollte Bit 7 sein. Kommt davon, weil ich zusammenkopiert habe.
Gast
#101958
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 ;)
Gast
#101959
sorry meinte natürlich httpd.c: Statt:
Besser was wie:
Gast
#101960
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.
Gast
#101961
Im Übrigen sind diese netten Codeschnibsel hier mit Firefox nicht sichtbar - es erscheint viel graue Fläche.
Gast
#101962
Komisch, jetzt gehen sie doch.
Gast
#101963
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.
Gast
#101964
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.
Gast
#101965
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:
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.
Die zweite Checkbox kann jetzt noch in der tcp.c abgefragt werden, aber das ist das gleiche, wie bei den Eingängen. Gruß Elektrikser
Gast
#101966
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
Gast
#101967
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....
Gast
#101968
@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!'?
Gast
#101969
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.
Gast
#101970
@Birger* Ja,ja. Ich weiss schon: Fehler 40. ;) 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 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
Gast
#101973
(Dieser Beitrag wurde geloescht) @ 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
Gast
#101975
(Dieser Beitrag wurde geloescht)
Gast
#101976
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. 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*
Gast
#101978
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
Gast
#101979
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.
Gast
#101980
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 ? abo
Gast
#101982
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
Gast
#101983
@Patrick Mit Mailadresse hättest du schon antwort ... MfG cdg
Gast
#101984
Entschuldigung, natürlich. Meine Mailadresse: pady (at) freakmail.de
Gast
#101985
Hallo Leute, Ich suche noch RTL8019-ISA-Netzwerkkarten! Wenn jemand noch welche hat und die verkauft bitte melden. Saiztmp (at) gmail.com Danke Ebay Artikelnummern für RTL8019 Netzwerkkarten: 200004558184 290005374996 180006214792 (2 davon) 170003454377 (JUMPERBAR!!!!) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|