Netzwerkkarte mit RTL8019

Gast #101587
Lesenswert?

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
Gast #101588
Lesenswert?

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)
Gast #101590
Lesenswert?

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
Gast #101593
Lesenswert?

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
Gast #101595
Lesenswert?

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
Gast #101598
Lesenswert?

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
Gast #101602
Lesenswert?

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
Gast #101603
Lesenswert?

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
Gast #101607
Lesenswert?

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
Gast #101609
Lesenswert?

@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
Gast #101610
Lesenswert?

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
Gast #101611
Lesenswert?

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
Gast #101613
Lesenswert?

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
Gast #101614
Lesenswert?

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
Gast #101616
Lesenswert?

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
Gast #101617
Lesenswert?

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
Gast #101619
Lesenswert?

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
Gast #101620
Lesenswert?

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
Gast #101621
Lesenswert?

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
Gast #101623
Lesenswert?

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
Gast #101627
Lesenswert?

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
Gast #101628
Lesenswert?

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
Gast #101629
Lesenswert?

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
Gast #101633
Lesenswert?

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
Gast #101634
Lesenswert?

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
Gast #101635
Lesenswert?

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
Gast #101642
Lesenswert?

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
Gast #101650
Lesenswert?

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
Gast #101652
Lesenswert?

@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
Gast #101657
Lesenswert?

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
Gast #101658
Lesenswert?

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!
Gast #101660
Lesenswert?

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
Angehängte Dateien:
Gast #101661
Lesenswert?

@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.
Gast #101662
Lesenswert?

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
Gast #101667
Lesenswert?

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!
Gast #101668
Lesenswert?

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?
Gast #101669
Lesenswert?

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
Gast #101670
Lesenswert?

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
Gast #101671
Lesenswert?

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.
Gast #101673
Lesenswert?

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.
Gast #101674
Lesenswert?

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
Gast #101677
Lesenswert?

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
Gast #101679
Lesenswert?

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.
Gast #101681
Lesenswert?

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
Gast #101682
Lesenswert?

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...
Gast #101686
Lesenswert?

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.
Angehängte Dateien:
Gast #101687
Lesenswert?

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
Gast #101688
Lesenswert?

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.
Gast #101689
Lesenswert?

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
Gast #101691
Lesenswert?

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.
Gast #101694
Lesenswert?

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
Gast #101696
Lesenswert?

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)
Angehängte Dateien:
Gast #101697
Lesenswert?

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).
Angehängte Dateien:
Gast #101700
Lesenswert?

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!
Gast #101701
Lesenswert?

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
Angehängte Dateien:
Gast #101708
Lesenswert?

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
Gast #101710
Lesenswert?

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
Gast #101711
Lesenswert?

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
Gast #101713
Lesenswert?

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
Gast #101716
Lesenswert?

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)...
Gast #101718
Lesenswert?

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
Gast #101720
Lesenswert?

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
Gast #101721
Lesenswert?

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
Gast #101722
Lesenswert?

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
Gast #101723
Lesenswert?

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
Gast #101724
Lesenswert?

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
Gast #101725
Lesenswert?

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
Gast #101726
Lesenswert?

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
Gast #101727
Lesenswert?

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
Gast #101729
Lesenswert?

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.
Gast #101730
Lesenswert?

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.
Gast #101731
Lesenswert?

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.
Gast #101732
Lesenswert?

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
Gast #101733
Lesenswert?

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.
Gast #101734
Lesenswert?

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
Gast #101735
Lesenswert?

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?
Gast #101736
Lesenswert?

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
Angehängte Dateien:
Gast #101737
Lesenswert?

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
Gast #101739
Lesenswert?

@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
Gast #101740
Lesenswert?

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
Gast #101741
Lesenswert?

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!
Gast #101743
Lesenswert?

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
Gast #101745
Lesenswert?

@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
Gast #101749
Lesenswert?

@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
Angehängte Dateien:
Gast #101750
Lesenswert?

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
Gast #101751
Lesenswert?

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
Gast #101752
Lesenswert?

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
Gast #101753
Lesenswert?

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.
Gast #101754
Lesenswert?

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
Gast #101756
Lesenswert?

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
Gast #101757
Lesenswert?

@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
Gast #101758
Lesenswert?

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
Gast #101759
Lesenswert?

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
Gast #101760
Lesenswert?

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
Gast #101762
Lesenswert?

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
Gast #101763
Lesenswert?

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
Gast #101764
Lesenswert?

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
Gast #101765
Lesenswert?

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
Gast #101766
Lesenswert?

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.
Gast #101769
Lesenswert?

@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
Gast #101770
Lesenswert?

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...
Gast #101772
Lesenswert?

@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
Gast #101774
Lesenswert?

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
Angehängte Dateien:
Gast #101775
Lesenswert?

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
Gast #101777
Lesenswert?

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?
Gast #101780
Lesenswert?

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
Gast #101781
Lesenswert?

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
Gast #101782
Lesenswert?

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
Gast #101784
Lesenswert?

@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?
Gast #101786
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren