Forum: Projekte & Code Netzwerkkarte mit RTL8019


von Uli (Gast)


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

von Joline (Gast)


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)

von André Kronfeldt (Gast)


Lesenswert?

Hallo Joline,

falls Du noch den ISA-Stecker suchst:

www.Reichelt.de:
STECKER 62-254
Preis: 0,45 Euro

Grüße,
André

von stromi (Gast)


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

von ulrichradig (Gast)


Lesenswert?

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

von stromi (Gast)


Lesenswert?

danke für die antwort,
ich bin gespannt.
so etwas ähnliches wird ab und zu mal bei ebay angeboten.

von Andreas Jakob (Gast)


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

von ulrich (Gast)


Lesenswert?

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

von Max (Gast)


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

von ulrich (Gast)


Lesenswert?

Ja habe ich noch,
inzwischen habe jetzt so viele netzwerkkarten getestet und herumliegen
das ich eine abtreten kann.

Mfg Ulrich

von schneidertobi (Gast)


Lesenswert?

hi,
benoetigt man fuer dein projekt eigendlich unbedingt eine karte mit
diesem realtek chipsatz oder reicht auch jede normale isa(ne2000)
ethernetkarte?

Gruß Tobias

von ulrich (Gast)


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

von uli (Gast)


Lesenswert?

Hinzugekommen ist eine Realtek Netzwerkkarte mit RTL8009 Chipsatz

Mfg Ulrich Radig

von Joline (Gast)


Lesenswert?

Hallo,

hat schon mal einer einen anderen als den ATMega103/128 ausprobiert?
Funktioniert aus ein ATMega8 oder ATMega16?

Joline

von Ulrich (Gast)


Lesenswert?

Nur mit einen Mega32 mit 2Kbyte bisher noch getestet.
Sollte aber erstmal nichts dagegensprechen das Programm an einen mega8
anzupassen.

Mfg Uli

von Joline (Gast)


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

von ulrich (Gast)


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

von uli (Gast)


Lesenswert?

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

von uli (Gast)


Lesenswert?

habe mega8 vergessen

von Joline (Gast)


Lesenswert?

Ich bin schon gespannt darauf.  :o)

von schneidertobi (Gast)


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

von uli (Gast)


Lesenswert?

Das ist Richtig.
Das sind die Pinne SMEMWB und SMEMRB wie im Schaltplan zu erkennen
liegen die auf +5V.

Mfg uli

von Joline (Gast)


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

von uli (Gast)


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

von john (Gast)


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

von Oliver Keller (Gast)


Lesenswert?

Geht doch einfach zum Schrottplatz (ok, nur die mit
Elektronik-Container)!
Bei meinem findet man ISA NE2000 Netzwerk Karten in rauhen Mengen...

Gruss,
oli

von Joline (Gast)


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

von Uli (Gast)


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

von kofi (Gast)


Lesenswert?

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

von uli (Gast)


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

von Joline (Gast)


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

von uli (Gast)


Lesenswert?

Da ist eine IF abfrage 1 = 1 das setzt den portB.0
ist noch nicht ganz sauber aber ich arbeite dran

Mfg Uli

von Joline (Gast)


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

von Uli (Gast)


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

von Joline (Gast)


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

von uli (Gast)


Lesenswert?

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

von Kofi (Gast)


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

von uli (Gast)


Lesenswert?

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

von kofi (Gast)


Lesenswert?

gibt es eigentlich schon ähnliche oder vergleichbare open source
projekte ?

gruß
kofi

von Sascha (Gast)


Lesenswert?

ja,

von egnite. Da kostet nur die Hardware was.


Mfg Sascha

von uli (Gast)


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

von kofi (Gast)


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

von uli (Gast)


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

von Sascha (Gast)


Lesenswert?

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

von uli (Gast)


Lesenswert?

Ich würde die Netzwerkkarte in einen PC einstecken und dann
konfigurieren. EEprom würde ich nicht auslöten.

Mfg Ulrich

von Sascha (Gast)


Lesenswert?

Tja, hab leider keinen PC, der noch nen Isa Slot hat.
Mfg Sascha

von uli (Gast)


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

von Sascha (Gast)


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

von uli (Gast)


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

von Sascha (Gast)


Lesenswert?

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

von uli (Gast)


Lesenswert?

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

von Joline (Gast)


Lesenswert?

Hallo Uli,

gibt's denn schomn Neuigkeiten bzgl. der Umsetzung auf einen
ATMega8/16?

Du wolltest doch mal Infos auf Deine Seite stellen.

Joline

von uli (Gast)


Lesenswert?

Hallo,

ja das habe ich auch noch vor, hatte aber zur Zeit weiter den Webserver
noch verbessert.

Mfg Ulrich

von Joline (Gast)


Lesenswert?

Am besten, Du gibst dann hier mal Bescheid.

von Sascha (Gast)


Lesenswert?

Hi,

hab hetzt ne 3Com EthelinkIII 3C509BC bekommen. Gibts ne Möglichkeit
diese zu nutzen? Sind keinerlei Jumper drauf :(

Mfg Sascha

von Kay (Gast)


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

von ulrich (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

Hi Uli,

hast du den source für den ATmega32?


Mfg sascha

von uli (Gast)


Lesenswert?

Hallo @sascha

ist doch kein Problem den Source an einen Mega32 anzupassen, sind doch
nur die ser. Reg. und Interrupt zu ändern.

Mfg Uli

von Sascha (Gast)


Lesenswert?

Hi,

schon fertig. Es läuft.


Mfg sascha

von Sascha (Gast)


Lesenswert?

hallo,

wie kann ich die IP-Adresse ausfindig machen, wovon auf den Webserver
zugegriffen wird?

Mfg Sascha

von Ulrich (Gast)


Lesenswert?

Die IP adresse ist 192.168.0.101 und wird in main.c angegeben

Mfg uli

von Sascha (Gast)


Lesenswert?

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

von Oliver Keller (Gast)


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

von Oliver Keller (Gast)


Lesenswert?

öh sorry! Falscher Thread... 's ist einfach schon zu spät!

von Joline (Gast)


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

von Sascha (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist es.

Ist aber wirklich nicht viel geändert.

Mfg sascha

von Christof Krüger (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

Hi.

also, ich habe bei zwei einzelnen zugeschlagen. Die haben wenigstens
alle Jumper onboard.

Mfg Sascha

von Christof Krüger (Gast)


Lesenswert?

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.

von Uli (Gast)


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

von Christof Krüger (Gast)


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!

von Uli (Gast)


Lesenswert?

Hallo,

melde mich sofort, wenn ich die 50 Netzwerkkarten habe.

Mfg Ulrich Radig

von Bjoern Biesenbach (Gast)


Angehängte Dateien:

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

von Henning (Gast)


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.

von Fiffi (Gast)


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

von Titus (Gast)


Lesenswert?

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

von uli (Gast)


Lesenswert?

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

von Titus (Gast)


Lesenswert?

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

von uli (Gast)


Lesenswert?

Hallo,

in device.h " #define rdc  6 " also prüfe ich auf 6

Mfg Ulrich

von Simon Lehmayr (Gast)


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!

von Henning (Gast)


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?

von Titus (Gast)


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

von uli (Gast)


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

von Henning (Gast)


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.

von PatrickHH (Gast)


Lesenswert?

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!

von Henning (Gast)


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.

von Uli (Gast)


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

von Volker Klautsch (Gast)


Lesenswert?

@Henning:

Mit dem Programm rset8019 (oder so ähnlich :-) von der Realtek-Homepage
geht es problemlos.

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

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

von Uli (Gast)


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

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

und nochmal eine neue Version :-)

Mfg Ulrich

von Simon Lehmayr (Gast)


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.

von Henning (Gast)


Lesenswert?

haste denn auch den richtigen interrupt freigegeben? in der main.c

von Simon Lehmayr (Gast)


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

von Simon Lehmayr (Gast)


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...

von Simon Lehmayr (Gast)


Lesenswert?

Habe gerade die Version von Sascha für den 32 laufen, die geht!

von Uli (Gast)


Lesenswert?

Hallo,

Was ist denn an dieser Version noch anders??
Habe ich da noch was übersehen.

mfg ulrich

von Uli (Gast)


Lesenswert?

Hallo,
habe mir den code nochmal angeschaut!
Übernimm mal die definition des Ports D von Sascha in meinen Code!!

Mfg Ulrich

von Simon Lehmayr (Gast)


Angehängte Dateien:

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.

von Uli (Gast)


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

von Bjoern Biesenbach (Gast)


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.

von Uli (Gast)


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

von Titus (Gast)


Lesenswert?

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

von Simon Lehmayr (Gast)


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.

von Henning (Gast)


Lesenswert?

@simon

Das passiert in httpd.c mittels Pointer. - Steht ja schließlich im
Quellcode ;-)

von Simon Lehmayr (Gast)


Lesenswert?

Das weiß ich sogar, ich hab auch neue Seiten dazugefügt, aber ich will
ja Werte dynamisch übertragen, also Messwerte, Sensoren, etc.

von Uli (Gast)


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

von Henning (Gast)


Lesenswert?

Werde mich um den Mega32 kümmern, denn ich bin grad am löten. Termine
kann ich aber nicht versprechen.

von Simon Lehmayr (Gast)


Angehängte Dateien:

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)

von Simon Lehmayr (Gast)


Angehängte Dateien:

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).

von Simon Lehmayr (Gast)


Angehängte Dateien:

Lesenswert?

Ein Bild vom neuen Server. Die Platine mit dem mega 8 ist gerade mal
5x4cm groß!

von Tobias Schneider (Gast)


Lesenswert?

impressive

von Simon Lehmayr (Gast)


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!

von Mattias (Gast)


Angehängte Dateien:

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

von Mattias (Gast)


Angehängte Dateien:

Lesenswert?

Huch, falsche Datei geschnappt...
hier die richtigen Bilder

Mattias

von Uli (Gast)


Lesenswert?

Hallo,

Habe nun auf meiner HP das EagleFile von Mattias nachgebauten Webserver
zum herunterladen.
Danke Mattias für die Bilder.

Mfg Ulrich

von Volker (Gast)


Lesenswert?

@Simon:

Hallo, ich hatte mal so ein ähnliches Problem. Hast du bei dem Mega32
das Fusebit CKOPT programmiert?

MFG Volker

von Simon Lehmayr (Gast)


Lesenswert?

Nein, kein CKOPT.

von Volker (Gast)


Lesenswert?

@Simon:

Das würde ich dann mal empfehlen. D.h. CKOPT programmieren (auf 0
setzen)

Volker

von Ralf Kirmis (Gast)


Lesenswert?

Hallo,

wer kann mir gegen Kostenbeteiligung eine solche Platine
mit der alles auf einer Karte Lösung ätzen ?

bis denne
Ralf

von Stefan (Gast)


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

von Simon Lehmayr (Gast)


Lesenswert?

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 :-)

von Uli (Gast)


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

von Kai M. Tegtmeier (Gast)


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

von Henning (Gast)


Lesenswert?

hast du denn die uart angeschlossen und die initiallisierung
entsprechend bekommen?

von Kai M. Tegtmeier (Gast)


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

von Uli (Gast)


Lesenswert?

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

von Kai M. Tegtmeier (Gast)


Lesenswert?

Hallo, Ulrich!

Ich benutze avr-gcc 3.4.1

von Henning (Gast)


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)...

von Uli (Gast)


Lesenswert?

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

von Kai M. Tegtmeier (Gast)


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

von Uli (Gast)


Lesenswert?

@Tegtmeier

8Datenbits, No Parity, 1StopBit, 9600Baud kein Protocol

Mfg Uli

von Kai M. Tegtmeier (Gast)


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

von Kai M. Tegtmeier (Gast)


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

von Kai M. Tegtmeier (Gast)


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

von Uli (Gast)


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

von Kai M. Tegtmeier (Gast)


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

von Uli (Gast)


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

von Kai M. Tegtmeier (Gast)


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

von Uli (Gast)


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

von Uli (Gast)


Lesenswert?

Hallo,

Ich hoffe ja nicht das du BNC benutzt!!

Mfg Ulrich

von Simon Lehmayr (Gast)


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.

von Henning (Gast)


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.

von Henning (Gast)


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.

von Kai M. Tegtmeier (Gast)


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

von Simon Lehmayr (Gast)


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.

von Kai M. Tegtmeier (Gast)


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

von Kai M. Tegtmeier (Gast)


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?

von Uli (Gast)


Angehängte Dateien:

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

von Uli (Gast)


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

von Bjoern Biesenbach (Gast)


Lesenswert?

Hurra, Version 1.08 läuft nun auch auf meinem Mega32 Webserver :-)

von Mattias (Gast)


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

von Uli (Gast)


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

von Simon Lehmayr (Gast)


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!

von Uli (Gast)


Lesenswert?

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

von Peter Kock (Gast)


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

von Uli (Gast)


Lesenswert?

Hallo @Peter,

Das hatte ich auch bis ich die Fuse CKOPT eingestellt habe,
diese ist zum abschalten des 2. Quarzes.

Mfg Ulrich

von Mattias (Gast)


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

von Uli (Gast)


Lesenswert?

@Mattias

...[CHECKSUM INCORRECT]...??

Wo schreibt er dieses??
Habe diese Meldung noch nie gesehen!

Mfg Ulrich

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo @Mattias

Ich habe mal die Datenpackete mit Etherreal aufgezeichnet und man sieht
alle Checksummen sind correct (Datei im Anhang).

Mfg Ulrich

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe mal mit einer Doku angefangen evt. fällt einen oder andern der
dieses Projekt nachgebaut hat noch was ein.

Mfg Ulrich

von Mattias (Gast)


Angehängte Dateien:

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

von Uli (Gast)


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

von Mattias (Gast)


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

von Mattias (Gast)


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

von Uli (Gast)


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.

von Uli (Gast)


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

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo @all,

Hier nochmal eine neue Doku, ich hoffe jemand von euch kann besser
schreiben ;-)

Mfg Ulrich

von Torsten Voigt (Gast)


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

von Mattias (Gast)


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

von Mattias (Gast)


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

von Uli (Gast)


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

von Uli (Gast)


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

von Uli (Gast)


Lesenswert?

Hallo,

Habe soeben den SourceCode 1.09 mit geänderten Interrupt auf meiner HP
eingestellt. Meine nun damit ist der Fehler beseitigt.

Mfg Ulrich

von Uli (Gast)


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

von Mattias (Gast)


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

von Mattias (Gast)


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

von PatrickHH (Gast)


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

von Henning (Gast)


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.

von PatrickHH (Gast)


Lesenswert?

Jo Danke,

werde mir dann mal ne andere besorgen.

Gruß PatrickHH

von Uli (Gast)


Lesenswert?

Hallo,

Die 3Com Netzwerkkarten funktionieren definitiv nicht,
die Register sind anders als bei einer NE2000 kompatiblen Karte.

Mfg Ulrich

von Bjoern Biesenbach (Gast)


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

von Henning (Gast)


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...

von Uli (Gast)


Lesenswert?

Hallo,

>>Hab jetzt allerdings ein anderes Problem :) ich suche noch einen
gescheiten Verwendungszweck...

Ich habe auch noch keinen ;-)

Mfg Uli

von Mattias (Gast)


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

von Bjoern Biesenbach (Gast)


Lesenswert?

@ 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

von Uli (Gast)


Angehängte Dateien:

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

von Bjoern Biesenbach (Gast)


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

von Simon Lehmayr (Gast)


Lesenswert?

Ich tendiere auch zu SD/MMC, wegen guten Erfahrungen in diesem Bereich
:-)

von Henning (Gast)


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?

von Martin (Gast)


Lesenswert?

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

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Hier wieder ein neuer Source Code mit weiteren Verbesserungen, sowie
eine UHR mit Timer1 (noch nicht mit Mega32 getestet).

Mfg Ulrich

von Torsten Voigt (Gast)


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

von Bjoern Biesenbach (Gast)


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

von Uli (Gast)


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

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo @all,

mit diesem Device.c.h dateien läuft alles ein bisschen schneller ;-)

Mfg Ulrich

von Simon Lehmayr (Gast)


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?

von Uli (Gast)


Lesenswert?

Hallo @Simon:

in Interrupt4 bei Get

Mfg Ulrich Radig

von Bjoern Biesenbach (Gast)


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

von Joline (Gast)


Lesenswert?

@Björn

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

von Bjoern Biesenbach (Gast)


Lesenswert?

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

von Uli (Gast)


Lesenswert?

Hallo,

Neuer Source Code auf meine HP V1.16

Mfg Ulrich

von Mattias (Gast)


Lesenswert?

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

Gruss Mattias

von Henning (Gast)


Lesenswert?

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

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

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

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

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

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

greez Henning

von Uli (Gast)


Lesenswert?

Hallo,

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

Mfg Ulrich

von Joline (Gast)


Lesenswert?

Hallo,

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

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

Danke Joline

von Uli (Gast)


Lesenswert?

Hallo,

Mal wieder eine neue Version auf meiner Homepage:

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

Mfg Ulrich

von Uli (Gast)


Lesenswert?

Hallo,

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

Mfg Ulrich

von Bjoern Biesenbach (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

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

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

Viele Grüße
Björn

von Martin (Gast)


Lesenswert?

Hallo,

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

Martin

von Philipp Drewes (Gast)


Lesenswert?

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

Gruß Phili

von Mattias (Gast)


Lesenswert?

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

Gruss Mattias

von Uli (Gast)


Lesenswert?

Hallo,

Alle Platinen von mir sind Handgeroutet.

Mfg Ulrich

von Henning (Gast)


Lesenswert?

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

von Volkmar (Gast)


Lesenswert?

Hallo,

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

Volkmar

von marcel (Gast)


Lesenswert?

hallo

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

von Uli (Gast)


Lesenswert?

Hallo,

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

von Andreas Jakob (Gast)


Lesenswert?

Hab ich grad gefunden :

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

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

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

Grüße
Andreas

von Jochen (Gast)


Lesenswert?

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

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

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

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

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

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

Bis dahin,
Jochen

von Thorsten (Gast)


Lesenswert?

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

von Henning (Gast)


Lesenswert?

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

von Jens123 (Gast)


Lesenswert?

hallo

ich haette da auch noch eine kleine anwendung..

Euch allen sagt sicher Instabus etwas oder??

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

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

von Tobias Schneider (Gast)


Lesenswert?

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

Gruß Tobias

von Ulrich (Gast)


Lesenswert?

Hallo,

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

Mfg Uli

von Tobias Schneider (Gast)


Lesenswert?

Hi,
ok ist nicht so tragisch.

Gruß Tobias

von Volker Klautsch (Gast)


Lesenswert?

@Tobias

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

MFG Volker

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Volker Klautsch (Gast)


Lesenswert?

@All

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

Volker

von Tobias Schneider (Gast)


Lesenswert?

Hi,

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

Gruß Tobias

von Volker Klautsch (Gast)


Lesenswert?

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

Volker

von Tobias Schneider (Gast)


Lesenswert?

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

Ich schreib dir noch ne mail.

Gruß Tobias

von Jon (Gast)


Lesenswert?

Hallo Volker,

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

Gruß, Jon

von Alno (Gast)


Lesenswert?

Hi All,

nachdem ich den ganzen thread durch habe meine Frage:

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

Gruß

von Frank Bertling (Gast)


Lesenswert?

Hallo zusammen,

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

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

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

von Ulrich (Gast)


Lesenswert?

Hallo @Frank Bertling

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

Mfg Uli

von Volker (Gast)


Lesenswert?

Hallo zusammen!

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

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

Besten Dank für eure Hilfe!

Volker

von Ulrich (Gast)


Lesenswert?

Hallo,

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

Mfg Ulrich

von Volker (Gast)


Lesenswert?

Hallo zusammen,

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

Meldet euch doch einfach mal!

Viele Grüsse

Volker

von Thorsten (Gast)


Lesenswert?

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

Gruß
Thorsten

von Ulrich (Gast)


Lesenswert?

Hallo,

Ich benutze auch den RTL8019AS Chipsatz.

Mfg Uli

von Volker (Gast)


Lesenswert?

Danke für eure Antworten!

Geht denn der 8029er Chipsatz auch?

Viele Grüsse

Volker

von Ulrich (Gast)


Lesenswert?

Hallo,

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

Mfg Uli

von Volker (Gast)


Lesenswert?

Okidoki,

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

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

Viele Grüsse

Volker

von Thorsten (Gast)


Lesenswert?

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

von Ulrich (Gast)


Lesenswert?

Hallo,

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

Mfg Ulrich

von Volker (Gast)


Lesenswert?

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

Was für Netzwerkmodule meinst Du?

Viele Grüsse

Volker

von 123 (Gast)


Lesenswert?

AVR Ethernet Platine

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

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

von Stefan (Gast)


Lesenswert?

Hi Leute,

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

Ich hab jedoch ein paar Probleme:

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

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

juti, hoffe jemand kann mir helfen!
Stefan

von Tobias Schneider (Gast)


Lesenswert?

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

von Martin (Gast)


Lesenswert?

Hallo Tobias,

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


Martin

von CDG (Gast)


Lesenswert?

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

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

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

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

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

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

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

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

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

Ich danke schonmal für Hinweise

cdg

von Jens123 (Gast)


Lesenswert?

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

sonnst stimmen die ganzen timings nicht mehr!!!

von CDG (Gast)


Lesenswert?

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

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

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

MfG cdg

von Jon (Gast)


Lesenswert?

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

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

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

Gruß, Jon

von CDG (Gast)


Lesenswert?

@Jon und andere

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

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

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

Danke cdg

von Jon (Gast)


Lesenswert?

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

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

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

von CDG (Gast)


Lesenswert?

@Jon
Danke für deine Geduld.

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

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

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

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

Freundliche Grüße
cdg

von Henning (Gast)


Lesenswert?

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

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

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

henning

von Jon (Gast)


Lesenswert?

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

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

von Henning (Gast)


Lesenswert?

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

das währe natürlich relativ nutzlos.

von Simon Lehmayr (Gast)


Lesenswert?

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

von Henning (Gast)


Lesenswert?

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

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

von CDG (Gast)


Lesenswert?

@Simon, Henning, Jon

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

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

Ok, ein Switch ist vorhanden.

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

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

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

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

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

Vielen Dank
cdg

von Uwe Nagel (Gast)


Lesenswert?

Hallo

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

Dabei sind mir ein paar Probleme aufgefallen:

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

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

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

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

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

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

Vielen Dank
Uwe

von Martin (Gast)


Lesenswert?

Hallo Uwe,

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


Martin

von Uwe Nagel (Gast)


Lesenswert?

Hallo Martin,

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

Ist der Server damit schon überlastet?

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

Gruß
Uwe

von Tobias Schneider (Gast)


Lesenswert?

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

von Uwe Nagel (Gast)


Lesenswert?

Hallo

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

Uwe

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

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

Mfg Ulrich

von Uwe Nagel (Gast)


Lesenswert?

Hallo Ulrich

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

Uwe

von Uli (Gast)


Lesenswert?

Hallo,

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

Mfg uli

von Uwe Nagel (Gast)


Lesenswert?

Hallo,

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

Uwe

von Michael (Gast)


Lesenswert?

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

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

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

mal schauen

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

von Uli (Gast)


Lesenswert?

Hallo @Uwe,

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

Mfg Ulrich

von Elektrikser (Gast)


Lesenswert?

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

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

Gruß Gerd G.

von Tobias Schneider (Gast)


Lesenswert?

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

Gruß Tobias

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Michael (Gast)


Lesenswert?

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

von Jochen (Gast)


Lesenswert?

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

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

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

Gruß,
Jochen

von Uwe Nagel (Gast)


Lesenswert?

@Uli

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

@Jochen

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

Uwe

von Tobias Schneider (Gast)


Lesenswert?

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

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

weis jemand rat?

Gruß Tobias

von Tobias Schneider (Gast)


Lesenswert?

Uli:
welches programm benuzt denn du?

von CDG (Gast)


Lesenswert?

@Michael

Ich habe noch passende Netzwerkkarten.

Schicke bitte eine Mail vieviel du brauchst.

MfG cdg

von Uwe Nagel (Gast)


Lesenswert?

@Tobias

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

Uwe

von Tobias Schneider (Gast)


Lesenswert?

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

von Tobias Schneider (Gast)


Lesenswert?

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

von Uli (Gast)


Lesenswert?

Hallo,

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

mfg uli

von Tobias Schneider (Gast)


Lesenswert?

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

von Michael R. (Gast)


Lesenswert?

Moinsen...

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

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

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

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

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

von Henning (Gast)


Lesenswert?

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

von Michael R. (Gast)


Lesenswert?

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

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

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

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

von Michael R. (Gast)


Lesenswert?

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

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

von Tobias Schneider (Gast)


Lesenswert?

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

Gruß Tobias

von Uwe Nagel (Gast)


Lesenswert?

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

Uwe

von Michael R. (Gast)


Lesenswert?

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

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

von Henning (Gast)


Lesenswert?

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

von Jon (Gast)


Lesenswert?

Hallo,

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

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

Gruß, Jon

von max (Gast)


Lesenswert?

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

ich hab mich dann auf den linux kernel treiber verlassen:

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

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

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

von hebel23 (Gast)


Lesenswert?

@Michael R.:

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

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

Gruß Andreas

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Uli (Gast)


Lesenswert?

Hallo @hebel123,

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

Mfg Ulrich

von hebel23 (Gast)


Lesenswert?

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

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

Gruß Andreas

von geloescht (Gast)


Lesenswert?

Dieser Beitrag wurde auf Wunsch des Autors geloescht.

von Tobias Schneider (Gast)


Lesenswert?

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

Wozu diese null ueberhaupt?

Gruß Tobias

von Tobias Schneider (Gast)


Lesenswert?

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

von Uwe Nagel (Gast)


Lesenswert?

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

Uwe

von Volker (Gast)


Lesenswert?

Hallo Uwe

Hast du bei deinem Mega32 das CLKOPT Fuse gesetzt?

Volker

von Elektrikser (Gast)


Lesenswert?

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

Gruß Elektrikser

von Jon (Gast)


Lesenswert?

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

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

von Elektrikser (Gast)


Lesenswert?

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

von hebel23 (Gast)


Lesenswert?

Hallo allerseits,

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

1.Verbindungsaufbau
2.Übertragung
3.Verbindungsabbau

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

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

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

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

Gruß Andreas

von Jon (Gast)


Lesenswert?

Hallo Andreas,

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

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

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

von Uli (Gast)


Lesenswert?

Hallo @hebel23,

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

Mfg Ulrich

von Roland (Gast)


Lesenswert?

Hallo,

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

Vielen Dank Roland

von Tobias Schneider (Gast)


Lesenswert?

Hi,
hier eine einfach implementierung:

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

#define UDP_OFFSET        0x22

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

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

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


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

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


Gruß Tobias

von Roland (Gast)


Lesenswert?

Hallo

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


Vielen Dank schon mal
Roland

von hebel23 (Gast)


Lesenswert?

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

Gruß Andreas

von Roland (Gast)


Lesenswert?

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

von Jon (Gast)


Lesenswert?

@Andreas & Co.

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

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

Gruß, Jon

von Michi (Gast)


Lesenswert?

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

Hat jemand Interesse den Webserver um eine Festplatte zu erweitern?

von Roland (Gast)


Lesenswert?

Hallo

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

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

von Tobias Schneider (Gast)


Lesenswert?

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

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

Ich hoffe dir geholfen zu haben

Gruß Tobias

von Roland (Gast)


Lesenswert?

Hallo Tobias,

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

von OldBug (Gast)


Lesenswert?

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

Verständlich?

von Roland (Gast)


Lesenswert?

Hallo (OldBug),

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

Vielen Dank schon mal wieder

von Jon (Gast)


Lesenswert?

Hallo Roland,

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

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

Viele Grüße,
Jon

von Roland (Gast)


Lesenswert?

Hallo,

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

Gruß
Roland

von Jon (Gast)


Lesenswert?

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

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

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

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

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

von Ralf Kirmis (Gast)


Lesenswert?

@Tobias

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

Vielen Dank,

Ralf

von Roland (Gast)


Lesenswert?

Hallo Jon,

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

Also nochmal vielen Dank an Tobias, OldBug und Jon
Roland

von Tobias Schneider (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Ralf,

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

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

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

Gruß Tobias

von Michael (Gast)


Lesenswert?

Hallo,

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

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

Bin für Tipps dankbar.

Gruß
Michael

von Uwe Nagel (Gast)


Lesenswert?

Hallo Michael,

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

Uwe

von Michael (Gast)


Lesenswert?

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

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

Gruß
Michael

von Jon (Gast)


Lesenswert?

1kB dürfte schon verdammt knapp sein.

von Jon (Gast)


Lesenswert?

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

von Michael (Gast)


Lesenswert?

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

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

Gruß
Michael

von Jon (Gast)


Lesenswert?

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

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

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

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

von Martin Schuhmacher (Gast)


Lesenswert?

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

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

von Jon (Gast)


Lesenswert?

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

von Max (Gast)


Lesenswert?

Hallo!

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

ich verwende einen atmega32 für den webserver.

schöne grüße,
Max

von Martin Schuhmacher (Gast)


Lesenswert?

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

Overrun!

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

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

von Elektrikser (Gast)


Lesenswert?

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

Gruß Elektrikser

von Martin Schuhmacher (Gast)


Lesenswert?

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

von Arne Rossius (Gast)


Lesenswert?

Tag,

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

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

von Elektrikser (Gast)


Lesenswert?

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

Gruß Elektrikser

von Arne Rossius (Gast)


Lesenswert?

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

von Arne Rossius (Gast)


Lesenswert?

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

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

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

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

von Ulrich Radig (Gast)


Lesenswert?

Hallo,

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

Mfg Ulrich

von Arne Rossius (Gast)


Lesenswert?

Hallo Ulrich,

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

von Arne Rossius (Gast)


Lesenswert?

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

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

von Arne Rossius (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stefan Seegel (Gast)


Lesenswert?

@Uli:

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

Stefan

von hebel23 (Gast)


Lesenswert?

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

Andreas

von plitzi (Gast)


Lesenswert?

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

Jörg

von Ulrich Radig (Gast)


Lesenswert?

Hallo,

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


Mfg Ulrich

von Tobias S. (tobias)


Lesenswert?

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

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

Gruss Tobias

von Martin Schuhmacher (Gast)


Lesenswert?

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

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

von Volkmar (Gast)


Lesenswert?

@Martin,

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

Volkmar

von Stefan Seegel (Gast)


Lesenswert?

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

Stefan

von Elektrikser (Gast)


Lesenswert?

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

Gruß Elektrikser

von Joline (Gast)


Lesenswert?

Hallo,

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

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

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

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

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

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

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

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

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

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

Danke
Joline

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

von Joachim B. (Gast)


Lesenswert?

Hallo Joline,

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

Gruß
Joachim

von Joline (Gast)


Lesenswert?

Hallo Joachim,

ja, habe ich.

Joline

von Sssssss (Gast)


Lesenswert?

Hi!

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

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

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

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

jemand ne Idee ?

von Birger* (Gast)


Lesenswert?

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

von Sssssss (Gast)


Lesenswert?

Hi!

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

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

von Birger* (Gast)


Lesenswert?

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

von Elektrikser (Gast)


Lesenswert?

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

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

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

Gruß Elektrikser

von Elektrikser (Gast)


Lesenswert?

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

von Sssssss (Gast)


Lesenswert?

Hi!

Also ich habs jetzt laufen :D

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

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

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


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

von Sssssss (Gast)


Lesenswert?

sorry meinte natürlich httpd.c:

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

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

von Birger* (Gast)


Lesenswert?

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

von Birger* (Gast)


Lesenswert?

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

von Birger* (Gast)


Lesenswert?

Komisch, jetzt gehen sie doch.

von Elektrikser (Gast)


Lesenswert?

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

von Birger* (Gast)


Lesenswert?

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

von Elektrikser (Gast)


Lesenswert?

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

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

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


Gruß Elektrikser

von Joline (Gast)


Lesenswert?

Hi,

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

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

Was könnte noch schief laufen?

Joline

von Birger* (Gast)


Lesenswert?

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

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

von Joline (Gast)


Lesenswert?

@Birger*

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

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

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

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

Und warum erfolgt die Ausgabe 'Overrun!'?

von Birger* (Gast)


Lesenswert?

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

von Joline (Gast)


Lesenswert?

@Birger*

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

von Andreas G. (ag1brg)


Angehängte Dateien:

Lesenswert?

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

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

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

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

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

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

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

Im Angang ein vorläufiger Screenshot

Schaltplan und Bestückungsplan auf Anfrage erhältlich

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

tnx für eure Aufmerksamkeit
Andreas

von Andreas G. (ag1brg)


Lesenswert?

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

sry für das Missgeschick

Andreas

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Andreas G. (ag1brg)


Lesenswert?

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

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

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

MFG
Andreas

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Birger* (Gast)


Lesenswert?

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

von Andreas G. (ag1brg)


Lesenswert?

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

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

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

von Freaky (Gast)


Lesenswert?

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

von Birger* (Gast)


Lesenswert?

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

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

von Bent Rössing (Gast)


Lesenswert?

Hi (oder Mahlzeit :-))

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

von No N. (birger)


Lesenswert?

abo

von Patrick (Gast)


Lesenswert?

Hallo,

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

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

Grüße,
Patrick

von cdg (Gast)


Lesenswert?

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

MfG cdg

von Patrick (Gast)


Lesenswert?

Entschuldigung, natürlich.

Meine Mailadresse: pady (at) freakmail.de

von Max Friedrichs (Gast)


Lesenswert?

Hallo Leute,

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

Saiztmp (at) gmail.com


Danke

von Ludwig W. (lordludwig)


Lesenswert?

Ebay Artikelnummern für RTL8019 Netzwerkkarten:

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

von Gast (Gast)


Lesenswert?

Scherzkeks...
200004558184 -> Hat nen UMC-Chip
180006214792 -> Eine mit UMC-Chip, ne andere eventuell mit
Realtek-Chip
170003454377 -> Alles nur kein Realtek!

von Ludwig W. (lordludwig)


Lesenswert?

sry bei den ersten beiden hab ich mich wohl vertag, sry

aber die letzte is 100% eine realtek. Auf dem sticker steht YES! und
drunter is trommelwirbel ein RTL8019.

hatte den sticker auf den ersten beiden wohl für den YES! sticker
gehalten.

aber von aufbau her könnte da auch ein RTL8019 drunter sein? sieht
zumindest so aus, kann ich aber nicht garantieren...

von Werner B. (Gast)


Lesenswert?

"YES! und
drunter is trommelwirbel ein RTL8019."

nicht immer, kann auch ein UMC drunter sein.

von Gast (Gast)


Lesenswert?

Sag ich doch ;-)

von hilfesuchender (Gast)


Lesenswert?

>getestet habe ich Netzwerkkarten natürlich Realtek RTL8019, Accton mit
>MPX2 Chipsatz, 3Com 3c509TX und eine eines mir unbekannten
Herstellers
>mit UM9008F Chipsatz.

Habe auch eine Netzwerkkarte mit UM9008-Chipsatz. Hat mir jemand einen
Sourcecode, damit es mit dieser funktioniert? Habe auch schon I/O CH
RDY an PD6 angeschlossen. Bekomme die Source aber nicht kompiliert (die
signal.h vom WinAVR ist wohl mal getauscht worden)

von Jon (Gast)


Lesenswert?

@hilfesuchender

Der neue AVR GCC hat das Signal Handling und noch einiges anderes
geändert. Probier mal die deprecated.h mit einzubinden, die stellt noch
einige der alten Funktionen zur Verfügung.

von hilfesuchender (Gast)


Lesenswert?

Naja der Fehler bleibt... mach ich was falsch?

Hab in der main.h hinzugefügt:
#include <compat/deprecated.h>

Der Error mit fdevopen bleibt, egal ob ich noch dazu das include der
signal.h auskommentiere oder nicht.

Bin für jede Hilfe dankbar!

von A.K. (Gast)


Lesenswert?

fdevopen hat sich geändert, lässt sich aber mühelos anpassen. Dazu Doku
dieser Funktion der libavr lesen.

von hilfesuchender (Gast)


Lesenswert?

Es tut mir leid aber dort steig ich nicht durch. Habe schon vor ich hier
gepostet hab in das Manual geschaut. Komme aber damit nicht klar.

ratlos

von hilfesuchender (Gast)


Lesenswert?

Hmm okay, scheine eine Lösung im Forum gefunden zu haben:
Ein #define __STDIO_FDEVOPEN_COMPAT_12 muss vor dem inlcude der stdio
stehen.

Nun erscheint beim kompilieren aber eine Fehlermeldung mit dem PRINTF,
undefined reference heißt es. Tatsächlich kann ich nirgendwo eine
definition von PRINTF finden, wie kann das sein?

Und wie muss ich es definieren? Vom Umgang mit LCDs am Controller weis
ich, dass dort eine Funktion drin stehen muss die die Daten ausgibt,
z.B. über den UART. Aber wie heißt diese?

von Harald W. (Gast)


Lesenswert?

Hallo Forenuser,

kann mir jemand helfen? Ich suche eine fertige HEX-File für meinen
Webserver. Kompiliert für: ATmega32 mit 16MHz-Quarz und einer Realtek
RTL8019-Netzwerkkarte.

Mit den fertigen Hexfiles der Version 1.38 läuft der Webserver bereits,
jedoch habe ich dort keine Möglichkeit der Konfiguration. Und in der
1.40 kann man dann ja via Datei auf der MMC-Speicherkarte IP-Adresse
usw. einstellen.

Währe nett wenn jemand einem alten Hasen wie mir helfen könnte.

Gruß,
Harald

von Peter W. (Gast)


Lesenswert?

Hallo zusammen,

bin auf der suche nach dem RTL Chip nun habe ich bei EBAY diese
Netzwerkarte gefunden Artikelnummer: 180014984457 ist es damit genau so
möglich den Webserver aufzubauen? oder besser mit dem einzelnem Chip?


MfG Peter W.

von Ludwig W. (lordludwig)


Lesenswert?

mit der karte isses sogar um einiges einfacher weil du übertrager buchse
und alles schon so hast wie dus brauchst...

musst halt entscheiden ob se dir ned zu groß is sonst geht alles genau
so und super!

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich hoffe ich werde jetzt nicht gekillt, dass ich diesen Thread 
ausgrabe, aber ich habe da ein paar Fragen zu der RTL8019 Karte und 
deren Initialisierung:

1. In deinem Code (rtl8019.c) sowie in allen anderen (zB Arthernet) Code 
findet man immer etwas, was ungefähr so aussieht:
1
  ReadRTL (RSTPORT);
2
  WriteRTL (RSTPORT , 0xFF);

Was ist das für ein RSTPORT ? Ich habe mich schon wund gesucht im 
RTL8019 Datenblatt. Alles was ich finden kann sind die 
Registerdefinitionen. Diese haben allerdings maximal einen Offset von 
0x0F. RSTPORT ist jedoch mit 0x18 oder mit 0x1F (arthernet) definiert.

Das gleiche mit diesem DMA Zugriff. Wo steht darüber was im Datenblatt?

2. Wie funktioniert dieses DMA (Direct Memory Access) genau? Kann ich in 
den Speicher der Netzwerkkarte direkt hereinschreiben? Oder was soll das 
heißen? Sprich: Hier kann ich ab Offset 0xYZ direkt in den Sendepuffer 
hinenschreiben, was dann automatisch ausgegeben wird?

3. Wenn die Init fertig ist, wie kann ich am besten testen, ob überhaupt 
der Zugriff auf die Netzwerkkarte funktioniert? Wenn ich so ein 
Register, was ich in der Init mit zB Konfigurationsdaten oder der MAC 
Adresse beschreibe, wieder auslese, müsste man doch genau das gleiche 
wieder auslesen, oder?

So das wars erstmal. Eine Antwort wäre nett :-)

Gruß
*Ein nicht ganz durchblickender Simon ;)

von JoachimB (Gast)


Lesenswert?

Hallo Simon,

zu 1.
Der RTL8019 ist irgendwo am AVR-Controller angeschlossen. In deinem Fall 
am "RSTPORT". Der Begriff "RSTPORT" ist in einer *.h-Datei mit dem Port 
verknüpft (z. B. Port A), an dem der RTL8019 angeschlossen ist. RSTPORT 
bezieht sich auf den Port des AVR-Controllers.

zu 2.
Der DMA-Zugriff beim RTL8019 funktioniert nicht so, wie z.B. beim Z80. 
Tiefere Erkenntnisse kann man gewinnen, wenn man die Literatur zu NE2000 
oder DP8390 studiert. Die RTL8019-Beschreibung ist hier etwas 
oberflächlich.

zu 3.
so sehe ich das auch.

Ich hoffe, Dir etwas weitergeholfen zu haben.
Gruß
Joachim

von JoachimB (Gast)


Lesenswert?

Ich muß mich noch einmal korrigieren.
zu 1.
Sieh einmal in den Funktionsdefinitionen zu ReadRTL und WriteRTL nach.
Dort kann man erkennen, was mit dem übergebenen Wert "RSTPORT" gemacht 
wird.

