W3100a

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Hi Leute,
also ich habe da ein Problem. Habe selbst ei Board entwickelt, mit
W3100a, RTL8201 und 89C52.
Wenn ich versuche das Board anzupingen kriege ich bloss
Zeitüberschreitung. Habe dann mal den Datenverkehr im Netz mit
ETHEREAL aufgezeichnet. Das Board antwortet aber mein PC versteht das
nicht. Hängt auch ein Router zwischen (NETGEAR RP6114v2) Der findet
die Schaltung auch (IP adresse und MAC wird angezeigt. Wenn ich einen
Ping sende erzeugt der W3100A auch keinen Interrupt. Ich weiss nicht
mehr weiter. Hier dass Programm (für Hilfen wäre ich sehr dankbar. wie
muss ich dat Dingen richtig programmieren?Von C habe ich keinen
Blassen, mache alles mit BASCOM8051).

Übrigens der W3100a hängt auf der Basis-Adresse $8000

$regfile = "89c51.dat"
$crystal = 4000000
$ramstart = &H8000                                            'at this
adress is the w3100a (hardwired)
Dim Iii As Byte                                               'i need
variables
Dim Aaa As Byte
Dim Result As Byte
Dim T As Byte
Dim S As String * 50
Waitms 100
P3.1 = 0
P1.7 = 0
Iii = 0
Aaa = 0

Call W3100a_init

'Enable Interrupts                                            
'enables the interrupts of my mcu
'Enable Int0                                                   'enable
the interrupt (at this pin is the int wire of the w3100a
'On Int0 Isr                                                   'if
ainterrupt occurs call the isr routine                                
                'Initialise the INT0 Interrupt

Do
 P1.7 = Not P1.7
 Wait 1                                                       'at this
position will be the main program (later)
Loop

Isr:
 P1.7 = Not P1.7                                              'it will
change the status of the led to show me that an interrupt has occured
Return
End




Sub W3100a_init
'W3100A Reset              will set the reset pin for 50 ms at high
then at low and wail 50ms
 P3.1 = 1
 Waitms 50
 P3.1 = 0
 Waitms 50

'Init W3100A
Out &H8000 , &H80
Waitms 50

'memory setup               (4 x 2kB)
 Out &H8095 , 55
 Out &H8096 , 55

'gar Gateway                 i have a netgear router, it have the ip
adress 192.168.0.1
 Out &H8080 , 192
 Out &H8081 , 168
 Out &H8082 , 0
 Out &H8083 , 1

'smr Subnet-Mask             subnet mask as at my windows computer
 Out &H8084 , 255
 Out &H8085 , 255
 Out &H8086 , 255
 Out &H8087 , 0

'shar MAC Adresse            'MAC Address
 Out &H8088 , 0
 Out &H8089 , 8
 Out &H808A , &HDC
 Out &H808B , 0
 Out &H808C , 0
 Out &H808D , 0

'sipr IP-Adresse             IP adress is 192.168.0.8
 Out &H808E , 192
 Out &H808F , 168
 Out &H8090 , 0
 Out &H8091 , 8

'sysinit                      i think it's o.k.
 Waitms 10
 Out &H8000 , 1
 While Result = 1
  Result = Inp(&H8004)
 Wend
'(
'TCP stream festlegen         is that right?
 Out &H80A1 , 1
 Waitms 100

'sock init                    I'm not really know is it correct
 Out &H8092 , &H0F
 Waitms 2
 Out &H8092 , &HA0
 Waitms 2

'port                         port have to be $80 (HTTP)
 Out &H80F6 , &H00
 Waitms 2
 Out &H80F7 , 80
 Waitms 2


 Out &H8000 , 2
 While Result = 2                                            
'established ?
  Result = Inp(&H8004)
 Wend
')

 For T = 1 To 6                                               ' this
for next routine let a led blink to show me it's ready
  P1.7 = Not P1.7
  Waitms 500
 Next T


End Sub

Re: W3100a

Quoted text here. Click to load it

War das "ICMP echo reply"-Packet (insbesondere die Adressen) korrekt?

Ich hatte mal Probleme mit Ping zwischen zwei Windows-Rechnern. Zum
einen hatte die Firewall irgendwelche ICMP-Packete weggeworfen (AFAIK
zeigt Ethereal die Packete vor der Firewall an). Zum anderen glaube
ich, daß Windows Probleme mit dem Adressraum 192.168.0.x hatte, hab'
das aber nicht genauer untersucht.

Quoted text here. Click to load it

Warum sollte er auch einen Interrupt erzeugen, es gibt ja nichts, was
die Aufmerksamkeit des Prozessors erfordert.

/Jan-Hinnerk



Re: W3100a

Quoted text here. Click to load it

Warum nicht? Wo sind die Unterschiede zwischen den Paketen?


 Hängt auch ein Router zwischen (NETGEAR RP6114v2)

Testhalber mal rauswerfen. Crosskabel verwenden.

Quoted text here. Click to load it

Das ist ein gutes Zeichen.



Quoted text here. Click to load it

Na und? Ist der erforderlich?

[Code entsorgt]
Kann man das nicht lesbarer gestalten? (Assembler oder sowas)

Robert

Re: W3100a

Quoted text here. Click to load it
[snip: BASIC *fingerkreuz*]

1) Einen PC anstelle des Boards anschliessen und verifizieren, dass
das routing _wirklich_ klappt.
2) tcpdump nehmen und nachsehen, was gesendet und empfangen wird.

