Guten Tag,
Ich bastele mir zurzeit ein klein Webserver um mir die ganzen Temperatur
Werte und Luftfeuchtigkeit anzuzeigen.
Dieses läuft über Ethernet im LAN. Als Ethernet Controller verwendete
ich denn ENC28J60 von Microchip.
Im Internet habe ich eine kleine Library gefunden die mir zeigt wie man
ein Webserver damit im C aufbaut.
http://www.pocketmagic.net/atmega8-and-enc28j60-for-ethernet-support/
Ich habe mir die Zip Datei "ATmega8_ENC28J60_NOBUFFER_TEMP_WEBSERVER"
heruntergeladen. Ein Neues Projekt im Atmel Studio 7 erstellt und die
Header und Source Dateien dort rein gezogen.
In der "hw_enc28j60.h" Datei habe ich denn CS Pin auf Port B 0 gelegt.
Es wird alles ausgeführt bis zum "enc28j60Init(mymac);" ab da bleibt der
Mikrocontroller hängen.
Ich habe mal Debug Nachrichten beim USART eingefügt. Die Nachrichten
nach Festlegung der Ports(SCK, MOSI Output, MISO Input, MOSI und SCK
Low) kommen noch im Terminal an. Auch nach dem SPI Init kommt noch Debug
Nachrichten an:
SPCR = (1<<SPE)|(1<<MSTR);
SPSR |= (1<<SPI2X);
Danach wird ein Soft Reset am ENC28J60 ausgeführt. Danach kommen keine
Debug Nachrichten an.
Dieser Befehl wird ausgeführt: enc28j60WriteOp(ENC28J60_SOFT_RESET, 0,
ENC28J60_SOFT_RESET); Ich habe dort in der Funktion WriteOp auch mal
Debug Nachrichten eingefügt alles kommt an außer "Data Wait Complete".
Hier mal die Funktion:
Diese Nachrichtet kommt nach dem waitspi(#define waitspi()
while(!(SPSR&(1<<SPIF))) ).
Kann mir jemand dabei helfen dieses Problem zu lösen?
Lg Tobias. M
holger schrieb:> Nimm PB2 für CS oder setze den Pin wenigstens auf Ausgang.
Hi holger.
Ich habe denn SPI SS Pin nun als Ausgang definiert. Danke dafür!
Nun bekomme ich auch alle Antworten vom SPI. Komisch ist jedoch wenn ich
auf die definierte IP Adresse:
192.168.2.24 im Internet verbinden will kommt dort nix. Ich verwende ein
Gigabyte Switch um mein Rechner mit dem Internet und Drucker zu
verbinden. Ich habe mein ENC28J60 damit angeklemmt. Dann leuchte dort
bei mir die dritte LED am Switch(Das ist der ENC28J60), dann leuchtet
auch die Grüne LED am Jack des ENC28J60 und ab und zu blinkt auch mal,
die gelbe. Wenn ich nun eine Verbindung auf die Adresse herstelle dann
geht die LED am Switch aus. Auch beide LED's am Jack und nach dem mein
Browser sagt "Diese Website ist nicht erreichbar". Geht sie am Switch so
wie am Controller selber wieder an.
Lg Tobias M.
Tobias M. schrieb:> holger schrieb:>> Nimm PB2 für CS oder setze den Pin wenigstens auf Ausgang.>> Hi holger.>> Ich habe denn SPI SS Pin nun als Ausgang definiert. Danke dafür!
noch zur Erklärung, wenn der Pin ein Eingang ist dann schaltet L-Pegel
deinen SPI von Master auf Slave und deshalb geht nichts mehr (Datenblatt
lesen)
> Nun bekomme ich auch alle Antworten vom SPI. Komisch ist jedoch wenn ich> auf die definierte IP Adresse:> 192.168.2.24 im Internet verbinden will
???
> kommt dort nix.
Fang doch erst mal mit einem PING an
> Ich verwende ein> Gigabyte Switch um mein Rechner mit dem Internet und Drucker zu> verbinden. Ich habe mein ENC28J60 damit angeklemmt. Dann leuchte dort> bei mir die dritte LED am Switch(Das ist der ENC28J60), dann leuchtet> auch die Grüne LED am Jack des ENC28J60 und ab und zu blinkt auch mal,> die gelbe. Wenn ich nun eine Verbindung auf die Adresse herstelle dann> geht die LED am Switch aus. Auch beide LED's am Jack und nach dem mein> Browser sagt "Diese Website ist nicht erreichbar". Geht sie am Switch so> wie am Controller selber wieder an.
das sieht so aus als ob der Link verloren geht, verbinde doch mal den
Rechner und deine Schaltung direkt (daran denken im PC ne feste IP
einstellen).
Sascha
Sascha W. schrieb:> noch zur Erklärung, wenn der Pin ein Eingang ist dann schaltet L-Pegel> deinen SPI von Master auf Slave und deshalb geht nichts mehr (Datenblatt> lesen)
Hi Sascha. Danke für deine Antwort.
Ja, ich hatte sowas im Hinterkopf gehabt das man aus bestimmtes auf
Output Schalten muss damit der SPI in Master Modus geht. Ist aber auch
schon länger her das ich denn SPI Bus verwendet habe.
Sascha W. schrieb:> das sieht so aus als ob der Link verloren geht, verbinde doch mal den> Rechner und deine Schaltung direkt (daran denken im PC ne feste IP> einstellen).
Wenn ich das richtig weiß ist der Link die grüne LED. Falls das richtig
ist kann ich dazu nur sagen. Das die grüne LED am Jack und am Switch
dauerhaft leuchtet, komme ich aber ans Kabel dann geht sie aus. Lege ich
das wieder auf dem Boden ist sie wieder an.
Ich habe mal die main Klasse angehängt. Was ich auch nicht so ganz
verstehe ich ist if(strncmp("/ ", (char*) & (buff[dat_p]), 4) != 0).
//EDIT: Beim Ping auf 192.168.178.137(festgelegte IP im enc28j60) kommt
keine Antwort also Zeitüberschreitung. Jedoch blinkt die Gelbe LED
jedesmal wenn in der Konsole "Zeitüberschreitung bei der Anfrage" kommt.
//EDIT2: Wenn man nun die 192.168.178.137 dann kommt: Antwort von
192.168.178.130: Zielhost nicht erreichbar. Wenn man die Adresse mit 130
am ende anstatt 137 im Broswer angibt kommt sofort. HTTP ERROR 404.
Seite nicht gefunden
Lg Tobias. M
Hallo Leute ich bins nochmal
Kennt einer von vielleicht eine einfach Webserver Library auf dem
ENC28J60. Möchte ein paar Messwerte darauf anzeigen. Und vielleicht es
ermöglichen Einstellungen zu ändern(Refresh Rate von Sensoren)
Lg Tobias M.
Hallo Leute,
Mit der Library von Ulrich Radig, komme ich nicht wirklich so weiter.
Ich habe euch mal ein paar Bilder dabei gepackt.
Verkabelt habe ich denn ENC28J60 so:
ENC28J60 ATMega328P
SCK <- PB5
MISO -> PB4
MOSI <- PB3
SS <- PB2(Ist nun nicht mehr PB0)
WOL nicht angeschlossen
INT nicht angeschlossen
RST nicht angeschlossen
CLK nicht angeschlossen
Vcc 5V(Es ist ein Spannungsregler für 3V3 auf dem Modul
vorhanden)
Q3 (wäre 3,3 Volt) nicht angeschlossen
In der Fritzbox habe ich denn Port 80 für TCP auf meinen Rechner
freigeschaltet. Man sieht die gelbe LED des Jacks am ENC immer mal
wieder blinken. Immer dann wenn auch die erste LED am Switch blinkt.
Also wenn Signale vom Router in denn Switch kommen. Blinkt die LED am
Rechern selbst und die am Jack des ENC.
Muss ich die IP Adresse 192.168.2.24 die ich ja versuche Anzupingen die
auch im Code festgelegt ist erst festlegen oder freischalten am Rechner?
Das er was darunter findet?
Beim Anpingen mit dem Befehl "ping 192.168.2.24 -t" in der cmd.exe kommt
nur "Zeitüberschreitung der Anforderung"
Lg Tobias M.
> Muss ich die IP Adresse 192.168.2.24 die ich ja versuche Anzupingen die> auch im Code festgelegt ist erst festlegen oder freischalten am Rechner
Wie sehen die Einstellungen des Rechners aus (IP-Adresse, Netzmaske).
Jochen schrieb:> Wie sehen die Einstellungen des Rechners aus (IP-Adresse, Netzmaske).
Meinst du damit die Einstellungen von meinen Ethernet
Controller(Realtek) die ich unter ipconfig finde? Falls ja:
Ethernet-Adapter LAN Verbindung:
Verbindungsspezifisches DNS Suffix: fritz.box
Beschreibung : Realtek PCIe GBE Family Controller
DHCP aktiviert : Ja
Autokonfiguration aktiviert : Ja
IPv4-Adresse : XXX.XXX.XXX.130(Bevorzugt)
Subnetzmaske : 255.2555.255.0
Standardgateway : 192.168.178.1
DHCP-Server : 192.168.178.1
DNS-Server : 192.168.178.1
Lg Tobias. M
Jochen schrieb:> 192.168.2.24 -> 192.168.178.24
Hi Jochen! Danke für deine Hilfe.
Wenn ich nun in der cmd.exe denn Befehl "ping 192.168.178.24" eingebe
kommt schon mal was anderes zurück und zwar:
"Antwort von 192.168.178.130(Ist meine Lokale PC-IP): Zielhost nicht
erreichbar" 0% Packet Verlust.
Oder meinst du das ich die IP im Code von 2.24 auf 178.24 ändern soll?
Lg Tobias M.
Tobias M. schrieb:> Oder meinst du das ich die IP im Code von 2.24 auf 178.24 ändern soll?
Ich habe nun die IP Adresse im Code auf 192.168.178.24 geändert. Nun ist
der Server im Internet unter der Adresse erreichbar. Auch über denn Ping
befehl bekomme ich eine Antwort mit Zeit<1ms.
Eine Frage hätte ich da aber noch. Ist es normal das wenn ich mich mit
mein Handy in das gleiche Netzwerk verbinde nur halt mit WLAN anstatt
mit LAN. und versuche diese Seite aufzurufen klappt dieses nicht also am
Handy kommt "Website nicht verfügbar". Wenn ich die gleiche Adresse
wieder am PC der mit dem ENC28J60 und dem Router über ein Switch
verbunden ist bekomme ich unter der IP Adresse die Website angezeigt.
Normal? Oder muss da noch was geändert werden?
Lg Tobias M.
wie kommst du mit einem Handy ins LAN?
Mein Handy kann nur ins wlan intern oder per GPRS oder Edge von aussen
kommen.
Irgendwie stimmt dein Routing Portforwarding noch nicht.
Joachim B. schrieb:> wie kommst du mit einem Handy ins LAN?>> Mein Handy kann nur ins wlan intern oder per GPRS oder Edge von aussen> kommen.>> Irgendwie stimmt dein Routing Portforwarding noch nicht.
Meine ENC28J60 geht auf ein Gigabyte Switch der Switch ist mit dem
Router verbunden mit mein eigentlichen Rechner und halt dem ENC28J60.
Dann müsste doch eigentlich wenn ich mich mit mein Handy per WLAN
einbinde auch im LAN drin sein. In der Fritzbox habe ich für mein PC
denn TCP 80 freigeschaltet.
Habe ein Bild dabei gepackt.
Lg Tobias M.
Tobias M. schrieb:> Meine ENC28J60 geht auf ein Gigabyte Switch der Switch ist mit dem> Router verbunden mit mein eigentlichen Rechner und halt dem ENC28J60.
Und der Router (ein FB) stellt das WLAN bereit?
> Dann müsste doch eigentlich wenn ich mich mit mein Handy per WLAN> einbinde auch im LAN drin sein.
Ja, es sei denn der Router trennt das WLAN vom LAN das kann die FB z.B.
fürs Gastnetz
> In der Fritzbox habe ich für mein PC> denn TCP 80 freigeschaltet.
das ist für den Verkehr innerhalb des LAN irrelevant, die Freigabe ist
nur für Zugriffe aus dem Internet.
Kannst du vom PC das Handy anpingen?
Sascha
Sascha W. schrieb:> Und der Router (ein FB) stellt das WLAN bereit?
Ja es stellt das WLAN Bereit.
Sascha W. schrieb:> Ja, es sei denn der Router trennt das WLAN vom LAN das kann die FB z.B.> fürs Gastnetz
Gastnetz nicht aktiv
Sascha W. schrieb:> das ist für den Verkehr innerhalb des LAN irrelevant, die Freigabe ist> nur für Zugriffe aus dem Internet.>> Kannst du vom PC das Handy anpingen?
Ja kann ich mit hilfe von MyIP der App habe ich die IP Adresse von mein
Handy bekommen 192.XXX.XXX.91 wenn ich diese anpinge bekomme ich eine
Antwort mit ca. 70 ms
Lg Tobias M.
Tobias M. schrieb:> Dann müsste doch eigentlich wenn ich mich mit mein Handy per WLAN> einbinde auch im LAN drin sein.
ja aber du benutzt verschiedene MAC und verschiedene Routings
Meine Frage war ja wie kommst du mit dem Handy ins LAN und die richtige
Antwort wäre gar nicht, denn du hast am Handy keinen LAN Adapter!
Mit dem Handy kommst du immer nur ins interne wlan oder von draussen per
Router ins Netz das aber dann über DSL oder VDSL, deswegen die Weichen
(Portfreigaben, forwarding) richtig stellen.
Tobias M. schrieb:>> Kannst du vom PC das Handy anpingen?> Ja kann ich mit hilfe von MyIP der App habe ich die IP Adresse von mein> Handy bekommen 192.XXX.XXX.91 wenn ich diese anpinge bekomme ich eine> Antwort mit ca. 70 ms
dann sollte sich eigentlich auch die Website vom μC auf dem Handy
aufrufen lassen.
Im übrigen macht es keinen Sinn die IP aus dem lokalen LAN zu
verschleiern, da kann keiner was damit anfangen.
Dann kannst du nur mal paar Debugausgaben über die serielle
Schnittstelle in den Webserver einbauen.
Sascha
Sascha W. schrieb:> dann sollte sich eigentlich auch die Website vom μC auf dem Handy> aufrufen lassen.>> Im übrigen macht es keinen Sinn die IP aus dem lokalen LAN zu> verschleiern, da kann keiner was damit anfangen.>> Dann kannst du nur mal paar Debugausgaben über die serielle> Schnittstelle in den Webserver einbauen.>> Sascha
Naja, ich glaube der Chip hat ne Macke weg. Wenn ich das Programm auf
denn uC lade dann kann ich ihn mal anpingen. Dann bekomme mal ne
Antwort. Dann bekomme ich mal keine Antwort also Zeitüberschreitung.
Oder auch mal Antwort von 192.168.178.130 Zielhost nicht erreichbar.
Ist langsam Mysteriös.
Wenn ich dann denn uC ein paar mal Resete(2,3 mal) dann kann ich ihn
wieder anpingen geht es wieder, also ganz komisch.
Im Server habe ich Debug Nachrichten eingebaut. Wenn sich im Web einer
verbindet dann kommt "DAT_P: 54" in der Konsole oder wenn der Server
angepingt wird bzw der ENC. Dann kommt "Pings: X" X halt für wie oft.
Lg Tobias M.