Gruß
Joachim

von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo JoachimB

Danke für deine Antwort erstmal.

RSTPORT ist ein Define.. Allerdings kein Define für ein (I/O-) Register 
oder ähnliches. Es wird genauso der Funktion ReadRTL bzw WriteRTL 
übergeben, als wäre es ein NE2000 kompatibles Register ?! So zumindest 
sehe ich das. Allerdings lässt sich dieses Register nirgndwo in der 
RTL8019 Doku finden. Zu dem DMA Gedönse ebenfalls nicht.

Ich schau mal, dass ich eine NE2000 Spec bekomme..

von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo nochmal,

Ich habe mich mittlerweile durch einige Google-Links geklickt und bin 
auf Projekte und Vorträge gestoßen. Ich konnte feststellen, dass dort 
auch immer die Rede von einem "Reset Port" ist, und dass man diesen zum 
Initialisierungszeitpunkt beschreiben solle.
Eine NE2000 Specification o.ä. konnte ich jedoch nicht finden. Hat da 
zufällig jemand einen Link parat? Hier im Forum habe ich leider auch 
nichts finden können.

PS: Das mit dem DMA bzw dem Remote-DMA hat sich zwischenzeitlich gelegt. 
Das leuchtet mir mittlerweile ein ;)

von A.K. (Gast)


Lesenswert?

In meiner Version der Realtek Doku findet sich der Reset-Port in der 
Register-Übersicht auf Seite 9.

Kompatibel und Doku irgendwo zu finden: Davicom DM9008.

Kern der NE2000 war der National Semiconductor DP8390. In dessen 
Datasheet gibt's den Reset-Port naturgemäss nicht. Dafür ist die Doku 
teilweise recht anschaulich.

von Simon K. (simon) Benutzerseite


Lesenswert?

>>In meiner Version der Realtek Doku findet sich der Reset-Port in der
>>Register-Übersicht auf Seite 9.

*KLATSCH

n.c.

Vielen Dank *hustet :-)

von Manuel (Gast)


Lesenswert?

Hey Leute,

Ich weiß das is jetzt ne ganz andere geschichte... aber hat irgendwer 
hier ne Ahnung wie ich den EEPROM (Dateneeprom) eines PIC24FXXX 
beschreiben kann? mit dem C30 Compiler in C - denn irgendwie werde ich 
bis jetzt nicht so recht schlau aus dem ganzen und ich habe noch keinen 
anhaltspunkt =/

Danke mfg Manuel

von Ludwig W. (lordludwig)


Lesenswert?

o.O mach nen neuen Thread auf!

von Dirk Meyer (Gast)


Lesenswert?

Hallo,

bevor ich das ganze demnächst evtl. aufbaue: was für 
Geschwindigkeiten/Datendurchsätze erreicht ihr so beim Abruf von 
(größeren) Bildern/Dateien
a) aus dem internen Speicher
b) von SD-Card via SPI?
Würde mich über ein paar Erfahrungswerte freuen, da ich evtl. plane 
Log-Dateien mit ca. 500kB einzusetzen. Bringt nur nichts, wenn die übers 
Netz nicht schnell genug rüberkommen.
Insofern: könnte mal jemand 1MB auf Karte kopieren und den Durchsatz 
messen. Evtl. auch "nur" mit ein paar KB aus dem Speicher?

Danke,

Dirk

von DonDimon (Gast)


Lesenswert?

Ich habe einen ALLNET Printserver Junior extra mit dem RTL8019AS Chip, 
mein Problem ist wenn ich einen Dauerping mache verliert er immer wieder 
pings in unregelmässigen abständen. Hab ihn auseinander genommen und 
bemerkt das ein Kondensator (.75 1KV sec) einen dünnen riss hat jetzt 
weis ich nicht ob das so seien muss oder ob er defekt ist. Googlen hat 
nichts gebracht, bin dadurch hier angekommen wenn einer ne Idee hat 
worans liegen kann sagts mir bitte bitte

von Ludwig W. (lordludwig)


Lesenswert?

Es währe sehr hilfreich, wenn du ein Foto von dem Kondensator mit dem 
schaden machen könntest!

von gast (Gast)


Lesenswert?

kondensatoren werden zum teil eingefräst, um sie zu "kalibrieren", d.h. 
den wert exakt an zu passen.

von GutMan (Gast)


Lesenswert?

Hallo,

ich habe mir auch einen AVR-Webserver auf einer ISA-CTRL Platine 
aufgebaut.
Jetzt habe ich das Problem, dass ich den AVR nicht pingen kann.

Netzwerkkarte: RTL8019AS, eingestellt auf IRQ9 und I\O-Bereich:0300-031F 
über den Gerätemanager in Windows 2k

Das Hyper-Terminal gibt folgendes aus:

RTL8019AS: Okay 34
MAC: 00:40:95:08:5A:FA
IP : 192.168.0.111

Am AVR-Webserver kann es nicht liegen, da ich ihn bereits mit einer 
weiteren Netzwerkkarte (ebenfalls RTL8019AS) von einem Kumpel 
ausprobiert habe. Mit dieser hatte er funktioniert.

Mein PC ist auch im gleichen Subnetz.

An was kann das liegen?

Mfg,

GutMan



Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.