Zuerst sollte der pingende PC ja via ARP die MAC-Adresse anfordern, bevor
er das ICMP Echo-Request-Packet senden kann.
Wenn Du den ARP-Cache des PC ausliest (mit 'arp -a' als root) kannst Du
auch sehen, ob es bis hierhin funktioniert hat..

Computer sind halt doof.... ;-)

Gruss
        Detlef

--
Man ersetze das _dot_ in der Email gegen einen Punkt..

Re: W3100a
Hi, also habe das Ganze mal mit ethereal aufgezeichnet.
Via ARP wird Adresse angefordert. Der Rechner bekommt auch die
richtige MAC Adressse. Dann ghet das Datenpaket raus. Zurück kommt
aber was ganz anderes.
Also was Ethereal anzeigt kann man auf den Bildern sehen die hier
liegen:

www.elcomportal.de/ping_cap.zip

Da sind 4 Bilddateien drin die alles zeigen.

Ich danke allen, die versuchen mir zu helfen.

Mfg
T. Müller

Re: W3100a

Quoted text here. Click to load it

Hab' die Bilder angeguckt. Ich versteh' Dein Problem trotzdem nicht.
Natürlich kriegst Du was anderes zurück:
Du schickst ein "Echo Request" (Anforderung) und kriegst ein "Echo
Reply" (Antwort) zurück.

Wie sollte das den funktionieren, wenn er dasselbe Packet
zurückschickt?

Ich bin mir recht sicher, daß Dein Problem an Deinem PC liegt. Kannst
Du eigentlich von Deinem PC lokal andere Rechner anpingen? Kannst Du
überhaupt irgendwas anpingen (z.B. www.google.de)?

/Jan-Hinnerk


Re: W3100a
Quoted text here. Click to load it

Hi, wenn ich einen anderen Rechner im Netz anpinge klappt das, und da
kommen auch die Daten so zurück wie sie gesendet wurden. Ping will ja
vergleichen ob die Übertragung klappt.
MfG
T. Müller

Re: W3100a

Quoted text here. Click to load it

Hi Torsten,

sieht aus, als ob der W3100 die Daten, die er kopieren sollte,
versaubeutelt.
Beim Identifier und der Sequenz number ist das recht fatal,
dann kann der TCP/IP-Stack des sendenden Computers natuerlich
die Antorten nicht mehr korrekt zuordnen und wirft sie weg.

