Liebes Forum ich hoffe ihr können mir weiterhelfen. ich bin im Internet auf das sehr interessante Projekt von Ulrich Radig gestoßen. Das Projekt habe ich mir auf einer Streifenrasterplatine aufgebaut. uC ist ein Mega644. Nach dem Erstellen eines eigenen hex.-Files klappte dann wenigstens schon mal die Ausgabe über das Terminal. Doch eine Verbindung mit dem Netzwerk ist nicht möglich. An meinem Desktop PC mit Win Vista wird mir ein „nicht identifizierbares Netzwerk“ angegeben. Also der PC erkennt, dass etwas am anderen Ende ist. Es wird aber keine Verbindung hergestellt. Dann probierte ich es an meinem Notebook und setzte mich in die Küche, wo ein Radio lief. Auf dem Notebook läuft Win 7. Hier wird ein Bruchteil „Aktiviert“ angezeigt und dann wieder ein Bruchteil „Verbindung getrennt“ dann wieder „Aktiviert“ etc… so geht es die ganze Zeit. Dann fiel mir auf, dass das Radio extrem beeinflusst wurde und zwar nicht von mir, sondern von der Platine. Wenn ich jetzt mit dem Finger auf die Unterseite also die Lötseite der Platine drücke (markierte Stelle im Bild), dann ist das Störgeräusch weg und nun steht im Notebook „Netzwerkidentifizierung“ aber dabei bleibt es. Nehme ich den Finger weg, geht gar nichts. Nur mit Finger komme ich wenigstens einen Schritt weiter. Da fällt mir ein meine Funk Maus wird auch stark beeinträchtigt. Dachte es wären die Batterien, aber es war wieder die Platine. Das geht locker über 1-2 Meter. Also irgendwas stört extrem, anscheinend aber nur, wenn ich es mit dem Notebook versuche. Am Desktop PC ist keine Veränderung durch das Drücken mit dem Finger erkennbar. Habt ihr einen Rat, wie ich die Verbindung herstellen kann? Hat es was mit der Störung zu tun? Wie kann man die Störung evt. verhindern? Ich bin ratlos… :( bei Bedarf kann ich auch noch ein Bild meines Platinenlayouts mailen.
Inzwischen steht in meinem PC dass er "lokal" verbunden mit dem "nicht identifizierten Netzwerk" verbunden ist. Geht man jedoch auf Status sieht man, dass der PC nur sendet aber nichts empfängt...
Dann zeig doch mal deine config.h und verrate etwas von deinem Netzwerk (IP deines Routers, Netzmaske). Die LAN-Schnittstelle funktioniert übrigens nur, wenn erst alle Kabel eingesteckt sind und man dann erst die Spannung anschaltet.
Du musst eventuell auch eine feste IP Adresse am PC einstellen. Windows sucht standardmäßig einen DHCP Service und wenn der nicht antwortet, bekommst Du irgeneine (vermutlich zufällige) IP Adresse. Du brauchst aber eine IP-Adresse, die im gleichen Subnetz liegt, wie dein Mikrocontroller. Die Funk-Störungen entstehen sicher wegen der realtiv langen ungeschirmten Leitungen zwischen dem Ethernet Controller und dem Übertrager, sowie zwischen Übertrager und Ethernet Buchse. Diese Teile sind sehr EMV kritisch.
> Die LAN-Schnittstelle funktioniert übrigens nur, > wenn erst alle Kabel eingesteckt sind und man dann > erst die Spannung anschaltet. Das ist ja doof. Wie reagiert die Schaltung denn, wenn nach einem Stromausfall der µC schneller startet, als der Ethernet Switch?
> Das ist ja doof. > Wie reagiert die Schaltung denn, wenn nach einem Stromausfall der µC > schneller startet, als der Ethernet Switch? Hmm, das kann ich garnicht sagen. Ich schalte alle Verbraucher einzeln und in bestimmter Reihenfolge über µC angesteuert (Eigenbau-Hausbus).
Hallo. Danke für die schnellen Antworten. Mein pc ist auf eine feste ip eingestellt: 192.168.2.102 In meiner Config.h habe ich die ip entsprechend angepasst: 192.168.2.80 Netzmaske bei beiden 255.255.255.0 So verbinde ich Platine und PC direkt. Wenn ich mit Router es probiere ändere ich in der Config.h noch die Routerdaten auf 192.168.2.1 Mit Anschluss am Router blinken die Zustandsleds nicht mehr. Bei direktem Verbinden mit dem PC blinken die LEDs. Muss ich sonst noch was für erste Versuche in der Config.h anpassen? Takt ist auf 16mhz und dadrunter externer Takt auf 1 gesetzt. Die serielle Ausgabe funktioniert ja auch. Dort wird nach jedem Start angezeigt wann kompiliert wurde.
Taucht denn der Webserver in der ARP-Tabelle auf? Kannst Du ihn anpingen? Verwendest Du bei der Verbindung mit dem PC ein Cross-Kabel? Hast Du in der config.h schon mal alles ausgestellt, was ersteinmal nicht benötigt wird ( z.B. DHCP aus, Schaltautomatik aus, usw.)?
Hey, so Pc-versiert bin ich leider nicht. Wie kann ich mir die ARP-Tabelle anzeigen lassen? Anpingen kann ich bei direkter Verbindung mit der Platine nicht obwohl beim Netzwerk steht dass es lokal möglich sei. Mein PC erhält keine Antwort vom gegenüber. Wie ich auch schrieb unter Status steht dass mein PC sendet aber keine Antworten erhält. Blöde frage: wie erkenne ich ein Cross over Kabel bzw wie unterscheide ich es von außen zum normalen? Danke!
ARP-Tabelle ansehen: - Unten links auf den START-Butten klicken - "cmd" eingeben und ENTER drücken - "arp -a" eingeben und ENTER drücken Crossover-Kabel: http://de.wikipedia.org/wiki/Crosskabel Zeige doch trotzdem mal deine config.h. Ich würde dir übrigens empfehlen sowas hier in der Art zuzulegen: http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html Dann hast Du auch keine Störungen mehr
Wenn Du zwei Computer mit einem normalen Patchkabel verbindest, hast Du einen Kurzschluss: Ausgang <---------------> Ausgang Eingang <---------------> Eingang Deswegen nimmt man dazu Crossover Kabel: Ausgang <---------------> Eingang Eingang <---------------> Ausgang Um einen Rechner an einen Switch anzuschließen, verwendet man aber ein normales Kabel. Denn die Ethernet Buchsen von Switches sind "umgekehrt" belegt, als es beim PC der Fall ist. Da bei Dir die Lichter am Switch nicht angehen, hast Du wohl entweder ein Crossover Kabel, oder Du hast die Ethernet-Buchse am Mikrocontroller falsch angeschlossen. Crossover Kabel erkennt man, wenn man sich anschaut, welche Farben von Litzen an den Kontakten liegen. Be einem normalen Kabeln sind die Farben an beiden Enden gleich zugeordnet. Um die Irritation komplett zu machen: Manche PC's und fast alle Switche können verpolte Anschlüsse erkennen und sich automatisch anpassen. Wenn dass aber beide Geräte können (PC und Switch), dann schlägt diese Automatik oft fehlt und führt zu zufälligen Ausfällen. Außerdem führt ein verpoltes Kabel zu stark erhöhter Stromaufnahme. Wenn Dein Netzteil das nicht ab kann, stürzt der Ethernet Controller dabei ab. Der AVR läuft dann in der Regel weiter, da er auf Schwankungen in der STromversorgung weniger empfindlich reagiert.
Hey, anbei befindet sich die config.h und der ARP-Test zusammen in einer Datei. Wenn eine direkte Verbindung zwischen Platine und PC besteht dann leuchtet eine LED dauerhaft und die andere blinkt. Schließe ich mit dem gleichen Kabel die Platine an den Router, dann leuchtet wieder eine LED dauerhaft aber die andere bleibt dunkel. Das gleiche mit einem anderen Kabel. Beide getesteten Kabel funktionieren zwischen PC und Router ohne Probleme. Welches Kabel muss denn nun genommen werden? Ein Cross-over oder ein normales?
Wenn Du den Webserver direkt an den Computer anschließt, musst Du ein Crosskabel verwenden. Beim Anschluss an den Router ein normales Patchkabel (Crosskabel kann eventuell auch gehen). Bei der Verbindung zwischen Router und PC ist die Art des Kabels egal. Am Webserver sollte eine Ethernet-Controller-LED sofort nach Anschluss der Versorgungsspannung angehen, die andere blinkt danach kurz. Was für ein Netzteil verwendest Du (Spannung/Strom)? Die config.h sieht eigentlich in Ordnung aus. Wenn Du mir deine compilierte HEX-Datei gibst, probiere ich sie mal bei mir aus. Dann kann man eventuell schon mal Software-Fehler ausschließen.
Es ist löblich, dass du den AVR mit einigen Kondensatoren versehen hast. Weshalb aber hast du dann den ENC derart vernachlässigt? Der zieht deutlich mehr Strom als der AVR, hat dementsprechend viele Stromversorgungsanschlüsse, muss aber fast ohne Kerkos auskommen. http://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator
Hallo, wie gesagt zwischen PC und Platine verhalten sich die LED anscheinend nach Vorschrift. Jedoch Platine - Router luchtet nur eine LED und die andere bleibt dauerhaft aus. Verwendet wurden zwei Kabel. Ein Cross und eins was damals zum Speedport mitgeliefert wurde. Ein ausschließlich gelbes ohne Einblicke am Stecker. >Was für ein Netzteil verwendest Du (Spannung/Strom)? 9V 450mA >Weshalb aber hast du dann den ENC derart vernachlässigt? Also muss an jeden Pin des Enc der auf GND oder VCC gelegt ist ein 100nF Kondi?
Oktavius schrieb: > Also muss an jeden Pin des Enc der auf GND oder VCC gelegt ist ein 100nF > Kondi? Zwischen jedes zusammengehörige VCC/GND-Pinpaar gehört ein 100nF Kerko. Und zwar dicht dran, elektrisch betrachtet.
Hey,
>Zwischen jedes zusammeghörige VCC/GND-Pinpaar
Ja wie habe ich das zu verstehen? Am Enc gibt es GND und VCC
hierzwischen muss auf jeden Fall einer. Aber dann gibt es noch Pin
19,20,15,25 die an VCC hängen und Pin 11,21,18,22 die an GND hängen.
Müssen jetzt zwischen allen Pins ein Kondi? Also z.B. von Pin 19 nach
GND von Pin 20 nach GND etc...
Entschuldigt, aber ich habe die hex.-Datei vergessen anzuhängen.
Ungefähr so wärs völlig korrekt: VDDTX -C- VSSTX VDDRX -C- VSSRX VDDOSC -C- VSSOSC VDDPLL -C- VSSPLL VDD -C- VSS
Ja jetzt leuchtet es ein. Mir waren die Bezeichnungen vorher nicht so aufgefallen. Gut dann werde ich nachher noch die 5 fehlenden Kondis einsetzen. Danke
Hm. Deine Hex funktioniert bei mir nicht. Probiers mal mit dieser. Die funktioniert bei mir auf Anhieb. Am Besten direkt im Browser 192.168.2.99 eingeben. Es kann sein, dass Du nach dem Aufspielen der Hex den Webserver kurz vom Netz nehmen musst.
Toff schrieb: > Die LAN-Schnittstelle funktioniert übrigens nur, wenn erst alle Kabel > eingesteckt sind und man dann erst die Spannung anschaltet. Das ist nicht so. Dem Radig Webserver ist die Reihenfolge wumpe.
Hallo, danke für die Datei. Ich habe die Kondis eingelötet und die neue hex. draufgespielt. Weder direkt mit dem PC noch über den Router ist ein Ansprechen möglich. Im Router war der DHCP-Server aktiv. Den habe ich ausgeschaltet und nun blinkt wenigstens die zweite LED, wenn die Platine an den Router angeschlsosen ist.Das tat sie vorher nicht. Der Router erkennt auch, dass am Port etwas ist, da der Port bei einer Verbindung als "aktiv" bezeichnet wird. Laut meinem Messgerät wirft der LM 3,24 V aus. Ist das eine zu großes Abweichung?
3,24V reichen vollkommen aus. Der Ethernet-Controller scheint ja auch eine Verbindung mit dem Router herzustellen. Hast Du schon mal kurz für ein paar Sekunden den Netzstecker des Webservers gezogen? Versucht anzupingen? Falls das dann immernoch nicht geht, liegt der Fehler irgendwo in der Hardware. Und bei deiner Lochstreifen-Variante gibts 1000 mögliche Fehlerursachen (z.B. SPI-Leitungen zu lang und mit zu vielen Abbiegungen, immerhin wird da mit 8MHz getaktet; Leitungen zur Ethernet-Buchse zu lang;usw.)
Hallo, auf welchen Takt hast du dein Programm eingestellt? Ich nutze zur Zeit 16Mhz. Der PC erhält keine Antwort von der Platine. Es wird gesendet aber nichts kommt zurück... Werde dann wohl mal einen MagJack kaufen und den direkt hinter den Enc klemmen. Dann sind die langen Leitungen ausgeschlossen.
16MHz. Das hier muss in der config.c übrigens auf 0 gestellt werden, solange man keinen zusätzlichen 32,768kHz Uhrenquarz verwendet. Der 16MHz-Quarz ist damit nicht gemeint:
1 | //Timertakt intern oder extern
|
2 | #define EXTCLOCK 0 //0=Intern 1=Externer Uhrenquarz
|
> Werde dann wohl mal einen MagJack kaufen und den direkt hinter den Enc > klemmen. Dann sind die langen Leitungen ausgeschlossen. Damit hast Du dann schon mal eine Störquelle ausgeschaltet (normalerweise ist der Abstand zwischen Übertrager und Buchse kleiner als 1cm). Aber Die Leitungen für SPI müssen auch kürzer sein. Eigentlich müsstest Du dein gesamtes Layout neu entwerfen...
Das mit der extclock wusste ich so nicht. Gut zu wissen. Spi dürfen also auch nicht so lang sein? Hinreist doch aber keine HF spielt ein Abstand vo ca 3-4 cm so eine große Rolle?
Hallo, die MagJack-Buchse kam heute an. Angebaut und...? Nichts. Wie soll es auch anders sein. Das gleiche Verhalten wie vorher auch. Eine LED leuchtet die andere blinkt, aber kein Signal geht zurück zum PC. D.h. der PC sendet, empfängt aber nichts. Habe es mit Patch- und Crosskabel versucht; über den Router, direkt am PC oder direkt am Notebook. Überall stets das gleiche Verhalten. Man kann nun noch das ganze Layout umschmeißen, sodass die SPI-Leitungen kürzer werden. Aber der zeitliche Aufwand, um es dann später letzten Endes doch auf die Platine von Herrn Radig zu löten...ich weiß nicht. Sonst noch jemand Tipps?
Also wenn Du für deinen Webserver umbedingt eine eigene, selbst erstellte Platine haben möchtest, dann solltest Du dich mit Layoutprogrammen (z.B. EAGLE) auseinandersetzen und die Platine selbst routen. Lochraster-Karten und ähnliches ist doch eher maximal suboptimal für solche Projekte. Wenn Du das Layout erstellt hast, kannst Du Dir immernoch überlegen, ob Du deine Platine dann professionell fertigen lässt, oder ob Du richtig in das Hobby einsteigen willst und dir die Platinen dann selbst ätzen möchtst. Zu den SPI-Leitungen: Du kannst mal versuchen die SPI-Verbindungen aufzutrennen und durch Twisted-pair-Leitungen zu ersetzen ( also verdrillte Leitung MOSI&GND, MISO&GND und SCK&GND), das kann schon mal Wunder wirken. Ansonsten kannst Du im Quellcode in den (meisten) Header-Dateien eine Debug-Ausgabe einstellen. So kannst Du Schritt für Schritt nachvollziehen, wo genau der Webserver hängt. Beispiel im Original:
1 | //#define HTTP_DEBUG usart_write
|
2 | #define HTTP_DEBUG(...)
|
Hier einfach die andere Zeile auskommentieren
Hallo, habe die entsprechende Zeile im Code geändert, aber es erscheint nur folgende meldung über die serielle Schnittstelle: "System Ready Compiliert am Jun 12 2013 um 23:16:00 Compiliert mit GCC Version 4.3.3" Nach einiger Zeit kam dann noch das per seriell: "IP 192.168.2.107 MASK 255.255.255.0 GW 192.168.2.1 NTP Err." Also erkennt der uC doch etwas vom Enc? Nach einem Neustart der Platine kam nur die erste Meldung erneut über seriell. Die zweite Meldung bleibt aus. Zu dem SPI Vorschlag. Eine Leitung eines Paares verbindet z.b. mosi die andere Leitung des Paares geht an beiden Enden an gnd?
> Zu dem SPI Vorschlag. Eine Leitung eines Paares verbindet z.b. mosi die > andere Leitung des Paares geht an beiden Enden an gnd? Genau so. Aber zapfe das GND-Signal nahe an den ICs an. > Also erkennt der uC doch etwas vom Enc? > > Nach einem Neustart der Platine kam nur die erste Meldung erneut über > seriell. Die zweite Meldung bleibt aus. Ich bin nicht mehr so ganz drin in der Software, aber ich glaube, dass im ersten Fall kurz mal eine Verbindung bestand. > Nach einiger Zeit kam dann noch das per seriell: Hier mal ein Abschnitt aus der main.c:
1 | usart_write("\n\rSystem Ready\n\r"); |
2 | usart_write("Compiliert am "__DATE__" um "__TIME__"\r\n"); |
3 | usart_write("Compiliert mit GCC Version "__VERSION__"\r\n"); |
4 | |
5 | for(a=0;a<1000000;a++){asm("nop");}; |
6 | |
7 | //Applikationen starten
|
8 | stack_init(); |
9 | httpd_init(); |
10 | telnetd_init(); |
Die for-Schleife ist einfach nur eine Warteschleife, in der nichts geschieht. Daher die Verzögerung der nächsten Ausgaben. Dann solltest Du jetzt Schritt für Schritt das Debuging in den einzelnen Applikationen aktivieren. Also erst mal in der stack.h. Wenn hier keine Fehler auftreten, dann die httpd.c, usw. Allerdings wirst Du nicht viel Spaß mit deiner aktuellen Schaltung haben. Sporadisch wird sie funktionieren, aber nicht dauerhaft.
Hallo, so letzte Meldung erst einmal. Heute habe ich dann noch das Debugging in der stack.h aktiviert. Folgende Meldung erschien:
1 | System Ready |
2 | Compiliert am Jun 13 2013 um 19:07:35 |
3 | Compiliert mit GCC Version 4.3.3 |
4 | |
5 | NIC init: |
Nach dem Starten und auch nach langem Warten geht es nur bis hier. Stecke ich dann den ISP Stecker einmal rein und ziehe ihn wieder raus geht es weiter:
1 | My IP: 192.168.2.99 |
2 | |
3 | TCP Anwendung wird in Liste eingetragen: Eintrag 0 |
4 | TCP Anwendung wird in Liste eingetragen: Eintrag 1 |
5 | |
6 | IP 192.168.2.99 |
7 | MASK 255.255.255.0 |
8 | GW 192.168.2.1 |
9 | UDP Anwendung wird in Liste eingetragen: Eintrag 0 |
10 | ROUTING! |
11 | ARP Eintrag nicht gefunden* |
12 | **KEINEN ARP EINTRAG GEFUNDEN** |
13 | . |
14 | . |
15 | . |
16 | **KEINEN ARP EINTRAG GEFUNDEN** |
17 | ROUTING! |
18 | ARP Eintrag nicht gefunden* |
19 | **KEINEN ARP EINTRAG GEFUNDEN** |
20 | . |
21 | . |
22 | . |
23 | **KEINEN ARP EINTRAG GEFUNDEN** |
24 | NTP Err. |
Die drei Punkte wurden von mir eingefügt, da sich der Satz je noch ca 18 Mal wiederholt. > Toff (Gast) schrieb: >...Du kannst mal versuchen die SPI-Verbindungen >aufzutrennen und durch Twisted-pair-Leitungen zu ersetzen... Habe ich heute auch noch gemacht. Kein Erfolg. Aufgrund mangelnder Zeit beende ich hier mein Projekt. Ich werde mir, wenn wieder mehr Zeit ist, die Platine von Herrn Radig bestellen und den Webserver dort aufbauen. Vielen Dank an alle, die mich tatkräftig versucht haben zu unterstützen. Super Forum!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.