Hallo, habe auf meiner Webseite einen kleinen Webserver mit einer Netzwerkkarte und AVR µC gebaut. Wer noch eine Netzwerkkarte für ein eigenes Projekt benötigt, findet hier auch eine keine Platine mit einem Realtek RTL8019 Chip zum selber bauen(das Layout ist einseitig). Die Layouts liegen als Eagle files mit der Libary vor. Mfg Ulrich Ragig meine Page www.ulrichradig.de
Hallo Uli, prima. Ich hatte die Seite schon vor einigen Tagen gefunden, habe aber noch keine Netzwerkkarte mit RTL8019. Ich werd's demnächst mal mit einer anderen Karte probieren. Ich brauche nur noch eine ISA-Steckleiste. Joline P.S. Inzwischen funzt Deine Seite ja auch mit Opera. ;o)
Hallo Joline, falls Du noch den ISA-Stecker suchst: www.Reichelt.de: STECKER 62-254 Preis: 0,45 Euro Grüße, André
hallo, ich habe mit interesse das projekt gesehen. ist es dann möglich mit browsern wie iexplorer die ad-kanäle und ports darzustellen und gibt es dafür beispiele? für eine antwort wäre ich dankbar. tschaui
Dieses ist bisher nicht realisiert stellt aber kein Problem dar. Dieses werde ich die nächsten Tage mal in Angriff nehmen. Zur Zeit lassen sich nur die Ports steuern. Mfg Ulrich Radig
danke für die antwort, ich bin gespannt. so etwas ähnliches wird ab und zu mal bei ebay angeboten.
Hallo Ulrich, das Layout für die einseitige Realtek Netzwerkkarte gefällt mir, werde ich wahrscheinlich nachbauen. Aber bist Du sicher daß R1 220 Ohm haben soll ? Soweit ich daß in Errinerung habe, muss dieser Widerstand dem Wellenwiderstand das Kabels entsprechen, also 100 Ohm haben ?! Grüße Andreas
Hallo, Laut Realtek ( www.realtek.com.tw ) soll der widerstand 200 ohm betragen. da dieser nicht vorhanden war habe ich halt 220 ohm genommen. funzt aber genauso. Mfg Ulrich Radig
Hallo! Ich habe selber diesen Webserver nachgebaut und hat soweit super funktioniert. jedoch ist mir vor einer woche die Realtek RTL8019AS ISA Netzwerkkarte aus irgend einem grund kaputt gegangen. deshalb hab ich versucht eine neue aufzutreiben, war aber nicht erfolgreich. hätte jemand eine solche NIC für mich billig übrig? (am besten gleich 2 g). - wäre super! danke schon mal, Max
Ja habe ich noch, inzwischen habe jetzt so viele netzwerkkarten getestet und herumliegen das ich eine abtreten kann. Mfg Ulrich
hi, benoetigt man fuer dein projekt eigendlich unbedingt eine karte mit diesem realtek chipsatz oder reicht auch jede normale isa(ne2000) ethernetkarte? Gruß Tobias
NEIN! es reicht eine ISA Netzwerkkarte (NE2000 Kompatibel) getestet habe ich Netzwerkkarten natürlich Realtek RTL8019, Accton mit MPX2 Chipsatz, 3Com 3c509TX und eine eines mir unbekannten Herstellers mit UM9008F Chipsatz. Mfg Uli
Hinzugekommen ist eine Realtek Netzwerkkarte mit RTL8009 Chipsatz Mfg Ulrich Radig
Hallo, hat schon mal einer einen anderen als den ATMega103/128 ausprobiert? Funktioniert aus ein ATMega8 oder ATMega16? Joline
Nur mit einen Mega32 mit 2Kbyte bisher noch getestet. Sollte aber erstmal nichts dagegensprechen das Programm an einen mega8 anzupassen. Mfg Uli
Hallo, wenn ich die Quellen compiliere, wird eine .hex Datei erzeugt, die 19.814 Bytes groß ist. Ist das auch die Speichergröße, die ich auf dem Controller benötige? Dann würde nämlich ein ATMega8/16 nicht funktionieren. Joline
das ist richtig das die datei 19KByte groß ist :-) lade dieses hexfile mal mit deiner programmersoftware und du bemerkst dann das er nur ca. 8Kbyte programmiert in dem HEX file sind adresslocation und prüfsummen enthalten die nicht mit programmiert werden. Somit passt das programm in einen Mega32 Mfg Ulrich Radig
so habe von jemanden erfahren das dieser meinen Code für einen Atmel umgeschrieben hat fotos werden laufe der nächsten tage auf meiner homepage folgen. Mfg uli
hi ulrich, ich hab grad nochmal dein layout ueberfolgen, und da ist mir noch was aufgefallen, ist denn diese Verbindung zwischen den zwei pads ganz links unten, auf der linken seite gewollt? die sieht so unpassend zum restlichen layout aus Gruß Tobias
Das ist Richtig. Das sind die Pinne SMEMWB und SMEMRB wie im Schaltplan zu erkennen liegen die auf +5V. Mfg uli
@Uli Hallo, ich habe mir mal den Code etwas genauer angesehen und jetzt einige Fragen: 1. Warum wurde INT4 benutzt? Ist es auch ohne weiteres (nach Programmanpassung) möglich, einen anderen Interrupt, etwa INT0, zu benutzen? 2. Auf der Website, die zurückgeliefert wird, werden 3 Checkboxen angezeigt: Lampe 1, Lampe und Test. Bei diesen sind Value=1,2 bzw. 3 hinterlegt. An welcher Stelle des Codes werden diese Werte ausgewertet? 3. Ist es richtig, dass im Moment nur PB0 als Ausgang benutzt wird? Wird noch ein weiterer Kanal als Eingang benutzt? 4. Es wurde ein Quartz mit 14,xxx benutzt. Hat das einen wichtigen Grund, oder war der einfach nur gerade verfügbar? Joline
4. Der Quarz ist unerheblich, allerdings verlängern sich bei einer niedrigeren Frequenz die Antwortzeiten z.b bei PING 3. Es ist richtig das zur zeit nur PB0 angesteuert wird. Ist aber ohne weiteres auf 8 und mehr kanäle zu erweitern. 2. Die Auswertung findet in der datei Httpd.c statt direkt am Anfang. 1. Der INT4 ließ sich besser konfigurieren (mehr möglichkeiten) als INT0. Würde aber auch mit INT0 laufen wenn dieser richtig eingestellt wird. :-) Mfg Uli
hallo uli, ich habe mir einen tragbaren mp3 spieler gebastelt der die daten von einer mmc liesst. das neue projekt ist ein desktop player, der neben mmc auch netzwerk haben soll. ich hatt mir zwei packet whacker von edtp.com bestellt. leider war einer schon kaputt als er an kam, und den zweite habe ich gebraten. da habe ich deinen beitrag in diesem forum gelesen, und dein board ist wie der packet whacker, nur das du auch noch galvanisch trennst. lange rede kurzer sinn, tolles design. frage : weisst du wo ich die RTL8019 einzeln bestellen kann ? packet whacker ist mir zu teuer, und wenn ich auf zb easytcp/ip umsteige, müsste ich die ganze source wieder ändern. danke im vorraus, john
Geht doch einfach zum Schrottplatz (ok, nur die mit Elektronik-Container)! Bei meinem findet man ISA NE2000 Netzwerk Karten in rauhen Mengen... Gruss, oli
Hallo Uli, ich bin noch Anfänger in Sachen Mikrocontroller. Deshalb auch die blöden Fragen: Wieso lässt sich INT4 besser als z.B. INT0 konfigurieren? Macht nicht jeder Interrupt das Gleiche? Und noch einmal zu meiner Frage 2 (s.o.): Ich habe schon prinzipiell die Stelle (also Httpd.c) gefunden, sonst hätte ich das mit PB0 ja nicht gewußt. Aber ich kann dort nicht finden, wann welche Value ausgewertet bzw. gesetzt wird. Irgendwie bin ich da blind. :o( Danke Joline
Meine ISA Karten habe ich vom Schrottplatz! Habe dann den RTL8019 heruntergelötet und auf meiner Netzwerkkarte verbaut. Aber man bekommt den Chipsatz auch bei www.egnite.de, finde ich aber etwas zu teuer. Eine andere Alternative wäre da noch EBay. Mfg Uli
ich habe auch noch solche karten hier herumfliegen aber wie kann ich son fetten IC darunter löten ohne was kaputt zu machen ??? gruß -kofi
Ich benutze dazu immer einen Heißluftfön. Als erstes ziehe ich kupferlackdraht unter den IC beinchen durch, danach befestige ich die Karte hochkant, durch erwärmen der unterseite der platine und gleichzeitige ziehen am kupferlackdraht löst sich das IC. Kupferlackdraht nehmen!! mfg uli
Hallo Uli, ich bin noch Anfänger in Sachen Mikrocontroller. Deshalb auch die blöden Fragen: Wieso lässt sich INT4 besser als z.B. INT0 konfigurieren? Macht nicht jeder Interrupt das Gleiche? Und noch einmal zu meiner Frage 2 (s.o.): Ich habe schon prinzipiell die Stelle (also Httpd.c) gefunden, sonst hätte ich das mit PB0 ja nicht gewußt. Aber ich kann dort nicht finden, wann welche Value ausgewertet bzw. gesetzt wird. Irgendwie bin ich da blind. :o( Danke Joline
Da ist eine IF abfrage 1 = 1 das setzt den portB.0 ist noch nicht ganz sauber aber ich arbeite dran Mfg Uli
Hallo Uli, irgendwie kann ich nicht erkennen, wie hier Value = 1,...,3 versteckt sind: if ((buffer[TCP_hdrflags+1]&PSH_Flag) > 0 ) { unsigned int result16 = ((buffer[ip_vers_len] & 0x0F) << 2) + ((buffer[TCP_hdrflags] & 0xF0) >>2) + 14; for (int a = result16;a < (result16 +20);a++) { if (buffer[a] == '1' && buffer[a + 1] == '=' && buffer[a + 2] == '1') { if (bit_is_set(PORTB,0)) { PORTB = 0; } else { PORTB = 1; } } } } Vielleicht kannst Du das ja noch einmal kurz erklären. Danke Joline
das ist die 2 IF abfrage if (buffer[a] == '1' && buffer[a + 1] == '=' && buffer[a + 2] == '1') somit wird der portb.0 an bzw ausgeschaltet, diese routine müsste noch überarbeitet werden am besten durchsucht man buffer nach den wert 1=1. wenn man nun portb.1 schalten wollte kopiert man die routine und setzt portb.1 ein und ersetzt das kriterium für die suche. mfg uli
Hallo Uli, das mit portb.0 ist klar. Aber wenn man aus "webpage.h" den HTML-code extrahiert, bekommt man eine Seite mit 3 (!) Checkboxen angezeigt: Lampe 1 (Value=1), Lampe (Value=2) und Test (Value=3). Wird also nur Value=1 auf den Wert 1 geprüft und die beiden anderen Checkboxen sind überflüssig? ------------ Dem Anschlußplan der ISA-Netzwerkkarte ist zu entnehmen, dass alle wichtigen Signale auf dem ISA-Bus Ax und Bx liegen. Bei Dx und Cx sind lediglich D16 mit VCC und D18 mit GND verbunden. Kann man diese beiden eigentlich auch weglassen oder sind die wichtig? Joline
Dx und Cx können weg gelassen werden. Mit der anderen annahme liegst du richtig, man kann die anderen Checkboxen weglassen oder mit einer Funktion belegen. Mfg Uli
Moin! ... hab' da mal ne Idee: Was haltet ihr davon eine Fnktion zu integrieren, die die interne RTC des µC mit dem NTP Protokoll und einem ntp server einstellt... NTP ist recht simpel. gruß Kofi
an diese idee habe ich auch schon gedacht, aber da ich nun die mmc ansteuerung fertig habe, werde ich erst diese für webseiten und downloads impementieren mfg uli
gibt es eigentlich schon ähnliche oder vergleichbare open source projekte ? gruß kofi
Ja es gibt eine menge vergleichbarer Produkte Ethernut usw. und auch die Elektor hat in ihrem Halbleiterjahresheft 2004 nun einen Webserver mit MSP µC allerdings soll dieser 159 kosten. Mein Ziel war es einen Webserver zu bauen den jeder ohnen großen Aufwand nachbauen kann somit sind auch meine Platinenlayouts einseitig. Ein weiteres Punkt ist und war es so wenig Bauteile wie möglich also nur Prozessor und Netzwerk IC. Somit ist dieser Webserver nach meinen Vorstellungen einer mit der preiswertesten auf dem Markt. Mfg Ulrich
Dat stimmt ! Wie weit bist du eigentlich ?! Ist das schwierig das man z.B. files per µC auf einer MMC oder SD-Card ablegt ?! ...Ich meine braucht man da nicht ein richtiges Dateisystem für .. FAT oderso ? gruß kofi
Hallo es geht voran werde in den nächsten 1-2 Tagen einen neuen Source Code für den WebServer haben, nun kann dann auch eine Webseite Bilder enthalten. Die Ansteuerung einer MMC karte kommt dann laufe der Woche. Die Daten werden dann zur Zeit mit einen CardReader gespeichert. Der Webserver greift dann via FAT auf die Karte zu. Das Speichern von Daten via FTP brauch dann noch ein wenig Zeit. Mfg Uli
Hallo, bin beim Nachbau. Genutzt werden, soll ein ATmega32. Ich habe aber nur Netzwerkkarten mit einem SMC Chip (83C790). Reicht es, nur das EEprom auszulöten? Mfg Sascha
Ich würde die Netzwerkkarte in einen PC einstecken und dann konfigurieren. EEprom würde ich nicht auslöten. Mfg Ulrich
Ich weiß nicht wie sich der Netzwerkchip verhält wenn man das EEprom abklemmt, beim RTL ist es dann IRQ 9 IO 300 aber das kann bei deinen Netzwerkchip anders sein. Am besten in die Spec. schauen. Mfg uli
Hehe, das ist es ja. Finde nichts mehr dazu. Außer den Nachfolger, den 83C795, der auch nicht mehr hergestellt wird. An der Karte kann ich nur per Jumper INT3 und 10 und Adresse 280 und 300 einstellen. IRQ3 - Adresse 280 IRQ10 - Adresse 300 Mfg Sascha
das ist doch gut dann benutze halt irq10 und Adresse 300 mußt halt nur den int an IRQ10 der Netzwerkkarte anschließen anstelle von IRQ 9 die ISA-Slot Belegung findest du auf meiner Seite. Mfg Uli
schon probiert. Die Meldung der Initialisierung erscheint. Das ready auch. Aber an meinem Hub ist die Lampe für den Port nicht an. Mfg Sascha
das bedeutet das der medium Type noch nicht auf RJ45 steht, bei dem RTL 8019 gibt es am IC ein Pin um dieses einzustellen. evt auf deiner Karte ein Jumper. Mfg Ulrich
Hallo Uli, gibt's denn schomn Neuigkeiten bzgl. der Umsetzung auf einen ATMega8/16? Du wolltest doch mal Infos auf Deine Seite stellen. Joline
Hallo, ja das habe ich auch noch vor, hatte aber zur Zeit weiter den Webserver noch verbessert. Mfg Ulrich
Hi, hab hetzt ne 3Com EthelinkIII 3C509BC bekommen. Gibts ne Möglichkeit diese zu nutzen? Sind keinerlei Jumper drauf :( Mfg Sascha
Hi, ich habe da mal ne frage. wenn ich den webserver im Netzwerk habe, kann ich ihn ja anpingen. kann ich denn übers netzwerk auf die Speicherkarte zugreifen ? also quasi als Netzlaufwerk ? mfg Kay
Hallo, Zur Zeit ist die Speicherkarte noch nicht an den Webserver angebunden wird aber bald geschehen. Wie eine Anbindung dann aussieht weiß ich noch nicht ob FTP,NFS Mfg Ulrich
Hallo @sascha ist doch kein Problem den Source an einen Mega32 anzupassen, sind doch nur die ser. Reg. und Interrupt zu ändern. Mfg Uli
hallo, wie kann ich die IP-Adresse ausfindig machen, wovon auf den Webserver zugegriffen wird? Mfg Sascha
Hi, so meinte ich es nicht. Meinte die Ip-Adresse, die auf den Webserver zugreift. Nicht die, vom Webserver selber. Hat sich aber schon erledigt. Gruß Sascha
Naja, bisher habe ich nur den MSP430x4xx Family User's Guide (slau056d) und den MSP430x1xx Family User's Guide (slau049d) gesehen. Übrigens gibts jetzt auch Erratas dazu! MSP430x4xx Family User's Guide Errata (slaz008) MSP430x1xx Family User's Guide Errata (slaz007) n8, oli
@Sascha Kannst Du vielleicht Deinen Code hier posten. Ich würde das ganze mal auf einem ATMega8 laufen lassen (wenn Reichelt endlich liefert :o( ). Dann könnte ich mir mal die Änderungen im Vergleich zur Originalversion ansehen. Joline
Schaut mal hier: http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&category=26807&item=5708227391&rd=1 Ich brauche keine 50 Karten. Will jemand welche? Meint ihr, der Verkäufer ist okay? Hat letztens 3 negative Bewertungen bekommen. Gruß, Christof
Hi. also, ich habe bei zwei einzelnen zugeschlagen. Die haben wenigstens alle Jumper onboard. Mfg Sascha
Hmm... ich schau mal, wie sich der Preis so entwickelt, wenn der nicht zu hoch wird, greife ich eben zu. Vielleicht will jemand dann noch welche.
Hallo, Ich habe die 50 Netzwerk-Karten ersteigert wer eine von euch haben will bitte melden! Mal sehen wann diese kommen. Will keinen Gewinn machen alle Netzwerk - Karten kosteten mit Versand um die 81 also 1.62 das Stück. Mfg Uli
Hmmm... gut, dass ich doch nicht mitgesteigert habe. Sonst hätten wir uns evtl. noch gegenseitig hochgepusht... hättest ja was sagen können ;) Okay, ich hätte dann gerne Netzwerkkarten im Wert von pi mal Daumen 15 inkl. Versand. Schreib mir doch einfach mal ne mail!
Hallo, melde mich sofort, wenn ich die 50 Netzwerkkarten habe. Mfg Ulrich Radig
Super Arbeit Uli, wirklich super ! Habe mich vorhin mal hingesetzt, mir eine alte rtl8019 gesucht, und den Webserver mit einem Mega32 ausgebaut. Und siehe da, inzwischen läuft er :-) Allerdings hatte ich Probleme mit meinem 16MHz Quarzoszillator, was auch mit meiner wilden verkabelung zu tun haben könnte. Jedenfalls funktionierts mit 8MHz jetzt prima. Die Karte habe ich nicht umgebaut, sondern mit einem alten pc umprogrammiert. Anbei ein kleines Bild meines Testaufbaus. Viele Grüsse Björn
@uli sind die Netzwerkkarten aus ebay angekommen? Wenn es damit möglich ist so einen Server aufzubauen würde ich welche nehmen! Würde das jetz doch gerne mit deiner ISA variante probieren, weil ich drauf hoffe hier hilfe zu bekommen, wenn´s doch nicht klappen sollte. Den Chip würde ich nur ungern auslöten, das man die Karte so verwenden kann kommt mir auch gelegen. Melde Dich bitte hier oder per Mail.
Hallo, ich habe noch ~10 ISA Netzwerkkarten mit folgendem Chip: 82595FX Kann Ich diese Karten auch mit einem AVR ansteuern ? Gibt es für diese Karten auch einen fertigen TCP/IP Stack ? Vielen Dank für eure Hilfe ! Gruß Fiffi
Hallo, ich hab da mal ne frage. In der Device.h steht #define data_port_rtl_read PINA jetzt meine Frage welcher Pin oder Port versteckt sich hinter "PINA" MfG Titus
Hallo, Das ist Port A, in der Atmel Doku gibt es drei Register PortA für Ausgabe PinA für die Eingabe und DDRCA für das Direction Control Register. Mfg Uli
Hallo, habe schon wieda ne Frage; loop_until_bit_is_set(ReadRTL(isr),rdc); was Prüfst du da? Also was muss anliegen damit es weiter geht, (muss da 0x07 anliegen?) MfG Titus
Ich habe auch einen Posten RealTek Karten mit dem RTL8019 bei ebay ersteigert. Ich habe sie auch getestet und gleich auf IRQ 9 und IO 300 konfiguriert. (Zum Glück habe ich noch nen 486 rumstehen :-) Für 2 Euro pro Karte würd ich welche abtreten. 1-2 Karten kann ich (ohne Slotblende wegen max. Höhe) als Großbrief für EUR 1,44 versenden, bei mehr wohl als Päckchen oder Warensendung. Bei Interesse einfach melden!
im gegensatz zu Simon habe ich probleme meine Karten von Ulrich zu konfigurieren. Hab mich jetz ne weile mit einer beschäftigt, aber was ich auch mache, das Konfigurationsprogramm ezcfg deaktiviert die Menüeinträge, mit der ich Plug&Pray, IRQ un I/O einstellen könnte. Momentan scheint die Karte auf I/O 220 und IRQ 5 zu stehen. der IRQ ist einfach nur ein andere Kontakt an der Karte, aber was mache ich mit dem anderen I/O Bereich? evtl. die Adress Pins anders Verschalten? also statt A8 und A9 auf Hi nun A9 und A5 auf Hi. Denke mal das ist so korrekt. Aber: Hat die Karte sich die Werte denn gemerkt, oder will sie beim nächsten Power on wieder ein Plug&Play haben? Wer hat ein alternatives Config-Programm?
Hallo Henning, Ich hätte da eine Hardware mässige Lösung; falls das die Karten sind die grade bei Ebay zu massig versteigert werden (Neuwahre) dan kannst du das mal versuchen; EEPROM auslöten (dan ist standart IRQ 9 - I/O 300) alles was mit dem BNC Übertrager und Wandler zu tuen hat kannste auch entlöten und ganz wichtig ist, den Pin des RTL Chips 64 auf GND und Pin 65 auf VCC legen. (geht mit Kupferlack draht gut) MfG Titus Ps: sorry Softwaremässig kann ich dir nicht weiterhelfen
Hallo Wenn dir das Auslöten des EEproms zuviel ist einfach das hardwiring an den Adressleitungen ändern. Dieses ist auf I/O 300 eingestellt. A8(256dez) und A9(512dez) auf high (256 + 512 = 768 also 300 HEX). Mfg Ulrich Radig
die Karte ist aber ja noch im Plug & Play modus. Merkt sie sich denn die Adresse, die sie beim letzten Booten im PC zugeortnet bekommen hat? Werde das ausprobieren, hab aber noch nicht gelötet. Im Moment baue ich den Quellcode für meinen Mega32 um. Eeprom auslöten ist ja nicht das Problem, aber Pin 64 und 65 sind so ungünstig klein ausgefallen. Ich werde erstmal Ulrichs Vorschlag probieren und Jumper für Adresse und IRQ vorsehen.
Ist es möglich, den Webserver auch mit einen Mega8 oder Mega16 zu betreiben? Und wo werden eigentlich die Webseiten gespeichert? Im Controller, oder in einem externen Eprom? Danke!
Die Daten der Website werden im Controller gespeichert und ich bin gerade dabei das ganze auf einem Mega32 zum laufen zu bringen. Wenn ich makefile hexsize (siehe wiki:winavr) ausführe zeigt er follgendes am: text data bss dec hex filename 0 10706 0 10706 29d2 main.hex vielleicht hilft das weiter, aber mir scheint der Wert falsch zu sein: vor der Hex Adresse $29d2 sind jede menge Adressblöcke mit $FF gefüllt, als wenn sie unbenutzt sind. Wenn´s nach dem letzten Speicherplatz geht, der kein $FF enthält, ist die Datei schon bei $14E8 zuende.
Hallo, Die Webseiten werden zur Zeit noch im Controller eigenen FlashSpeicher abgelegt. Aufgrund des geringen Sram beim mega8 bzw 16 sehe ich einige Probleme, mit einen Mega32 haben es schon einige Personen ohne Probleme realisiert. Mfg Ulrich
@Henning: Mit dem Programm rset8019 (oder so ähnlich :-) von der Realtek-Homepage geht es problemlos.
Hallo, Habe eine neue Version des SourceCode auf meiner HP zum download bereitgestellt. Enthält nun auch die Änderungen für einen ATMega32 (noch nicht getestet). Mfg Ulrich
Hallo, Ich habe da mal eine neue Idee Voice over IP ist doch was feines für den Webserver. Da ich noch keine Zeit gefunden habe mich schlau zu machen. Frage ich mal ob jemand dazu Daten hat. Welches Audio Format? (MP3/WAV oder was) Ich nehme mal an irdendwas einfaches wie WAV mit evt 10Khz und Mono reicht ja für ein Internet Telefon :-) dazu würde dann der interne ADC vom AVR µC ausreichen. Also wenn jemand dazu Datenblätter hat mal zumailen evt. programmiere ich dann mal was. Ist doch ganz nett den Webserver auch als IP Telefon zu nutzen oder? (wäre dann auch recht billig wenn es dann mal geht) Mfg Ulrich
Hab gerade den Server mit mega32 nachgebaut, allerdings erhalte ich immer "Overrun" egal ob Netzwerkkabel angesteckt oder nicht... Ich musste auch noch SIG_INTERRUPT4 zu SIG_INTERRUPT0 ändern. Im makefile habe ich atmega32 eingetragen. Die IP habe ich auf 192.168.1.101 geändert.
Im aktuellen Code ist alles mit #if defined gemacht: #if defined (_AVR_ATmega32_) GICR|=0x40; MCUCR=0x03; MCUCSR=0x00; GIFR=0x40; #endif #if defined (_AVR_ATmega103_) EICR = 3; #endif #if defined (_AVR_ATmega128_) EICR = 3; #endif //Setze Portb für die Ausgänge auf output DDRB = OUTPUT; //Interrupt 4 oder 0 Einschalten (für die Netzwerkkarte) #if defined (_AVR_ATmega103_) enable_external_int (1<<INT4); #endif #if defined (_AVR_ATmega128_) enable_external_int (1<<INT4); #endif #if defined (_AVR_ATmega32_) enable_external_int (1<<INT0); #endif
Habe gerade festgestellt, dass ich A10 auf +5V hatte statt auf GND. Jetzt passiert folgendes: Die MCU geht nach dem Init sofort auf Reset. Card Init :34 zeigt er an und gibt noch MAC/IP aus, dann fängt er von vorne an. Aber nur solange der Interruptpin auf GND liegt. Wenn man von Hand auf 5V stopselt, passiert das nicht...
Hallo, Was ist denn an dieser Version noch anders?? Habe ich da noch was übersehen. mfg ulrich
Hallo, habe mir den code nochmal angeschaut! Übernimm mal die definition des Ports D von Sascha in meinen Code!! Mfg Ulrich
Hab den Webserver jetzt als Schalter für einen Netzwerklaserdrucker laufen. Der Drucker zieht soviel Saft, dass er vom Netz getrennt sein sollte, um Strom zu sparen. Außerdem macht sein Lüfter einen Mordskrach. Der Webschalter kann mit einen Klick auf einen Link den Drucker an und ausschalten. Im Anhang ein Foto vom Webserver im Einsatz & als Prototyp und die Seite, die er sendet. Nochmals vielen Dank an Uli, da es echt ein Erfolgserlebnis ist, für so wenig Aufwand ein so tolles Projekt zu machen.
Hallo @all, Ja dann werde ich bald noch einen drauf geben, die ersten Teste als Printserver und TimeServer mit DCF77 (SNTP) laufen schon. Dauert etwa noch so 2 Wochen dann gibt es die erste Version, natürlich ohne weitere Hardware. (klar ein DCF77 Modul von Conrad wird halt benötigt) Was mich jetzt nur noch plagt warum lauft die Version 1.07 noch nicht mit einen Mega32 ohne Probleme. Das mit Sig interrupt0 ist mir klar, das muß ich in der nächsten Version an einen Mega 32 anpassen und was noch? wollte nicht noch einen Webserver mit einen Mega32 basteln habe doch schon 3 ;-). Mfg Uli
Hallo, ich habe die Version 1.07 mit meinem mega32 leider auch noch nicht ans laufen bekommen. @ Uli: Wäre schön wenn du die Dateinamen Device.h und Device.c von deinem Quellcode noch klein schreiben würdest. Unter Linux findet er sie sonst nicht, da sie ja in den anderen Files mit kleinem Dateinamen inkludiert sind.
Hallo, Was mir noch zu Mega32 einfällt definiert doch mal (unsigned char packet[1500]; auf 1400) evt stürzt er dann nicht mehr ab. Wie gesagt habe noch leider keinen mega32 Webserver. Mfg Ulrich
Hallo, hab nur ne kurze Frage, schreibt jemmand den Webserver auch für einen 8051 von Philips (zb.: P89C51 etc)? Bitte melden hätte interesse an den Sourcecode MfG Titus
Uli, kannst du mal eine ausführlich Funktionsbeschreibung deines Codes posten? (Welche Routine macht was, braucht was, wie hängt alles zusammen, Programmflussplan, ...) Mich interessiert hauptsächlich, wo denn die Pages verschickt werden, so dass man die Seite abhängig von Sensorwerten erzeugen kann und nicht fest eingebaut.
@simon Das passiert in httpd.c mittels Pointer. - Steht ja schließlich im Quellcode ;-)
Das weiß ich sogar, ich hab auch neue Seiten dazugefügt, aber ich will ja Werte dynamisch übertragen, also Messwerte, Sensoren, etc.
Hallo, Werte dynamisch übertragen kein Problem! Füge doch einfach in der Webseite einen Platzhalter ein wie bei printf z.b. %x oder %i Bei add Packet meine ich (zu faul jetzt nachzuschen) wo halt der Pointer ins array geschrieben wird, einfach eine if abfrage einfügen. Aber da bin ich schon zugange. Ist am dienstag fertig. Problem da noch niemand den Fehler für einen Mega32 gefunden hat läuft der neue Code dann wie die Version 1.07 auch nicht mit Mega 32. Sondern nur auf Mega103/128. Mfg Ulrich Radig
Werde mich um den Mega32 kümmern, denn ich bin grad am löten. Termine kann ich aber nicht versprechen.
Jetzt neu: Webserver mit mega8 (für alle die ein schmales Budget haben!) Basiert auf der Modifikation für mega32 von Sascha. Anschlussverdrahtung ändert sich wie folgt: - Interner RC-Oszillator muss verwendet werden um PORTB frei zu haben. Beachten bei STK500: PORTB6 und 7 liegen auf Anschluss PORTE als XT1 und XT2!!! - PORTB 0..7 sind Daten-Leitungen D0..D7 (statt PORTA) - PORTC 0..4 sind Adressleitungen A0..A4 (bleibt gleich) - PORTD 2 ist IRQ (bleibt gleich) - PORTD 5,6,7 sind Steuerleitungen (statt PORTC)
Update: Ich habe eine Variable für die Anzeige auf der Webpage in "tcp.c" eingepflegt (Anzahl Druckerbenutzer). Routine tcp_add_data in der Schleife, die den Puffer überträgt: if (pgm_read_byte(pointer)=='%' && pgm_read_byte(pointer+1)=='S' && pgm_read_byte(pointer+2) =='1') { sprintf(s, "%d", countaccess); i = 0; while (s[i] != 0) { buffer[result16] = s[i++]; result16++; } pointer += 3; } Dieses Konstrukt reagiert auf %S1 und schreibt die Variable countaccess hin. Der Pointer wird auch um 3 erhöht (Länge von %S1).
Ein Bild vom neuen Server. Die Platine mit dem mega 8 ist gerade mal 5x4cm groß!
Dem mega32 Reset auf der Spur: Ich bin auf ein seltsames Verhalten gestoßen. Wenn man die Baudrate der seriellen Ausgabe über 19200 erhöht (16 MHz Boardtakt), startet der mega32 zyklisch neu. Und zwar kurz nach dem printf mymac myIP. Das kann ich mir nicht erklären!
Hallo Leute, also ich habe mir jetzt auch mal so einen Server gebaut. Ich habe allerdings alles auf einer Platine untergebracht. Die Netzwerkteile habe ich von einer Karte runtergelötet und bei mir neu platziert. Ich habe den Mega128 verwendet und die letzte Version (1.07) von Ulrich. Hat auf Anhieb funktioniert. Großes Lob an Ulrich. Jetzt müssen wir nur mal sehen, wie wir am besten eine vernünftige Kommunikation hinbekommen (Variablen Inhalt auf der Seite automatisch aktualisieren usw.). Ich muss mich damit jetzt auch erst einmal beschäftigen. Gruss Mattias
Hallo, Habe nun auf meiner HP das EagleFile von Mattias nachgebauten Webserver zum herunterladen. Danke Mattias für die Bilder. Mfg Ulrich
@Simon: Hallo, ich hatte mal so ein ähnliches Problem. Hast du bei dem Mega32 das Fusebit CKOPT programmiert? MFG Volker
@Simon: Das würde ich dann mal empfehlen. D.h. CKOPT programmieren (auf 0 setzen) Volker
Hallo, wer kann mir gegen Kostenbeteiligung eine solche Platine mit der alles auf einer Karte Lösung ätzen ? bis denne Ralf
Hallo Simon, ich habe mal versucht, die Quellen zum Mega8 mit dem neuesten WinAVR zu übersetzen. Dabei erhalte ich folgende Fehlermeldungen: ------------------------------------------------------------------------ -------- avr-gcc (GCC) 3.4.1 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling: main.c avr-gcc -c -mmcu=atmega8 -I. -gstabs -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.lst -std=gnu99 -Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.d main.c -o main.o In file included from main.c:49: ./device.c: In function `Write_Ethernet_Frame': ./device.c:156: error: invalid lvalue in unary `&' In file included from main.c:74: ./interrupt4.c: In function `__vector_1': ./interrupt4.c:120: error: invalid lvalue in unary `&' ./interrupt4.c:126: error: invalid lvalue in unary `&' make: *** [main.o] Error 1 ------------------------------------------------------------------------ -------- In device.c ist es Zeile 156: loop_until_bit_is_set(ReadRTL(isr),rdc); und in interrupt4.c sind es die Zeilen 120 und 126: if (bit_is_set (ReadRTL(isr),ovw)) if (bit_is_set (ReadRTL(isr),prx)) Eigentlich sollte das doch funktionieren, oder? Zumindest sehe ich hier keinen Fehler. Oder stört sich die neue Version von avr-libc vielleicht an den alten bit_is_set-Funktionen? Stefan
Die Version, die ich habe, kompiliert das (ist wohl eine Version früher), die neue habe ich wieder runtergeschmissen, da es damit nicht mehr ging :-)
Hallo @Stefan Schaue dir mal die Version 1.07 an da habe ich das if (bit_is_set (ReadRTL(isr),ovw)) rausgeschmissen und ersetzt. Diese Funktion wird vom neuen AVR GCC nicht mehr in dieser Form unterstützt. Mfg Ulrich
Hallo, allerseits! Ich habe mit dem GCC genau das gleiche Problem, bin allerdings auch kein Experte, was GCC angeht (Codevision-verwöhnt...). Ich habe in der Datei interrupt4.c die Zeilen entsprechend geändert und bekomme nun die Fehlermeldung 'ISR' undeclared (first use in this function) 'OVW' undeclared (first use in this function) 'PRX' undeclared (first use in this function) Kann mir jemand einen Tip geben, wie ich das wegbekomme? Des weiteren hatte ich testweise mal Simons main.hex in meinen Mega8 geladen. Der steckte auf dem STK500 und wurde mit einem 16MHz-Quarz versorgt. Ich verwende eine Netzwerkkarte, wie Ulrich sie massenweise bei eBay ersteigert hatte, und habe sie entsprechend umgebaut (EEPROM auslöten etc.) Leider leuchtet beim Verbinden mit dem Netzwerkkabel die grüne Lampe nicht, und ein PING vom PC aus sagt nur Timeout. Hast Du einen Tip, woran das liegen könnte? Vielen Dank schonmal für Eure Hilfe! Gruß Kai Markus
hast du denn die uart angeschlossen und die initiallisierung entsprechend bekommen?
Hallo, allerseits! Bin jetzt schon mal etwas weitergekommen. @Henning: Nein, ich habe die UART nicht angeschlossen. Muß ich mal ganz doof fragen: woran sollte die UART angeschlossen sein und was sollte man da sehen können?!? Was den Compiler angeht, bin ich jetzt soweit, daß mir das Programm annähernd einwandfrei übersetzt wird. Nur ganz am Schluß noch die Fehlermeldung: .... ccUhaaaa.s:3087 Error: garbage at end of line make: *** [main.o] Error 1 Hat da jemand noch eine Idee?!? MfG Kai Markus
Hallo, Welche Version von GCC benutzt ihr meine Version 1.07 läuft mit dem neuen AVR GCC und der alten Version, alle vorherige Versionen laufen nur mit dem alten AVR GCC!! Mfg Ulrich
sorry, die antwort passte natürlich nur zum letzten teil deines post: da die netzwerk karte noch nicht initiallisiert ist wird die led nicht leuchten. und anpingen wirst du sie dann leider erst recht nich können. sie hat ja noch garkeine ip zugeteilt bekommen. auf der uart werden die unterschiedlichen initiallisierunsschritte ausgegeben. du kannst dort also sehen ob die init prozedur geklappt hat. aber dein problem hängt ja noch beim compilieren des programms. ich bin am tüfteln mit dem mega32 aber hab mir die fuses verbrannt, so das ich jetz erst den uC wiederbeleben muss... die nicht ganz eindeutige angabe in avrprog ärgert mich schon wieder... harken = fuse programiert (=0) oder bit gesetzt (=1)...
Hallo @Kai Die alten Versionen laufen noch nicht mit AVR-GCC 3.4.1 - avr-libc 1.0.4 nur die neuen ich meine ab Version 1.05. Ist auf meiner HP aber noch genau dokumentiert. Mfg uli
Hallo, Ulrich! Ich kann leider nicht genau sagen, mit welcher Version von Deiner Software ich arbeite. Ich habe die letzte Datei von Simon vom 10.9. heruntergeladen, weiß aber nicht, auf welcher Version von Deiner Software die aufsetzt. Bei meiner Schaltung scheint aber auch anderes noch im Argen zu liegen. Ich habe mal ein Skop an den TxD-Pin drangehängt und stelle auch da nach einem Reset des AVR keinen Datenverkehr fest. Das müßte ja eigentlich sein... By the way, ich werde dann mal die RS232 des STK500 an den USART des AVR hängen. Wie sollte mein Terminalprogramm denn konfiguriert sein?!? Gruß Kai Markus
@Tegtmeier 8Datenbits, No Parity, 1StopBit, 9600Baud kein Protocol Mfg Uli
Hallo, Ulrich und Henning! Vielen Dank für die Infos. Habe gerade mal angeschlossen, da kommt im HyperTerminal gar nichts an. Ich nehme mal an, daß noch etwas mit der Schaltung im STK500 insgesamt nicht stimmt. Ich werde dann (allerdings wahrscheinlich erst morgen) mal genau forschen, was los ist. Sobald ich was weiß, melde ich mich wieder. Einstweilen schon mal vielen Dank und einen schönen Abend noch! Gruß Kai Markus
Hallo! Da bin ich mal wieder. Ich habe mittlerweile die UART zum Laufen bekommen und Simons Programm mit einer älteren Version (3.3.1) von gcc übersetzt. Das ging dann auch ohne Probleme. In Simons Programm waren die Befehle zur UART auskommentiert, deshalb tat sich da nix. Am Status der Netzwerkkarte hat sich noch nichts geändert. Mein angeschlossener PC sagt mir "Netzwerkverbindung mit 10 MBit/s" und am PC leuchtet die "link"-LED auch auf. Nicht aber an der Netzwerkkarte. Versuche ich die Karte anzupingen, bekomme ich eine Zeitüberschreitung. An der UART bekomme ich folgende Statusmeldungen: Init Network Card: ......... Init Ready! Hat jemand noch einen Tip, woran das liegen könnte?!? Ich glaube, Ulrich sprach mal davon, daß evtl. die Netzwerkkarte noch auf Autodetect RJ45/BNC eingestellt sein könnte und deswegen keine Verbindung zustande kommt. Kann das hier der Fall sein? MfG Kai Markus
Falls es weiterhilft, den Fehler einzukreisen: Am RTL8019AS geht nach dem Einschalten der Pin60 in den High-Zustand. Laut Datenblatt signalisiert das, daß er in den 10Base2-Modus geschaltet hat oder in den Auto Link-Modus mit "link test failure". Gruß Kai Markus
Hallo @Tegtmeier, Also ich nehme mal an deine Netzwerkkarte ist noch auf BNC geschaltet. Bei Init Ready sollte 34 als Init Wert erscheinen. Somit solltest du die Netzwerkkarte entweder auf Auto Detekt bzw. auf RJ45 umschalten. Mfg Ulrich
Hallo, Ulrich! Vielen Dank für Deinen Hinweis. Ist diese Umschaltung hardwaremäßig machbar (ich benutze eine von Deinen ISA-Karten aus eBay) oder muß ich die in einen PC stecken und umkonfigurieren? Gruß Kai Markus
Hallo, Am besten ist es sie in einen PC einstecken und umkonfigurieren, oder halt nach meiner Umbauanleitung mit Pin64 und 65. EEprom kann dann in diesenfall drin bleiben. Wie gesagt konfigurieren mit PC ist meiner Meinung nach die beste Lösung. Mfg Uli
Hm, EEprom ist bereits ausgebaut, Pin 64 ist mit GND und Pin 65 mit VCC verbunden. Was mir dabei nicht ganz klar ist: im Datenblatt vom RTL8019AS steht, daß der BNC-Anschluß dann deaktiviert wird, wenn Pin64 auf High gelegt wird. Müßte dann Pin64 nicht eher auf "high" mit External MAU gelegt werden? Ich habe auch mal verschiedene Logikzustände an Pin74 bzw. 77 "Network medium type" angelegt, aber auch ohne Erfolg. MfG Kai Markus
Hallo, AUI pin 64 wird nicht benutzt also auf low. PNP pin 65 auf high da nicht benutzt. Da das EEPROM fehlt initialisiert sich die Netzwerkkarte auf IO300 IRQ 9 und auf medium type RJ45. Wie bei Mattias und vielen anderen Personen funktioniert es auch so. Ich habe schon so 5 Netzwerkkarten selbst gebaut und immer ohne Probleme funktionierten auf anhieb. Kannst ja mal den Schaltplan von meiner HP für die selbstbau Netzwerkkarte herrunter laden und vergleichen. Mfg Ulrich
An alle Mega8 Nutzer: Da der mega8 seinen Port B nicht ganz freigibt (XTAL an 6 und 7) muss der interne RC-Oszillator mit 8 MHz benutzt werden! Dann sollte auch die Netzwerkkarte korrekt initialisiert werden! Habe ich in meinem Beitrag vom 10.09.2004 aber erwähnt.
hi, ich habe das selbe problem, wie kai: der Hub sagt, es besteht eine Verbindung, die LED der Netzwerkkarte leuchtet nicht. ausserdem bekomme ich nach dem Init über die Uart den Wert 255. Was kann ich mit diesem Wert anfangen? Vorher gebe ich nach der Zeile Resetpin low und ReadRTL (rstport); WriteRTL (rstport , 0xFF); den rstport aus und erhalte immer den Wert 18. Auch ich verwende die Netzwerkkarten von Ulrich, habe das Eprom ausgelötet und Pin 64 auf GND sowie Pin65 auf VCC gelegt.
ausserdem erhalte ich 2 "Overrun!" kurz nach dem starten. Ein Ping führt natürlich zum Zeitüberlauf... vielleicht hat ja jemand nen Tip. Werd später versuchen die Signale per Oszi nachzumessen.
Hallo, Simon! Diese Pinbelegung habe ich auch eingehalten. Tut sich aber bis jetzt trotzdem noch nichts. Du hattest (vermutlich aus Platzgründen) in Deinem Code die Kommunikation via UART ja deaktiviert. Welche Zeile im Code ist denn für das Anzeigen der "34" zuständig, die nach der Initialisierung erscheinen soll? MfG Kai Markus
Das ist in device.c "init_rtl" oder so. Schau dir die Version von Sascha für den mega32 an, ist ja fast identisch und der printf Code ist da noch drin. Den kannst du direkt kopoeren. In main.c musst du dann auch die printf inits wieder reintun.
Ich habe mir jetzt noch mal die Datei Device.c angeschaut, in beiden Sourcecodes, und kann beim besten Willen keinen Printf-Befehl finden, der über die UART eine Zahl ausgibt. Entweder bin ich zu blöd, die Zeile zu entdecken, oder es ist schon zu spät?!? Gruß Kai Markus
Habe gerade die betreffende Zeile in Ulrichs Code V1.07 entdeckt. Steckt in der main.c. Die habe ich jetzt mal in Simons Code eingebaut. Nun gibt mir die Netzwerkkarte auch den Wert 34 zurück. Nach wie vor läßt sich die Karte aber nicht anpingen, und auch die LED leuchtet nicht. Ein angeschlossener PC meldet aber 10MBit-Netzwerk. Kann das immer noch an der Einstellung RJ45/BNC liegen?
Hallo @ all Hier der neue Source Code 1.08 nun endlich funktioniert auch der Mega32. Habe mich mal über Nacht an den bau meines 5. Webservers begeben aber dises mal mit Mega32 ;-). Und der neue Source Code läuft jetzt auf Mega 32 103 128 nun stürtzt der Mega32 nicht mehr ständig ab. Eigentlich hatte ich die Interrupt Einstellungen von Sascha übernommen aber dabei gemerkt das immer ein Interrupt ausgelößt wird. Das funktionierte bei der Version 1.07 halt dann nicht weil ich die Datenannahme des NIC geändert hatte. Nachdem ich die Interrupt Einstellungen richtig einstellte funktioniert es nun. Und noch einen Webserver mehr. Mfg Ulrich Radig
Nochmal für alle: Nach dem Einschalten sollte folgende Meldung stehen: Init Network Card: ......... Init Ready! Card Init: 34 My Mac: 1e.a.2b.2b.2d.4d My IP : 192.168.0.101 Wenn nicht 34 steht wurde die Netzwerkkarte nicht erkannt. Bei einen Mega 103/128 wird der Interrupt 4 verwendet. Bei einen Maga 32 der Interrupt 0 sowie die richtigen fuse Bits also CKOPT. Noch einen schönen Sonntag ich gehe jetzt Schlafen Mfg Ulrich
@Ulrich ich habe ja Deinen Webserver auf der ein-platinen-version gebaut. Funktioniert wunderbar. Nun habe ich aber noch ein paar Fragen zum Code: Die wesentlichen Bestandteile werden ja in webpage.h und httpd.c abgehandelt. Jetzt ist dort eine Schleife "for (int a=0;a<10;a++)..". Warum 10x ??? Warum wird der Header 10x eingelesen ??? Wie kommst Du an die Textstellen "1=1", "ulrich.jpg" usw, wenn Du immer am Anfang des pointers "buffer" nachschaust ( a, a+1 ..) ??? Genauso wird 10x ein TCP Paket erzeugt und gesendet. Wird etwa jedes Element (Bild, Text,...) getrennt versendet ??? Kannst Du eventuell mal in kurzen Worten erläutern, wie prinzipiell der Ablauf funktioniert ??? Ich blicke da irgendwie überhaupt nicht durch. Danke schon voraus. Mattias
Hallo, Bei einer Webseite mit Bildern wird für jedes Bild sowie die Webseite selber ein sogenanter Socket geöffnet. Des halb reserviere ich 10 Speicherplätze, da ein offener Socket auch wieder geschlossen werden muß. Dieses wird in der Schleife erledigt. Der Header selber wird nicht 10 mal eingelesen sondern nur auf seinen Inhalt überprüft 1=1. Schaue dir mal die Webseite in Version 1.02 (webpage.h) an, dort hatte ich auf der Webseite einen Buttom zum steuern einer LED eingebunden. Bei dem betätigen des Buttom wird an dem Header 1=1 hinzugefügt, welches im µC (1=1) überprüft wird. Mfg Ulrich
Uli: Dein Projekt wär glatt mal "veröffentlichungsreif", so bei Elektor, etc. Hast ja die Elektor schon erwähnt, mit dem Preis für ihr mickriges MSC1210 Board und Netzwerkkarte, huahuahua... Gibt auf diesem Planeten wohl genügend Bastler, die an deiner Version echtes Interesse hätten, wo es doch fast keine günstigen Alternativen gibt!
Hallo @Mattias Besorge dir mal das freie Programm Etherreal für den PC, damit kann man sich die Datenpakete die über die Netzwerkkarte gesendet werden anschauen. Mfg Ulrich
Hallo, habe mir nun auch einen Webserver mit dem Mega32 gebaut, leider kommt nach dem Einschalten immer Init Network Card: ......... Init Ready! Card Init: 255 Software-Version ist 1.08, der AVR läuft mit 14,318MHz, ist auch in main.c eingetragen. Die Karte ist auf IRQ9 und IO300 eigestellt, Anschluß auf 10BaseT. Ist eine Realtek 8019AS. Gibt es vielleicht schon eine "Fehlersuchliste", warum die Karte nicht erkannt wird? Gruß Peter
Hallo @Peter, Das hatte ich auch bis ich die Fuse CKOPT eingestellt habe, diese ist zum abschalten des 2. Quarzes. Mfg Ulrich
@Ulrich, danke, das war ein guter Tip. Das is ja ein cooles Programm. Jetzt kann man sich das besser vordstellen. Man, da ist ja wirklich was los auf dem Netz. Bei mir sagt übrigens mein Rechner zu dem Webserver immer: ...[CHECKSUM INCORRECT]... Taucht das bei Dir auch auf ??? Der Inhalt wird trotzdem korrekt angezeigt. Das mit dem LED steuern finktioniert auch. Mattias
@Mattias ...[CHECKSUM INCORRECT]...?? Wo schreibt er dieses?? Habe diese Meldung noch nie gesehen! Mfg Ulrich
Hallo @Mattias Ich habe mal die Datenpackete mit Etherreal aufgezeichnet und man sieht alle Checksummen sind correct (Datei im Anhang). Mfg Ulrich
Hallo, Ich habe mal mit einer Doku angefangen evt. fällt einen oder andern der dieses Projekt nachgebaut hat noch was ein. Mfg Ulrich
@Ulrich, also, ich habe auch mal so ein capture file erzeugt (so.). Mein PC ist die ...14, der Webserver die ...15 Ich habe die Seite geladen, die Lampe1 angeklickt und den Button gedrückt. Geht alles wunderbar. Aber die Meldung ...[CHECKSUM INCORRECT]... kommt trotzdem. Vielleicht kannst Du in diesem Wirwar ja was sehen :-). Mattias
Hallo, Ja nachdem Protocol macht mein Webserver keine Probleme. Wieso? Weil das Packet mit der falschen Checksumme von deinen PC erzeugt wurde und nicht von meinen Webserver. Source = 141.25.73.14 also definitiv von deinen PC. Welches BS benutzt du? Ich benutze XP. Mfg Ulrich
Hallo Ulrich, ich benutze auch XP. Also ich würde das so verstehen: (habe aber keine Ahnung !) schauen wir uns mal die relevanten Dinge an... No. Time Source Destination Protocol 3 1.514749 141.25.73.14 141.25.73.15 TCP 1900 > http [SYN] Seq=0 Ack=0 Win=16384 Len=0 MSS=1460
Nochmal.... irgendwie ist mir gerade mein Mozilla abgeschmirt :-((( also nochmal. Ich verstehe das so: ---------------------------------------- No. Time Source Destination Protocol 3 1.514749 141.25.73.14 141.25.73.15 TCP 1900 > http [SYN] Seq=0 Ack=0 Win=16384 Len=0 MSS=1460 ---------------------------------------- No. Time Source Destination Protocol 4 1.515586 141.25.73.15 141.25.73.14 TCP http > 1900 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460 ---------------------------------------- No. Time Source Destination Protocol 5 1.515626 141.25.73.14 141.25.73.15 TCP 1900 > http [ACK] Seq=1 Ack=1 Win=17520 [CHECKSUM INCORRECT] Len=0 ---------------------------------------- No. Time Source Destination Protocol 6 1.519587 141.25.73.14 141.25.73.15 HTTP GET / HTTP/1.1 ---------------------------------------- No. Time Source Destination Protocol 7 1.567106 141.25.73.15 141.25.73.14 HTTP HTTP/1.0 200 OK In Nummer 3 will ...14 (mein PC) Kontakt mit ...15 aufnehmen (Seq=0 Ack=0). Dann antwortet ...15 mit Seq=0 Ack=1. ...14 sagt daraufhin zu ...15 mit Seq=1 Ack=1, dass [CHECKSUM INCORRECT] ist. Bedeutet das nicht, dass CHECKSUM von ...15 nach ...14 falsch ist ??? Dann vordert ...14 trotzdem von ...15 irgendwas mit GET / HTTP/1.1. ...15 sendet daraufhin dises komische HTTP/1.0 200 OK. Warum kommt die Verbindung überhaupt zustande, wenn [CHECKSUM INCORRECT] ist ??? Was ist mit dem Win=xxxxx und MSS=xxxxx ??? Warum ist Len=0 ??? Gruss Mattias
Hallo,
Die Verbindung kommt zustande weil das Datenpacket welches vom PC kommt
nicht auf die richtige Checksumme überprüft wird.
Die LEN = 0 weil dieses nur ein ACK Packet vom PC ist ohne Inhalt
(Daten).
>>Bedeutet das nicht, dass CHECKSUM von ...15 nach ...14 falsch ist ???
Nein da nur Checksumm error angezeigt wird in dem Packet welches einen
Error hat. Würde der Webserver einen Fehler verursachen würde der PC
die Verbindung daraufhin mit FIN oder einen RST abbrechen.
Und eine neue Verbindung aufbauen.
Hallo @Mattias Hier das gleiche Daten Packet mit Etherreal aufgezeichnet: Frame 4 (62 bytes on wire, 62 bytes captured) Arrival Time: Sep 21, 2004 12:53:24.711546000 Time delta from previous packet: 0.000849000 seconds Time relative to first packet: 1.179174000 seconds Frame Number: 9 Packet Length: 62 bytes Capture Length: 62 bytes Ethernet II, Src: 1e:0a:2b:2b:2d:4d, Dst: 00:0c:76:16:59:a7 Destination: 00:0c:76:16:59:a7 (Micro-St_16:59:a7) Source: 1e:0a:2b:2b:2d:4d (1e:0a:2b:2b:2d:4d) Type: IP (0x0800) Internet Protocol, Src Addr: 192.168.0.101 (192.168.0.101), Dst Addr: 192.168.0.1 (192.168.0.1) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 48 Identification: 0x273e Flags: 0x04 .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 128 Protocol: TCP (0x06) Header checksum: 0x51d3 (correct) Source: 192.168.0.101 (192.168.0.101) Destination: 192.168.0.1 (192.168.0.1) Transmission Control Protocol, Src Port: http (80), Dst Port: 1063 (1063), Seq: 0, Ack: 2603669461, Len: 0 Source port: http (80) Destination port: 1063 (1063) Sequence number: 0 Acknowledgement number: 2603669461 Header length: 28 bytes Flags: 0x0012 (SYN, ACK) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 0... = Push: Not set .... .0.. = Reset: Not set .... ..1. = Syn: Set .... ...0 = Fin: Not set Window size: 65535 Checksum: 0x89db (correct) Options: (8 bytes) Maximum segment size: 1460 bytes NOP NOP SACK permitted Und dahinter steht dann das Datenpacket ist correct. Ich weiß nicht welches Programm du benutzt!! Probier es mal mit Etherreal aus evt. ist die Darstellung besser. Auch hier ist das TCP Packet LEN = 0 da es keine Daten enthält. Mfg Ulrich
Hallo @all, Hier nochmal eine neue Doku, ich hoffe jemand von euch kann besser schreiben ;-) Mfg Ulrich
Hallo, also erst einmal ein ganz großes Lob an Ulrich für dieses tolle Projekt. Habe mir den Server mit Mega32 gebaut, funktioniert ausgezeichnet. Kleiner Zusatz zur Doku: Wenn man einen Mega32 benutzt, muß das JTAG-Interface disabled werden, weil die JTAG-Pins auf PortC liegen. MfG Torsten
@Ulrich, ich habe mal jetzt die Verbindung zum Internet überprüft und festgestellt, dass dort auch immer die Meldung [CHECKSUM INCORRECT] kommt, wenn mein PC etwas anfordert. Das Netz funktioniert trotzdem einwandfrei. Ich werde das jetzt einfach mal ignorieren... Es liegt also tatsächlich an meinem BS. Das Programm Ethereal ist wirklich genial. Gruss Mattias
Hallo, habe ein kleines Problem entdeckt. Ich habe meinen kleinen Server an einem Netz betrieben, wo richtig was los ist. Der Netzwerkchip (RTL 8019) hat praktisch ununterbrochen einen Interrupt gesendet. Nun ist es ja so: Sendet der 8019 einen Interrupt (Leitung auf high), muss er vom Controller quittiert werden. Bleibt der Controller in der Interrup Funktion hängen, kann er diesen nicht quittieren. Die Anlage hängt. Nun ist in der Funktion von Ulrich aber nichts drin was hängen bleiben kann. Man sollte also annehmen, dass der Interrupt immer quittiert wird. Hier ein Auszug aus dem Ende der Interrupt Funktion: . . . //Zurücksetzen der Interrupt Bits des NIC WriteRTL (ISR, 0xFF); //startet die Network Card WriteRTL (CR , 0x22); //Globale wieder Interrupts Einschalten sei (); Ende Interrupt Funktion. Ich habe nun folgende Vermutung: Der Interrupt wird quittiert und die Karte wird gestartet. Wenn genau zu diesem Zeitpunkt ein neuer Interrupt kommt, bekommt der Controller das nicht mit, weil sei(); noch nicht ausgeführt wurde. Die Interruptfunktion wird also nie mehr ausgeführt. Ich habe jetzt noch folgendes (hinter sei();) hinzugefügt: if(PINE & 0x10){ //Zurücksetzen der Interrupt Bits des NIC WriteRTL (ISR, 0xFF); //startet die Network Card WriteRTL (CR , 0x22); } Wenn also der Interrupt Pin nach sei() high ist, quittiere ich einfach erneut, ohne genau zu wissen, ob das so richtig ist. Vielleicht gibt es ja eine bessere Lösung. So funktioniert es jedenfalls schon seit mehreren Stunden einwandfrei. Vorher ging es höchstens für 2 min. Dann hing der Server. Gruss Mattias
Hallo @Mattias, Hast du den Webserver an einen Switch oder HUB angeschlossen? Würde den Fehler gerne nachvollziehen aber bisher ohne erfolg in einen Netzwerk mit 30 Rechnern (alles über einen Switch verbunden) Mfg Ulrich
Hallo, Was mir noch einfällt anstelle den Interrupt flankengesteuert einzusetzen, einfach meinen Code bei behalten und einen Interrupt auslösen wenn High Pegel auftritt. MCUCR=0x03; auf MCUCR = 0x01; einstellen ,meine ich, wenn ich das Register noch richtig im Kopf habe Mfg Ulrich
Hallo, Habe soeben den SourceCode 1.09 mit geänderten Interrupt auf meiner HP eingestellt. Meine nun damit ist der Fehler beseitigt. Mfg Ulrich
Hallo, Zum gefundenen Fehler eine kleine Erklärung. Natürlich ist es Richtig das nach dem neu Start der Netzwerkkarte und dem Zurücksetzen des Interrupts ein neuer Interrupt eintreten kann. Somit ist der µC schon mit einen gesetzten Interrupt nicht mehr in die Interruptroutine gesprungen. Da ja der INT flankengesteuert war. Durch ändern der INT Einstellungen sollte dieser Fehler in Version 1.09 nicht mehr auftreten. Mfg Ulrich
Hallo, mein Server hängt an einem HUB, dieser an einem Netz mit ca. 200 Rechnern und dieses an einem Switch. Danach weiss ich nicht wie es weiter geht. Das mit dem INT High Pegel wollte ich auch schon probieren, war mir aber nicht sicher, ob das nur auf Änderungen reagiert. Werde das heute noch probieren und berichten. So, wie gesagt, geht es jedenfalls. Gruss Mattias
So, habe jetzt die Änderungen von Version 1.09 übernommen. Geht so aber nicht, da das die Definition für: "Any logical change on INTn..." ist Nur auf high Pegel geht leider nicht. ISCn1 ISCn0 Description 0 0 The low level of INTn generates an interrupt request. 0 1 Any logical change on INTn generates an interrupt request 1 0 The falling edge between two samples of INTn generates an interrupt 1 1 The rising edge between two samples of INTn generates an interrupt Bleibe also erst mal bei meiner Änderung. Gruss Mattias
Tach, Hab hier noch ne 3Com Etherlink III 3C509BC ISA-Karte rumliegen. Wollte nur mal fragen, ob die auch funktioniert. Das wurde ja hier schonmal gefragt, aber es gab keine Antwort drauf. Gruß PatrickHH
3com ist scheinbar nicht ne2000 kompatibel -> geht nicht. die interrupt funktionen scheinen falsch definiert zu sein, denn SIGNAL erledigt die cli() und sei() automatisch. Hab den letzten Quellcode nicht überprüft (ist nur nen kurzer gedanke, der mir früher aufgefallen ist), aber das könnte es sein. Müsste nochmals genauer betrachtet werden.
Hallo, Die 3Com Netzwerkkarten funktionieren definitiv nicht, die Register sind anders als bei einer NE2000 kompatiblen Karte. Mfg Ulrich
@Mattias Dein einseitiges Layout für den Webserver gefällt mir sehr gut. Hast du die Platine selber geätzt ? Ich bin leider nicht in der Lage eine derart feine und komplexe Platine selber herzustellen und wollte desshalb fragen, ob du mir evtl ein Exemplar anfertigen könntest (gegen Bezahlung!), oder einen Tip für mich hättest, wo man eine Platine kommerziell anfertigen könnte. Gruß Björn
ich habe gestern auch einen Server zum laufen gebracht. Dabei habe ich einen Mega32 verwendet mit 16Mhz. die ISA Karte kommt von Ulrich. Hier ein Paar stellen, an denen es bei mir geklemmt hat: der Tackt muss bei 16Mhz über die Fusebits eingstellt werden. was da AVRProg programmiert stimmt efinitiv nicht. ich habe mir dann per PonyProg geholfen Das JTAG muss per Fusebits deaktiviert werden, denn es Liegt auf Port C (war ein Hinweis von Torsten Voigt) Ab da hat dann die Initiallisierung hingehauen, aber die Interrupts stimmten noch nicht. Bei den Karten von Ulrich ist eine Treiberdiskette mit Konfig-Programm bei. Mit dem konnte ich zwar lustig testen, aber keine einstellungen machen (heisst EZCFG ?) auch ein hinweis von Hier hat mich dann auf rset8019 gebracht, damit konnte ich die Karte einstellen. Hinweis dazu: Media-Type auf Auto lassen, denn 10Base-T (= UTP = Unshielded Twisted Pair (die mit dem RJ45 Stecker)) hatte (bei mir) dann keinen LinkDetect mehr. mit Auto Funktionierts aber wunderbar. 10Base-2 und 10Base-5 sind übrigens die Coax-Kabel mit BNC Stecker dran. Ich war zwischenzeitig auf der suche nach erklärungen der Bezeichnungen. Hab jetzt allerdings ein anderes Problem :) ich suche noch einen gescheiten Verwendungszweck...
Hallo,
>>Hab jetzt allerdings ein anderes Problem :) ich suche noch einen
gescheiten Verwendungszweck...
Ich habe auch noch keinen ;-)
Mfg Uli
@Bjoern, die Platine habe ich bei meiner Partnerfirma fertigen lassen, weil ich keine Lust zum Bauen hatte. Ich habe aber den Film und könnte natürlich mal einige machen. Die Mittel habe ich. Ich sag mal so 10 EUR + Versand 1 EUR. Ich mach einfach mal welche. Ihr könnt Euch ja dann überlegen, wer eine haben will. Gruss Mattias
@ Mattias Super Sache ! Dann würde ich, wenn möglich, auch zwei nehmen. Könntest du mir evtl deine Email-Adresse zukommen lassen ? Danke Gruß Björn
Hallo @all, Hier mal eine neue beta des Webservers der nun auch die Anfänge eines FTP Servers enthält. z.b. über Smart FTP einloggen und das Root Verzeichnis sehen geht schon. Ist natürlich noch alles pseudomäßig. Da es ja noch kein FileSystem gibt :-q Auch der Webserver selber also httpd.c wurde etwas besser gestaltet. Daher die Frage welches Speichermedium soll man nehmen meine MMC oder doch besser DOC oder was ganz anderes? Mfg Ulrich
Hallo, also ich würde zu MMC tendieren. Die Medien sind bei ebay günstig zu bekommen und von allen wohl am einfachsten und mit dem wenigsten "pin-verbrauch" anzusteuern. CompactFlash wäre aufgrund der Größe der Karten (bis 4GB?) auch sehr schön, nur wäre der Aufwand wohl viel zu gross. Gruß Björn
Ich tendiere auch zu SD/MMC, wegen guten Erfahrungen in diesem Bereich :-)
Ich würde SD sagen, da ich in dem breich schon ne speicherkarte habe und die auch in einer dcam verwenden kann. alternative währe HDD, dann kann man das gleich mit mp3 kompinieren... jaja, der übliche mp3player... wie sieht es eigentlich mit Übertragungsgeschwindigkeit aus? bilang kam mir das ganze recht lahm vor. wirklich dateien kann man damit nicht übertragen, oder was meint ihr?
Hallo, ich wäre auch für MMC. Die HD hat so viele Pinne. Ich glaube da ist der Atmel dann an seinen Grenzen bzw ohne Tricksereien geht es nicht mehr. Martin
Hallo Hier wieder ein neuer Source Code mit weiteren Verbesserungen, sowie eine UHR mit Timer1 (noch nicht mit Mega32 getestet). Mfg Ulrich
Hallo, habe eben mal die neuste Version auf Mega32 getestet, FTP funktioniert , jedenfalls kann man sich einloggen. Die Uhrzeit wird über die serielle Schnittstelle ausgegeben. Gibt es auch eine Möglichkeit, die Uhr zu stellen? Außer im Source Code? Gruß Torsten
Hallo, was haltet ihr von der Idee, mal gemeinsam am Software Projekt mitzuarbeiten? Ich würde schon gerne an der ein oder andern Stelle etwas beisteuern. Wir könnten das Ganze zB über "Subversion" oder "CVS" organisieren. Einen Server könnte ich bereitstellen, falls Interesse besteht. Gruß Björn
Hallo,
>>Die Uhrzeit wird über die serielle Schnittstelle ausgegeben. Gibt es
auch eine Möglichkeit, die Uhr zu stellen? Außer im Source Code?
Ist schon in Arbeit wird bald über Telnet realisiert.
Mfg Ulrich
Hallo @all, mit diesem Device.c.h dateien läuft alles ein bisschen schneller ;-) Mfg Ulrich
@Uli: Ich möchte gerne eine reine socket-basierende Verbindung aufbauen, ungefär nach folgendem Prinzip: 1. PC (=Client) öffnet Socket auf einem bestimmten Port 2. (evt.) Miniserver schickt eine kleine Bestätigung 3. PC sendet Kommando (z.B. sende Analogwert Kanal 0 oder setze Ausgang 1 auf AN) 4. Miniserver antwortet mit Daten alternativ: 3. PC sendet Kommando "Dauerübertragung" 4. Miniserver sendet kontinuierlich Datenpakete mit Messwerten, bis Socket geschlossen wird. Wo muss ich mich in deinem Code da einhängen?
Hallo, mit Uli's Einverständniss habe ich einen neue Projektpage für den AVR-Webserver angelegt. Bisher bin ich noch nicht zu Viel gekommen, aber der Subversion Server steht schonmal. Wer also gerne interaktiv am Code mitwirken möchte, kann sich bei mir per Mail melden, und bekommt dann einen Entwickler Zugang zum Subversion Repository. Vorerst ist die Seite zu erreichen unter: http://avrwebserver.bjoern-b.de Viele Grüße Björn
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.