Quoted text here. Click to load it

Das sind doch schon mal Kandidaten. Schreibst Du da nicht dezimal 55
statt Hex 0x55 in die Register?
Dann hättest Du mehr Speicher verteilt, als vorhanden ist.

Quoted text here. Click to load it

Hier sollte eine Adresse gewiss 0x8093 sein?!


Quoted text here. Click to load it

Setzt Du da nicht Port 80 fuer Channel 3??

Quoted text here. Click to load it

Da ist erst die Socket-Initialisierung abgeschlossen,
Verbindungen werden wohl erts akzeptiert, nachdem noch ein
'Listen'-Command abgesetzt wurde.

Die Datenzeiger fuer den Channel0 müssen dann noch initialisiert
werden.

Das Pollen des Interrupt-Statusregisters macht womoeglich erst
Sinn, nachdem die entsprechenden Interrupts im Interrupt-Mask Register
auch frei gegeben wurden. Steht zwar nicht explizit im
Datenblatt......

In den Poll-Schleifen auf das Statusregister solltest Du
das Bit, auf das geprüft wird, vorher Maskieren. Sonst haengt
Dein Programm dort womoeglich sehr lange.
Und ein kurzes 'Wait' nach jedem Poll ist gewiss auch nett.
Aber bei Basic womoeglich nicht noetig ;-)

Am besten, Du bereinigst die Speicheraufteilung,
kommentierst erstmal alles nach'm sysinit aus
und schaust, ob das Ping dann besser geht

Viel Erfolg damit, schreib mal, wie's ausgeht.

Wo haste die beiden Chips eigentlich bezogen?

Gruß
        Detlef
--
Man ersetze das _dot_ in der Email gegen einen Punkt..

Re: W3100a


Quoted text here. Click to load it

Huestel, das Ping-Programm hoechstselbst wirft die wohl weg,
nicht der Stack. Aber ist ja egal, wech iss wech ;-)

Gruß
        Detlef

--
Man ersetze das _dot_ in der Email gegen einen Punkt..

Re: W3100a

Quoted text here. Click to load it
 
Quoted text here. Click to load it

Jetzt wo Du es sagst, sehe ich es auch ;-(
Ich hab' gerade mal meinen W3100A aus der Schublade geholt und der
macht richtig.

Quoted text here. Click to load it

Mehr Speicher zu verteilen ist in Ordnung, hab' ich auch ausprobiert.

Quoted text here. Click to load it

Wozu überhaupt ändern?

Quoted text here. Click to load it

Richtig ist auf jeden Fall $80ae/$80af

Quoted text here. Click to load it

Das macht man zusammen. Also gleich (8 | 2) d.h. 10 schreiben.

Quoted text here. Click to load it

Ist lange her, aber wenn ich mich richtig erinnere, ist das nicht
nötig.
 
Quoted text here. Click to load it

Bei den Schleifen ist noch mehr falsch:

Es sieht so aus, als ob Result beim ersten mal geprüft wird, bevor es
gesetzt wird (Es sei denn das Basic macht was merkwürdiges). Dann ist
der Test falsch und es wird gar nicht gewartet.

Abgesehen davon ist die Testbedingung falschrum, er wartet bis das
Interrupt-Flag gelöscht ist.

Ansonsten sollte man noch nachprüfen, ob wirklich "=" sowohl für
Zuweisungen als auch für Tests benutzt wird. Kann aber durchaus sein,
daß das richtig ist.

Für den SysInit würde ich auch eher $8000 pollen und warten bis das
bit0 gelöscht ist.

Quoted text here. Click to load it

Volle Zustimmung. Aber besser gleich eine Endlosschleife einfügen...

Was passiert eigentlich nach der Initialisierung? Geht er in eine
Endlosschleife oder macht er einen Reset und fängt von vorne an.
Letzteres könnte Deine Probleme auch erklären.

Quoted text here. Click to load it

Hoffentlich als fertiges Modul IIM7010, sonst könnte der Fehler auch
noch im Layout liegen ;-(

/Jan-Hinnerk


Re: W3100a
die chips habe ich von DACOMWEST bezogen. Da gibt es auch die RJ45
Buchsen mit integr. Mgnetics und LED (MAG-Jack).
Adresse: www.dacomwest.de

So jetzt trinke ich Kaffe und meine schwangere Frau O-Saft. und dann
gehts nochmal ran an die Schaltung.
Bis dann.
MfG
T. Müller

Re: W3100a
Hier ein geändertes Programm, funzt aber auch nicht :-((((
Die selben Probleme.


$regfile = "89c51.dat"
$crystal = 4000000
$ramstart = &H8000              'Basisadresse w3100a
Waitms 500
P3.1 = 0
P1.7 = 0

P3.1 = 1                         'RESET
Waitms 50
P3.1 = 0
Waitms 50

Out &H8000 , &H80               'w3100 initialisieren
Waitms 50                       '50ms warten

Out &H8095 , &H55               '0x55 in Register 0x95 für Speicheraufteilung
Out &H8096 , &H55               '0x55 in Register 0x96 für Speicheraufteilung

Out &H8080 , 192                'Adresse vom Router
Out &H8081 , 168
Out &H8082 , 0
Out &H8083 , 1

Out &H8084 , 255                'Subnet Maske
Out &H8085 , 255
Out &H8086 , 255
Out &H8087 , 0

Out &H8088 , 0                  'MAC Adresse (Wiznet)
Out &H8089 , 8
Out &H808A , &HDC
Out &H808B , 0
Out &H808C , 0
Out &H808D , 0

Out &H808E , 192                'Die Adresse sol das Board haben
Out &H808F , 168
Out &H8090 , 0
Out &H8091 , 8

Waitms 30                       '30ms warten
Out &H8000 , 1                  'Sys_init
Wait 1                          '1 Sekunde Warten
Do
 P1.7 = Not P1.7                'LED blinken lassen (habe fertig)
 Waitms 400
Loop
End

Re: W3100a

Quoted text here. Click to load it

So langsam gehen mir die Ideen aus ;-(

Benutzt Du jetzt eigentlich ein Modul oder hast Du die ganze Schaltung
selber aufgebaut?

Falls letzteres, solltest Du nochmal die Konfigurationspins
überprüfen. Vielleicht Kurzschlüsse durch Lötzinn zwischen den
Beinchen?

Ich hab' bei meinem Chip nochmal versucht durch falsche Konfiguration
ein kaputtes "echo reply" zu erzwingen, aber selbst im "memory
test"-mode läuft bei mir alles prächtig.

Quoted text here. Click to load it

Den nochmal wegmachen, sollte aber nichts ändern.

Quoted text here. Click to load it

Woher sind die 50ms. Da war irgendwo was in der Doku, aber ich find es
nicht wieder.
 
Quoted text here. Click to load it

Den Wait habe ich nicht

Quoted text here. Click to load it


Gehe ich recht in der Annahme, daß das eine _Endlosschleife_ mit
Blinken ist? Falls ja, gut.

Blinkt er denn wenigstens ;-)

Viel Glück
  Jan-Hinnerk


Re: W3100a
Hallo,
also alles nach dem sysinit ist raus aus dem Programm. Die Zeilen

Out &H8095 , 55
Out &H8096 , 55
 habe ich geändert

Out &H8095 , &H55
Out &H8096 , &H55

Aber das Ergebnis sieht nicht besser aus.
MfG
T. Müller


Quoted text here. Click to load it

Re: W3100a
snipped-for-privacy@elcomportal.de (Torsten) schrieb:

Quoted text here. Click to load it

Bitte keine Bilder von sowas machen, sondern lieber das capture file
abspeichern und dieses veröffentlichen.  Dann kann sich das jeder nach
Herzenslust selbst im ethereal (oder tcpdump oder was auch immer)
analysieren.

--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline