Webserver ATmega32/644DIP ENC28J60

Gast #697160
Lesenswert?

>So die letzte Version für heute!

Puhh..Dann hat man vielleicht mal genug Zeit um seine eigenen 
Erweiterungen auf die aktuelle Version anzupassen...ich arbeite noch mit 
einem mix aus v4, v8 und eigenen Anpassungen.

@Ulrich
Da ich noch mit einem m32 arbeite und momentan keinen Wert auf die 
Authentifizierung lege, habe ich alles was dazu gehört raus gelöscht 
(und es hat noch funktioniert :-). Könntest du die Authentifizierung in
1
#ifdef ENABLE_AUTH
oder so ähnlich kapseln? Dann kann man das sehr schnell und einfach ein 
und ausschalten und spart noch ein wenig Programmspeicher.

Wenn nicht. Geht die Welt auch nicht unter.
:-)
Steffen.
Persönliche Seite #697214
Lesenswert?

@Ulrich

In der letzten Version treten wieder Fehler auf je nachdem ob ich per IP 
oder Domainnamen zugreife, bei der IP lädt der Firefox wieder endlos. 
Bin da jetzt schon endlos dran an den Werten MTU_SIZE und 
MTU_SIZE-(TCP_DATA_START)-100 rum zu testen.

Gibt es eine Einstellung die auch mit IP z.B. 192.168.178.99 und 
Domainnamen wie z.B. heldt-intern.dyndns.org funktioniert?
Persönliche Seite #697239
Lesenswert?

@Ulrich

Ich werde nochmal meine Änderungen in die 1.10 komplett neu einbauen, an 
irgendwas muss es ja liegen. Dein Server läuft von hier aus gut.

Wenn Du den Firefox und IE hast kannst Du ja mal auf meinen zugreifen ob 
der Firefox das laden der Seite beendet:

http://heldt-intern.dyndns.org:81/

User: admin
PW: demo

Ich habe jetzt die original 1.10 drauf und über Domainnamen geht es über 
IP lädt die Seite endlos :(
Gast #697370
Lesenswert?

@ Ulrich

erstmal danke für die letzten Änderungen :)

Nun mal was komisches: Wenn ich die Debugausgaben abschalte,
bleibt der Webserver öfter mal hängen. Per Netzwerk geht
bis zum Reset dann gar nichts mehr.
Schalte ich DEBUG wieder an funktioniert alles reibungslos.

PS: Die Umlenkung von DEGUB auf usart_write_nop
legt sämtliche Debugtexte wieder ins RAM !
Gast #697502
Lesenswert?

>Du hast bestimmt eine alte Version der config.h
>in der aktuellen steht:
>#define HTTP_AUTH_DEFAULT  0

>MfG Hias

Hallo,

doch, das hatte ich gesehen. Aber es wird ja nur per Variable aus 
geschaltet. Der Code ist ja trotzdem drin. Allein der Header3 hat 129 
Byte, die dann ja nicht benötigt werden. Deswegen die Frage nach der 
Precompileranweisung. Oder schafft der Optimierer es, diesen Teil 
wegzuoptimieren?

Macht aber nichts, bei mir reicht der m32 gerade so (ich brauche telnet 
und cmd nicht, da ich zur Zeit keinen max232 o.ä. hier habe.), auch wenn 
die authentifizierung drinnen bleibt.

:-)

Schönes WE,
Steffen.
Gast #697619
Lesenswert?

Hi!
Danke für die schnelle Antwort!
Leider klappts mit dem selbstcompilierten auch nicht besser.
Sehe ich richtig, dass nur im makefile MCU = atmega644
für den 644 eingegeben werden muss? Oder sind
sonst noch Änderungen per Hand zu machen?

Könnte es sein, dass sich ein Bit im ENC verstellt hat, dass
auch bei Netzreset beibehalten wird? Dieser Fehler trat plötlich auf,
nachdem es mehrere Tage eigentlich gespielt hat.

Ich habe im Moment das Problam, das die Seite beim ersten Aufruf
richtig dargestellt wird und danach fehlen immer die ersten Zeichen.
Dadurch werden die Zeilen die unter Head definiert sind, im klartext 
ausgegeben.

Gruss,
Micha

PS:Weiter so...
#697641
Lesenswert?

Hallo,

ich hab einen Teil des Codes (stack und httpd) auf einen 8051 portiert 
und hab ein Problem. Die Debugausgabe ist

NIC Init R
My IP: 192.168.1.88

Anwendung wird in Liste eingetragen: Eintrag 0
UInt
Length 60
IP-Type 608
ARP
Int
Length 74
IP-Type 8
PING
Pinged
Int
Length ,000000000000000000000000000000000000000,000000000
IP-Type ,000000000000000000000000000000000000000,000000000
Error
Int
Length ,000000000000000000000000000000000000000,000000000
IP-Type ,000000000000000000000000000000000000000,000000000
Error
Int
Length ,000000000000000000000000000000000000000,000000000
IP-Type ,000000000000000000000000000000000000000,000000000
Error
Int
Length ,000000000000000000000000000000000000000,000000000
IP-Type ,000000000000000000000000000000000000000,000000000
Error

Manchmal wird nachdem erkennen des Pings ein Reset ausgeführt. Ist das 
evtl. ein bekannter Fehler ? ich arbeite noch auf Basis von 1.0.2

dürfte kein Problem mit der Kommunikation mit dem ENC28J60 liegen.
Persönliche Seite #697671
Lesenswert?

Also keine Version nach 1.07 läuft bei mir stabil, die neuen ab 1.0.10 
stürzen ab (ATMEGA644), man bekommt keine Verbindung mehr zu Server bis 
zum Reset. Egal ob ich per IP oder Domainnamen aufrufe.

Habe heute mal nichts neues eingebaut und die Abstürze watren teilweise 
nach dem Start direkt, teilweise nach 2 Stunden.

Die aktuelle 1.0.13 stürzt sofort ab beim laden des Bildes der Rakete.

Ich habe jetzt die 1.0.7 drauf und die rennt.
Gast #697675
Lesenswert?

Genau diese Probleme habe ich auch! Er läd die Rakete nicht und stürzt
ab. Läd er die Rakete, läuft er einen weiteren Durchgang durch.

Bei denen, wo es spielt, nutzt ihr auch den 644?

Gruss,
Micha
Gast #697676
Lesenswert?

Prima Spielzeug (jetzt wo's läuft). Dank an Ulrich!
Dennoch hat das mit der Led-Schalterei nicht so recht hingehauen, habe 
mir daher erlaubt, folgende Änderung in der "httpd.c", Funktion 
"httpd()" vorzunehmen:
...
 if (strcasestr(start_data,"LED1=1\0"))
 {
  PORTD |= (1<<PD5);
  http_entry[index].first_switch = 1;
 }
 else
 {
  PORTD &= ~(1<<PD5);
  http_entry[index].first_switch = 1;
 }

 if (strcasestr(start_data,"LED2=2\0"))
 {
  PORTD |= (1<<PD6);
  http_entry[index].first_switch = 1;
 }
 else
 {
  PORTD &= ~(1<<PD6);
  http_entry[index].first_switch = 1;
 }
 if (strcasestr(start_data,"LED3=3\0"))
 {
  PORTD |= (1<<PD7);
  http_entry[index].first_switch = 1;
 }
 else
 {
  PORTD &= ~(1<<PD7);
  http_entry[index].first_switch = 1;
 }
...

Jetzt komme sogar ich damit klar.
Bei mir hängt das zu schaltende Zeug an PD5...7 (Pollin-Board)

mfg Ringo
Gast #697845
Lesenswert?

>Macht nicht mehr so lange :)

Warum? So eine Nachtschicht ist doch was feines :-)

Jedenfalls hab ich gestern Abend (oder besser heute morgen) es endlich 
hinbekommen, dass ich mehrere Seiten darstellen kann (home.html, 
form.html, info.html,...). Diese Seiten sind oben durch eine 
Navigationsleiste ähnlich wie bei heise.de zu erreichen.

Zeit hat mich dabei vor allem das Ziel gekostet, es so hinzubekommen, 
dass ich die Seiten nur in eine Tabelle eintragen muss und dann die 
Seitenerkennung und die Navileiste automatisch erstellt werden.

Leider hat das ganze ne Menge Performance, Speicher und die 
Authentifizierung gekostet. Naja, und Bilder werden im Explorer auch 
nicht mehr angezeigt (?).

Problem ist: Ich verstehe meinen Code gerade selbst kaum noch. Also 
falls Interesse besteht, werde ich demnächst mal eine überarbeitete 
Version posten. Falls nicht wieder 5 Releases von Ulrich dazwischen 
kommen :-)

schönes WE euch
Steffen.
Persönliche Seite #697869
Lesenswert?

@Steffen

Na die Nachschicht habe ich auch hinter mir ;) Aber das Ziel mehrere 
Seiten, stabil!, zum laufen zu kriegen auf einem ATMEGA644 hat nicht 
geklappt.

Ich wollte da wo die Standardseite angezeigt wird einfach je nach Header 
GET eine andere Seite wählen nur anscheinend passt der Header nicht 
immer komplett in die start_data rein und dann klappt es nicht.

Authentifizierung und Bilder sollten natürlich erhalten bleiben ;)

Aber vielleicht kann Ulrich ja da den rechten Weg weisen.

Hast Du einen 32er oder 644er benutzt?

Schönes WE allen zusammen.

Gruß
Thomas
(Firma: www.ags.tu-bs.de) #698008
Lesenswert?

Hallo,
ich habe mal ein Layout mit Magjack geroutet. Leider funktioniert es 
nicht. Programmieren des Avr's hat geklappt und ich komme per 
Hyperterminal auch drauf. Die Avr<->Enc Kommunikation müsste eigentlich 
auch klappen, da ich mir per Terminal die ENC-Versionsnummer auslesen 
lassen kann. Bin langsam am verzwiefeln. Auf einen Ping reagiert er auch 
nicht. Hat irgendwer eine Idee, woran es liegen könnte?? ggf. MAgjack 
falsch angeschlossen?

anbei der Schaltplan, Layout und Magjack Datenblatt

wäre euch sehr sehr dankbar, wenn ihr mir helfen könntet

Grüße Henning
Angehängte Dateien:
Persönliche Seite #698314
Lesenswert?

@Ulrich

Leider bekomme ich meine Version mit den letzten BETA-Änderungen nicht 
korrekt zum laufen, aber dann lasse ich die weg weil der Server 
ansonsten  sehr sehr sehr gut läuft ;)

Jetzt eine Frage, ich habe auf dem Board einen Uhrenquarz am ATMEGA 
angeschlossen und der kann ja für den Timer1 (m32) bzw. Timer2 (m644) 
genutzt werden um genauer zu werden. Was muss an der timer.c geändert 
werden das dieser externe Taktgeber genutzt wird?

Kann man das evtl. in der config.h auswählbar machen, also Zeittakt 
intern/extern auswählbar?

Wünsche dir aber erst einmal einen schönen Sonntag und vielen Dank für 
die tolle Arbeit und Hilfe.

Gruß
Thomas
Gast #698320
Lesenswert?

>Jetzt eine Frage, ich habe auf dem Board einen Uhrenquarz am ATMEGA
>angeschlossen und der kann ja für den Timer1 genutzt werden um genauer
>zu werden. Was muss an der timer.c geändert werden das dieser externe
>Taktgeber genutzt wird?

Eine ganze Menge :( Solange der komplette Ethernet Verkehr
im INT2 Interrupt stattfindet kann man Timer die mit
Interrupts laufen quasi vergessen wenn sie GENAU sein sollen.
Gast #698437
Lesenswert?

@Thomas Heldt

>Soweit ich den Code verstehe wird in der ENC28J60 gepollt und nutzt den
>Interrupt nicht.

Dann frag ich mich wozu die ISR in stack.c gut ist ;)

>Beim Atmega644 könnte man doch weiterhin Timer1 nutzen wie bisher und
>Timer2 mit externem Quarz für eine Uhr, oder sehe ich das falsch?
>Ich möchte quasi die Zeit erfassen die der Server läuft, und das so
>genau wie irgend möglich.

Was verstehst du unter GENAU ?

Das mit dem Timer1 Overflow Int. ist allerdings etwas
ungenau. Der Timer1 muss nachgeladen werden. Dabei verliert
man immer etwas. Dazu komt noch die Zeit zum Sprung in die ISR.
Unglücklicherweise lädt Uli den Timer erst am Ende der ISR neu.
Das sollte man immer als erstes machen.

Besser ist aber der CTC Modus von Timer1.
Da wird der Timer1 automatisch neu gesetzt.
Ich hab da mal was angehängt.
Angehängte Dateien:
(Firma: www.ags.tu-bs.de) #698658
Lesenswert?

Thomas Heldt wrote:
> @Henning Schaper
>
> So wie ich das sehe und verstehe hast Du am MagJack die Leitungen 1+3
> sowie 4+6 vertauscht, probiere es mal wenn du sie genau anders herum
> anschliesst.

wie meinst du das genau??

1 3 4 6 ->>3 1 6 4
oder
1 3 4 6 ->>4 6 1 3
(Firma: www.ags.tu-bs.de) #698685
Lesenswert?

> Frage:
> Wo hast du den MagJack gekauft, ich suche auch so einen.

den hab ich von www.csd-electronics.de


Ach und danke für deinen Tip, jetzt hab ich den Fehler auch gesehen. 
werde gleich mal meinen Lötkolben aufheizen und und das korrigieren, mal 
gucken ob es dann läuft
(Firma: www.ags.tu-bs.de) #698760
Lesenswert?

Es ist folgendermaßen, wenn ich das Ding an mein Notebook anschließe 
(normales Patchkabel), dann kommt "Netzwerkkabel verbunden", die eine 
Led am Magjack leuchtet durchgänging, die zweite blinkt so ab und zu 
mal. Das Notebook zeigt mir unter Netzerkaktivität z.b. 200 pakete 
gesendet, aber 0 empfangen. Und beim anpingen halt immer 
Zeitüberschreitung und 100% Verlust.
Schließe ich den Webserver am Router, Switch oder Desktoprechner an(auch 
normales Patchkabel), dann passiert gar nix.
Persönliche Seite #698767
Lesenswert?

@Henning Schaper

Bist du sicher das der MagJack zum Datenblatt passt?

Wenn JA, hast du mal nachgemessen ob zwischen den ENC28J60 Pins und dem 
jeweiligen Pin am MagJack ein Kontakt vorhanden ist?

Wenn auch JA, hast Du einen HUB oder Switch?

-> Switch, bin ich ratlos
-> HUB, wenn da 100MBit Geräte dran hängen würde es mit den 10MBit des 
ENC nicht funktionieren.
(Firma: www.ags.tu-bs.de) #698786
Lesenswert?

Datenblatt passt, Kontakt ist vorhanden, IP ist die Richtige, und ich 
habs an meinem Router Desktoprechner und Laptop probiert.

Wie lang dürfen die Leitungen zwischen enc und Magjack sein?? da geht ja 
immerhin HF durch, Wie tolerant dürfen die 50ohm widerstände sein?? Wo 
sollten sie sitzen (HF)??

Das wären noch meine Therorien für Fehlerquellen

anbei nochmal das Laout als PNG, vielleicht hab ich da ja n groben 
Schnitzer drin

Gruß Henning
Angehängte Dateien:
(Firma: www.ags.tu-bs.de) #698794
Lesenswert?

Kornelius Tetzner wrote:
> Soweit ich weiß benötigt man ein gekreuztes Kabel wenn du den Webserver
> an dein Notebook anschliessen willst...

Aber wieseo geht es dann am Router der ja in diesem Falle als Switch 
fungiert auch nicht? Soweit ich weiß kann mein Notebook, so wie viele 
andere moderene Notebooks, das umschalten, sodaß kein Crossover benötigt 
wird


Grüße
#698884
Lesenswert?

Henning Schaper wrote:
> Kornelius Tetzner wrote:
>> Soweit ich weiß benötigt man ein gekreuztes Kabel wenn du den Webserver
>> an dein Notebook anschliessen willst...
>
> Aber wieseo geht es dann am Router der ja in diesem Falle als Switch
> fungiert auch nicht? Soweit ich weiß kann mein Notebook, so wie viele
> andere moderene Notebooks, das umschalten, sodaß kein Crossover benötigt
> wird
>
>
> Grüße

Wäre mir ehrlich gesagt neu...bei meinem alten Webserver musste ich ein 
gekreutztes Kabel nehmen und das wurde auch stets im Microchip Forum 
gepredigt...hast du deiner Netzwerkkarte eine feste IP zugewiesen?
Gast #698957
Lesenswert?

Leider kann ich die neue Version trotz WinAVR vom 16.05.2007 nicht 
komplilieren:

Compiling: httpd.c
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=httpd.lst  -std=gnu99 httpd.c -o httpd.o
httpd.c: In function `httpd_header_check':
httpd.c:161: warning: implicit declaration of function `strcasestr'


Muss ich irgend eine Datei zusätzlich includen? Ich habe bisher nichts 
verän dert.
#698992
Lesenswert?

Henning Schaper wrote:
> Schade, hat leider nicht geklappt. Außerdem hab ich gesehen, dass in
> anderen Magjackschaltungen die Pins auch vertauscht sind, wo es aber
> trotzdem läuft
>
> Grüße Henning

Hast du dir mal den Schaltplan von mir angesehen den ich weiter oben 
gepostet habe?
Ich habe da den CSD Magjack benutzt. Und so funktioniert es bei mir 
auch.
Getestet mit Crossoverkabel direkt an einem PC und mit 1:1 Kabel über 
ein Router/Switch.
#699012
Lesenswert?

Ich habe nur eine Adapterplatine gemacht. Allerdings hatte diese noch 
einen Fehler beim Magjack. Ich habe mal die korrigierte Version 
angehängt. Das Layout ist jetzt halt noch nicht fertig geroutet, das hab 
ich nicht mehr geändert.

Die Lib brauchst du nicht, du kannst dir einfach den Magjack aus dem 
Schaltplan rauskopieren.
Angehängte Dateien:
(Firma: www.ags.tu-bs.de) #699024
Lesenswert?

Danke, genauso hab ich es ja auch...naja hab zusätzlich noch die 
mittelanzapfung, aber das hab ich ja auch schon versucht, die mal 
wegzulassen. ich glaub langsam, mein magjack hat nen defekt. Oder 
glaubst du das könnte daran liegen, dass die zuleitungen zum magjack zu 
lang sind (hochfrequenz), bei mir sind die ca. 5cm. oder dass ich statt 
50ohm 51ohm genommen hab?

grüße hennning
#699065
Lesenswert?

Henning Schaper wrote:
> Danke, genauso hab ich es ja auch...naja hab zusätzlich noch die
> mittelanzapfung, aber das hab ich ja auch schon versucht, die mal
> wegzulassen. ich glaub langsam, mein magjack hat nen defekt. Oder
> glaubst du das könnte daran liegen, dass die zuleitungen zum magjack zu
> lang sind (hochfrequenz), bei mir sind die ca. 5cm. oder dass ich statt
> 50ohm 51ohm genommen hab?
>
> grüße hennning

Was hast du denn für ein Widerstand als Rbias drin? Welche Version hat 
dein ENC?
Du kannst mal versuchen die Zuleitung abzuschirmen um das 
auszuschliessen.

Blöde Frage: Der Top Layer ist nur Darhtbrücke oder? Die Leiterbahnen 
machen nämlich gut kurzschlüsse.

Was bei mir andres ist, ist die Mittelanzapfung und GND an Pin8 hab ich 
nicht.
Ich hab am Magjack nur 4 Pins belegt.
Gast #699087
Lesenswert?

Vielen Dank Thomas.

Ich habe die neue Version vom 25.05.2007 ins alte WinAvr Verzeichnis 
installiert, wo er so weit ich gesehen habe alles überschrieben hat. In 
der string.h Datei gibt es auch einen Prototyp für die strcasestr 
Funktion. Muss ich das alte WinAVR vorher löschen bevor ich das neue 
installiere?
(Firma: www.ags.tu-bs.de) #699444
Lesenswert?

> Was hast du denn für ein Widerstand als Rbias drin?
2,32ohm bei 2%

> Welche Version hat dein ENC?
Version 5, das hat mir das Terminal jedenfalls ausgespuckt

> Du kannst mal versuchen die Zuleitung abzuschirmen um das
> auszuschliessen.
Habe die Zuleitungne zum Magjack direkt an die Pins mit 2cm langer Litze 
gemacht, also der Magjack baumelt jetzt so unter der Platine. War jetzt 
keine abschirmung, sondern ne verkürzung

> Blöde Frage: Der Top Layer ist nur Darhtbrücke oder? Die Leiterbahnen
> machen nämlich gut kurzschlüsse.

Na klar sind das nur Drahtbrücken
----

Habe jetzt nochmal mit nem Scope gemessen, direkt an Tpin und TPout vom 
Enc..
Wenn ich das Ding jetzt anpinge, dann hab ich ein Flackern bei TPin aufm 
Scope, sprich da kommt was an.

Dann hab ich nochmal an TPout gemessen, während ich den Webserver 
angepingt hab, da müsste dann ja eigentlich ebenfalls ein Flackern 
kommen, was dann die Antwort wäre.. ist aber leider die ganze Zeit auf 
High

Spontan würd ich sagen, die Pegel zwischen Avr&Enc passen doch nicht so, 
und der Enc bekommt gar nix mit, was der Avr ihm sagt, bzw, umgekehrt. 
Sodaß der Enc dann einfach gar nix macht

Aber das widerspricht sich wieder mit der Tatsache, dass ich die 
Versionsnummer auslesen konnte.

Ich verwende die Hardware (bis auf die Magjack manipulation) und die 
Software von Ulrich Radig. Das müsste dann ja eigentlich auch passen


Hat einer noch ne Idee??

Grüße Henning
Persönliche Seite #699480
Lesenswert?

@Alle

So endlich habe ich es geschafft und habe die timer.c so geändert, danke 
auch an Holger für den Tip, das er im CTC Mode mit ATMEGA32 und 
ATMEGA644 arbeitet. Hat man einen externen Uhrenquarz angeschlossen kann 
man in der config.h durch folgende Zeile beeinflussen welcher Takt für 
den Timer genutzt wird.

Zeile in config.h einfügen:

[c]
//Timertakt intern oder extern
#define EXTCLOCK 0 //0=Intern 1=Externer Uhrenquarz
[/]

Und die hier angefügte timer.c nutzen.

Gruß
Thomas
Angehängte Dateien:
Gast #699612
Lesenswert?

Hallo,

ich haben den Webserver mit einem Mega644 in Betrieb jedoch hängt er 
sich städig auf und der Output der Konsole sieht auch etwas 
verwurschtelt aus :(

Die Einstellung im Terminalprog ist normal auf 9600 8n1

Hab ihr vll eine Ahnung an was das liegen kann?




**** NEUE )TUTHPÊêJEU%UåuRRRRjRjR:Q    ŠEõŠrŠjR
•ÁÑ遥µ…•½¥™±¥µ…•½áµá‰¥Ñµ…Á±¥µ…•½©Á•±¥µ…•½Á©Á•±…ÁÁ±¥…Ñ¥½¹½ 
áµÍ¡½­Ý…Ù•µ™±…Í¡±©½©5)•Áѵ1…¹Õ…•遑•5)Uµ
UéááÙ5)•Áѵ¹½‘¥¹éé¥Á±‘•™±…Ñ•5)U͕ɵ•¹Ñé5½é¥±±…½Ñ¹Á¡½µÁ…Ñ¥ 
‰±•í5M%Ý¹Áí]¥¹‘½Ý́9QÕ¹Å큹9Q
1IÉ¹Á¹ÕÁÝÉÝí5¥5)!½ÍÑéÅåɹÅÙá¹É¹ÉÁÁ5)
½¹¹•Ñ¥½¹é-••Áµ±¥Ù•5)5)ñµµµ!I9II%
!Q…µµµù5)ÿ
**** NEUE HTTp ANFORDERUNG ****

GET / ÈEõŠrŠjR
¬¬—Jµ…•½¥™±¥µ…•½áµá‰¥Ñµ…Á±¥µ…•½©Á•±¥[XVÖ 
©Á•±…ÁÁ±¥…Ñ¥½¹½áµÍ¡½­Ý…Ù•µ™±…Í¡±©½©5)•Áѵ1…¹Õ…•遑•5)Uµ
UéááÙ5)•Áѵ¹½‘¥¹éé¥Á±‘•™±…Ñ•5)U͕ɵ•¹Ñé5½é¥±±…½Ñ¹Á¡½µÁ…Ñ¥ 
‰±•í5M%Ý¹Áí]¥¹‘½Ý́9QÕ¹Å큹9Q
1IÉ¹Á¹ÕÁÝÉÝí5¥5)!½ÍÑéÅåɹÅÙá¹É¹ÉÁÁ5)
½¹¹•Ñ¥½¹é-••Áµ±¥Ù•5)ÕÑ¡½É¥é…Ñ¥½¹é 
…Í¥µåÙ‘ÁÁ‰ÉÅ¡‘Uñµµµ1=%9=-…µµµù5)õ5)5)ñµµµ!I9II%
!Q…µµµù5)ÿ
**** NEUE HTTP ANFORDERUNG *~**

GET /favicon.ico HTTP/1.1
Accept: */*
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 
2.0.50727; FDM)
Host: 192.168.2.200
Connection: Keep-Alive
Authorization: Basic cm9vdDp0b21hdGU  <---LOGIN OK!--->
=

<---HEADER ENDE ERREICHT!--->
Persönliche Seite #699628
Lesenswert?

@Michael

Ein paar mehr Informationen wäre schön, welche Taktfrequenz, Takt 
intern/extern, Takt wenn extern über Quarz oder ENC?

Welche Version der Software nutzt du?

Was hast Du alles geändert, ein Favicon ist ja standardmässig nicht im 
Code enthalten ;)

Welches Board nutzt Du oder fliegend aufgebaut?

Ist der Server von außen zugänglich um es sich mal an zu sehen?

Welcher Takt steht in der config.h ?

Welche Baudrate nutzt du?
Gast #699652
Lesenswert?

kk sry ...


Aaaalso:

Takt: 16 Mhz Quarz (steht auch in der config.h)
Board: selbst gemachte Platine (Layout von Uli), mit ISP zum STK500 
verbunden
Uart: avr und pc auf 9600 8n1
Software: Aktuelle die man auf Uli's Seite saugen kann
Änderungen: Webseite aufs Minimum reduziert (ohne Grafiken)


Eines ist nur seltsam ... mal kann man einige http-anfragen im Terminal 
wunderbar lesen - mal kann man nicht mal das "System ready" entziffern 
:(
#699699
Lesenswert?

> 8 Mhz intern:

System Ready

NIC Init Ready

My IP: 192.168.02.200


**** NEUE HTTP ANFORDERUNG ****

GET /?LED1=1&Submit=Senden HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/x-shockwave-flash, */*
Referer: http://192.168.2.200/?Submit=Senden
Accept-Language: de
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 
2.0.50727; FDM)
Host: 192.168.2.200
Connection: Keep-Alive
Authorization: Basic cm9vdDpwaW5ndQ  <---LOGIN OK!--->
==

<---HEADER ENDE ERREICHT!--->

****પUBQQÁ@NFORDERÿuRRRRjRþ¡TÒéšÕµ¥ÑõM•¹‘õ
  ŠEõŠr5)•ÁÑùR«+ë«ëé+˱¥µ…•½á·á‰¥Ñµ…Á±ÿZ[XVÖI
õ±¥µ…•½Á-®Ö  )
Á¥…Ñ¥½¹½áµÍ¡½­Ý…Ù•µ™±…Í¡±ùI©HHU™•ÉõÉ遡ÑÑÁé½½ÅåɹÅÙá¹ù.200/?LEÄêŠ2šÕ‰ 
µ¥ÑõM•¹‘•¹5)ÿ•Áѵ1…¹Õ…•遑•ÿ)Uµ
AUéáÙ5)•Áѵ¹½‘¥¹éé¥Á±ÿeflate
õ•ɵ•¹Ñé5½é¥±±…½ñ¹Á¡½µÁ…WK‹«kjMåE 7.0; Windows NT .1; 
.NETàŠJ’r‚rª‚“ÓÓ25¥ÿR†õÍÑéÅý&)²Âr’r’‚Á5)
½¹¹•Ñ¥½¹é-••Áµ±¥Ù•5)ýÑ¡½É¥é…ÑÿËK…Í¥ÿµåÙ‘ÁÝ…U“‹+âj-LOGIN 
OÿR©©ÉjRêêjRjRâjjjBýE©J*9Q*ªTjŠjjòjRþ


Quarz streicheln bringt auch keine Besserung.
Habe den Src mal als Anhang dazu.

Der Server läuft im LAN zur Zeit erfreulich stabil, nur das Uart macht 
noch gewisse Probleme.
Angehängte Dateien:
Gast #699708
Lesenswert?

Ich sollte die Frage besser hier stellen als in dem Kommentar-Thread auf 
der Hauptseite ....

Erstmal deep respect Ulrich. Geiles Teil. Einfach und kann alles was 
benötigt wird um dem AVR die weiten des Internets näherzubringen.

Folgendes :

Ich würde ganz gerne das Dingen nachbauen. Da ich aber kein 
Platinen-Ätz-Studio habe wollte ich mal nachfragen ob es für diese 
Platine evtl. eine Sammelbestellung gibt.

Da ich selbst auch einen mini-TCP/IP-Stack schreiben möchte (so lernt 
man am meisten) wäre ich für Infos welche Paket-Typen (ARP, ICMP, TCP 
usw) es gibt, wie diese aufgebaut sind und was man davon für eine 
einfachst Kommunikation zweier Ethernet Teilnehmer benötigt. Hat jemand 
evtl. einen guten Link in dem die Pakettypen, deren Aufbau und aufgabe 
beschrieben sind ?

Gruß
Rene
Gast #699709
Lesenswert?

Wenn nur der USART Probleme macht hast du wahrscheinlich
die Fuses vom ATmega644 falsch programmiert. Der steht
vermutlich immer noch auf interner RC-Osci, auch
wenn du da einen Quarz am uC hast.
#699741
Lesenswert?

Problem gefunden!

Über den Max232 vom STK500 redet der Server nun endlich lesbares mit mir 
:)
Nun werde ich mal die sämtliche C's am Max wechseln und auch direkt 
einen neuen Max verbauen. Vielleicht wirds ja dann :)


So liest es sich doch gleich viel viel besser:


System Ready

NIC Init Ready

My IP: 192.168.02.200


**** NEUE HTTP ANFORDERUNG ****

GET /?LED1=1&Submit=Senden HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/x-shockwave-flash, */*
Referer: http://192.168.2.200/?LED3=3&Submit=Senden
Accept-Language: de
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 
2.0.50727; FDM)
Host: 192.168.2.200
Connection: Keep-Alive
Authorization: Basic cm9vdDpwaW5ndQ  <---LOGIN OK!--->
==

<---HEADER ENDE ERREICHT!--->

Edit:
Warum nimmt eigentlich niemand den Max203? Der braucht keine externen 
C's ...
Gast #699827
Lesenswert?

Ich glaube meine Frage ist etwas untergegangen :-((


Ich möchte selbst auch einen mini-TCP/IP-Stack schreiben (so lernt
man am meisten) und ich wollte mal Fragen ob jemand einen guten Link mit 
erklärungen zu den einzelnen Paket-Typen (ARP, ICMP, TCP usw) hat, indem 
erklärt wird wie diese aufgebaut sind (byte-mässig), welche funktion die 
Paket-Typen haben und was man davon für eine einfachst Kommunikation 
zweier Ethernet Teilnehmer benötigt. Hat jemand evtl. einen solchen 
guten Link parat ?

Habe schon in Wikipedia nachgeschaut, aber ich suche eher eine geraffte 
Dokumentation (also nicht welche RFC in welcher ISO wann und wie 
festgelegt wurde, sondern die Dinge die common sind und auf die man sich 
"verlassen" kann).


Gruß
Rene
#699835
Lesenswert?

@TheMason

Einen Platinen-Sammelthread gibt es nicht, aber für einen Versuch klappt 
das sogar auf Lochraster oder Steckboard.

>Da ich selbst auch einen mini-TCP/IP-Stack schreiben möchte (so lernt
>man am meisten) wäre ich für Infos welche Paket-Typen (ARP, ICMP, TCP
>usw) es gibt, wie diese aufgebaut sind und was man davon für eine
>einfachst Kommunikation zweier Ethernet Teilnehmer benötigt. Hat jemand
>evtl. einen guten Link in dem die Pakettypen, deren Aufbau und aufgabe
>beschrieben sind ?
>
>Gruß
>Rene

Wikipedia hilft schon mal weiter. Eine weitere Hilfe gibt es auf der 
Seite vom Ulrich:
http://www.ulrichradig.de/site/infos/pdf/Netzwerk.pdf
Dann gäbe es noch einige andere Seiten:
http://www.elektronik-kompendium.de/sites/net/0606251.htm
http://netzmafia.de/skripten/netze/netz8.html
usw. usf.

Gruß Gerd
#699838
Lesenswert?

>Habe schon in Wikipedia nachgeschaut, aber ich suche eher eine geraffte
>Dokumentation (also nicht welche RFC in welcher ISO wann und wie
>festgelegt wurde, sondern die Dinge die common sind und auf die man sich
>"verlassen" kann).

Was verstehst du unter "common"? Wikipedia zeigt schon mal ein Diagramm, 
wie das einzelne Protokoll aufgebaut ist. Wenn du wissen willst wie ein 
Netzwerk funktioniert, bist du bei meinem letzten Link gut aufgehoben. 
Ansonsten musst du direkte Fragen stellen, damit ich weiß, was du wissen 
willst.
Gast #700203
Lesenswert?

@gerd

erstmal danke für die links.
sowas in der richtung habe ich gesucht.

mit common meinte ich das wahrscheinlich nur ein pc bzw. server alle 
pakettypen unterstützen muß, ein mikrocontroller jedoch nicht.
ich meinte daher was für eine einfache kommunikation (http/udp/telnet) 
alles benötigt wird. aber ich denke das lässt sich aus den links 
erschließen.

>Wikipedia zeigt schon mal ein Diagramm,
>wie das einzelne Protokoll aufgebaut ist

das ist klar, aber wikipedia zeigt weiterhin noch alle weiteren 
möglichkeiten auf die ein mikrocontroller jedoch nicht unterstützen muß 
(z.b. muß ein AVR für eine einfache kommunikation sicherlich nicht alle 
arten von ICMP-Paketen kennen und behandeln müssen, oder !?) so war das 
ganze gedacht

gruß
rene
Persönliche Seite #700664
Lesenswert?

@Uli

Hi!
Danke für die neue Version. Hat einen Moment gedauert, habe
dann aber die geänderte MAC gefunden ;)

Allerdings habe ich immer noch das Problem, das
das Schalten der 3 Leds nicht einwandfrei funktioniert.
Schalte ich im ersten Durchgang LED1, wechselt sie ihren
Zustand, soweit richtig.

Will ich nun im nächsten Durchgang nur Led2 toggeln, geschieht
dies auch wie es soll, jedoch wird der Vorgang aus Durchgang 1
auch widerholt, dH, LED1 schaltet auch.

Schalte ich nun Led3, schaltet LED3 und LED2.

?Idee

Gruss,
Micha
Gast #700690
Lesenswert?

>Will ich nun im nächsten Durchgang nur Led2 toggeln, geschieht
>dies auch wie es soll, jedoch wird der Vorgang aus Durchgang 1
>auch widerholt, dH, LED1 schaltet auch.

>Schalte ich nun Led3, schaltet LED3 und LED2.

>?Idee

Idee nicht, kann ich aber bestätigen.
LED1 anklicken und senden. OK.
Im Firefox sofort auf neu laden klicken, LED1 toggelt.
Nochmal neu laden, LED1 toggelt.

Ein bißchen warten, neu laden, LED1 toggelt nicht mehr.
Gast #701566
Lesenswert?

Hallo!

Zu erst einmal: Ein wirklich geniales Projekt. Die nötigen Bauteile hab 
ich schon bestellt. Freu mich schon auf meinen eigenen Webserver!

Meine Frage:
Ist es möglich mit dem Webserver eine Seite im Internet aufzurufen? 
Nicht um zu surfen sondern um bei Dyndns die neue IP bekannt zu geben. 
Dazu muss man ja nur folgende Seite aufrufen:

"http://<user>:<password>@members.dyndns.org/nic/update?hostname=<host>";

Bei mir wird nämlich die Verbindung zwischen 10 und 50 mal am Tag für 
ein paar Sekunden getrennt und ich möchte nicht auf jeden Rechner im 
Netz ein Tool installieren, nur um bei Dyndns aktuell zu bleiben.

Danke im Voraus
Gast #701651
Lesenswert?

Hallo zusammen,

super Projekt.
Vielen Dank an Ulrich, das er so nett ist und alles zur Verfügung 
stellt. Ist bei vielen ja nicht mehr so üblich.

Hätte da noch ein paar Ideen/Anregungen für das Projekt, kann aber 
leider selbst nicht alles umsetzten zumal es die Ressourcen des 
Controllers sprengen würde.

-EMail Header von POP Server auf LCD anzeigen lassen(Tasten für Auswahl)
-RSS Reader(wie Ulrich schon schrieb)
-WakeOnLAn(um Rechner von der Ferne einzuschalten)
-GSM Schnittstelle(alternative zu WakeOnLan oder autark zum schalten per 
Anruf/SMS anstatt über Browser)
-Servo/Webcam Interface

Günni
Persönliche Seite #701753
Lesenswert?

@Michael Volk

Teste mal folgende Änderung in de http.c
1
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"LED1=1\0")!=0){ 
2
      PORTA ^= (1<<PA0);
3
      http_entry[index].first_switch = 1;
4
    }
5
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"LED2=2\0")!=0){
6
      PORTA ^= (1<<PA1);
7
      http_entry[index].first_switch = 1;
8
    }
9
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"LED3=3\0")!=0){
10
      PORTA ^= (1<<PA2);
11
      http_entry[index].first_switch = 1;
12
    }

ersetzen durch
1
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"GET /?LED1=1\0")!=0){ 
2
      PORTA ^= (1<<PA0);
3
      http_entry[index].first_switch = 1;
4
    }
5
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"GET /?LED2=2\0")!=0){
6
      PORTA ^= (1<<PA1);
7
      http_entry[index].first_switch = 1;
8
    }
9
    if (strcasestr((char*)&eth_buffer[TCP_DATA_START_VAR],"GET /?LED3=3\0")!=0){
10
      PORTA ^= (1<<PA2);
11
      http_entry[index].first_switch = 1;
12
    }
Persönliche Seite #701774
Lesenswert?

@Michael

Ja sorry hatte nicht dran gedacht das ich ja nur eine LED schalte, mein 
Code ist aber auch schon zu sehr angepasst.

Das Problem ist das beim erneuten Aufrufen der Seite der Referer 
übergeben wird und der wird halt auch ausgewertet und da steht die URL 
des letzten Schaltvorgangs drin.

Ich habe es so geändert das ich nicht über eine Box zum anklicken 
schalte sondern über einen Button und in das Formular immer den 
effektiven Wert der PIN eintrage.

Vielleicht hilft es dir weiter um etwas zu experimentieren.
Gast #701781
Lesenswert?

Hallo,

hat jemand einen Tipp für mich, wie ich die makefile so anpasse, dass 
alle Dateien die vom Compiler und Linker erzeugt werden in einem 
Extrapfad landen. Die Übersicht in Eclipse nimmt bei der Anzahl Dateien 
sehr ab.

Steffen.
Persönliche Seite #701841
Lesenswert?

@Ulrich

Ich nutze einen geänderten, die Änderung ist das ich nicht eine Webseite 
sondern 2 habe, setzte ich den MTU-Wert auf 500 wird die erste Seite 
nicht geladen sondern immer nur die 2. Seite (Defaultvorgabe).

Es scheint als ob der Header dann nicht komplett ist wenn er ausgewertet 
wird.

Aber ich werde am Wochenende mal den Code komplett durchschauen ob ich 
da evtl. eine Änderung von dir nicht drin habe.
Gast #702995
Lesenswert?

Hallo zusammen!

erstmal riesen Lob an Ulrich und die anderen Mitentwickler!!! Echt super 
Projekt!
Ich verfolge diesen Thread von Beginn an. Wenn ich die Leiterplatte 
endlich fertig habe (warte noch auf den Laminierer vom großen C für die 
Tonertransfermethode), dann werd ich ihn aufbaun und mich mal 
einarbeiten...

Kann man schon abschätzen, ob es möglich ist (von den Ressourcen her), 
dass der AVR mal WOL Packete senden können wird, damit man von unterwegs 
PCs zu Hause einschalten kann? Kenn mich bisher mit Ethernet noch net so 
gut aus, aber bin schon fleißig am Quellen lesen ;-)

Also bitte weitermachen!!

Simon
Persönliche Seite #703217
Lesenswert?

@Steffen

Ich habe zum einen folgendes Beispiel genutzt:
http://www.tecchannel.de/kommunikation/e-mail/401772/index6.html

Dann in die RFC`s geschaut und einfach einen Ablauf programmiert der
einen festen Text als Mail versendet.

Dann habe ich mir die http_get.c angeschaut und als Grundlage benutzt.

Ich habe aber auch bisher auf die Erkennung und Auswertung von Fehlern 
verzichtet da die Funktion mir nicht sehr wichtig ist, halt eine 
Spielerei das der Server mir nach einem Neustart(sollte ja nur bei einem 
Stromausfall vorkommen) eine Mail sendet.

Da meine Server an USV´s hängen sehe ich so das es einen Stromausfall 
gegeben haben muss, finde ich ganz praktisch ;)
Persönliche Seite #703234
Lesenswert?

@Steffen

Ich habe hier mal den Code angehangen, in der config.h muss die IP des 
Mailservers wie folgt eingetragen werden:

#define SMTP_IP IP(aaa,bbb,ccc,ddd)

In der smtp.c sind die Mailadressen einzutragen bei XXXXXXXXX@YYYYYYYYY 
und die LL durch die resultierenden Längen zu erstzen.

in der main.c muss smtp.h included werden und dann kann nach dem die 
Interrupts aktiviert wurden per

mail_send();

die Mail versendet werden.

In das Makefile die smtp.c mit aufnehmen.

Viel Spaß beim Mail senden ;)

@Ulrich

Vielleicht kannst du ja auf diesem Code aufbauen und ihn integrieren ;)
Angehängte Dateien:
Gast #703237
Lesenswert?

super Sache. Vielleicht muss ich demnächst auch mal meine Änderungen 
veröffentlichen. Leider haben die nicht mehr so viel gemeinsam mit dem 
Original und werden für dritte wahrscheinlich schwer zu verstehen sein.

Steffen.
(Firma: www.ags.tu-bs.de) #703474
Lesenswert?

Hallo, hat einer zufällig die Webpage schon so modifiziert, dass man 
dort auch den Status der Lampen sieht, also ob sie an oder aus sind?? 
Würde ich zwar auch noch hinkriegen, aber wahrscheinlich müsste ich da 
etwas "rumprobieren". Da aber die Programmierdauer ca. bei 3 Minuten 
liegt (bei mir jedenfalls), wäre das etwas lästig. Naja und wenn einer 
das schon hat, könnte ich mir das sparen...


Grüße Henning
Gast #703508
Lesenswert?

Hallo Henning,

Ich habe meinen Code gerade nicht da, aber vielleicht hilft dir ja das 
Prinzip wie ich es mache weiter:

Ich führe zusätzlich zu %VA@xx noch %VI@xx, das I (großes i kein kleines 
L) sagt mir, dass entweder der Text "EIN" oder "AUS" an die Stelle 
%VI@00 kopiert wird, je nachdem, ob die var_array[xx]==0 (AUS) oder !=0 
(EIN) ist.

dafür habe ich eine weiter Prüfroutine für %VI@ geschrieben, die der 
originalen Überpüfung für %VA@ sehr ähnlich ist. Nur der memcpy ist 
angepasst über eine if Bedingung (soweit ich mich erinnere):
1
if(var_array[ b]==0)
2
  memcpy (Ziel, "AUS\0", 4);
3
else
4
  memcpy(Ziel, "EIN\0", 4);

der Rest ist genauso wie die Originale Behandlung von %VA@. Vielleicht 
hilft dir das als Idee.

Übrigens, so ähnlich habe ich es auch gemacht, um in einer 
Radiobutton-Gruppe den vorausgewählen Wert anzuzeigen, z.B. den Kringel 
bei Ein oder Aus zu machen (ich schalte meine LEDs damit gezielt ein 
oder aus).
Ich verwende dort die Syntax %VR@xxy, wober R für Radiobuttons steht, xx 
für die Vergleichsvariable und y für den Wert den Variable haben muss um 
"checked" zu sein.

Achja, in den Zustand musst du dann im var_array aktuell halten.

Steffen.
(Firma: www.ags.tu-bs.de) #703561
Lesenswert?

Sucher wrote:
> Hallo
>
> @Henning läuft jetz dein Board mit dem Magjack, wenn ja was wars?
>
> MfG
> Achim

Ja es läuft, es lag nicht am Magjack oder dessen Anschluss. Es war der 
25Mhz Quarz am ENC. Dieser Quarz war ein 25mhz Obertonquarz von Reichelt 
mit 22pf (Bauform HC18), der mit 8,333Mhz lief, was sein Grundton ist.

Jetzt habe ich wieder ein Obertonquarz von Reichelt, im Prinzip genau 
der gleiche, aber Bauform HC49U-S. Er ist auch wieder mit 22pf bestückt.
Komischerweise klappt es mit dem und er schwingt, wie er soll auf 25Mhz

Also, an alle: VORSICHT MIT DEN REICHELT QUARZEN


Grüße Henning
Gast #703589
Lesenswert?

Hallo,

hier mein Code, wie ich den Zustand von Variablen als Text und in 
Radiobuttons darstelle:
1
            //Ersetzen der Variablen %VI@00 bis %VI@09 durch "EIN" oder "AUS"
2
          if (strncasecmp_P("%VI@",http_entry[index].new_page_pointer-1,4)==0)
3
          {
4
            b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;
5
            b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48);  
6

7
            if(var_array[ b] !=0 )
8
              memmove(&var_conversion_buffer, "EIN\0", 4);
9
            else
10
              memmove(&var_conversion_buffer, "AUS\0", 4);
11

12
            str_len = strnlen(var_conversion_buffer,MAX_VAR_ARRAY);
13

14
            memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
15
            a += str_len-1;
16
            http_entry[index].new_page_pointer = http_entry[index].new_page_pointer+5;
17
          }
18
            //Einsetzen der Variablen %VR@00x bis %VR@09x durch checked wenn var_array[00..]=x
19
          if (strncasecmp_P("%VR@",http_entry[index].new_page_pointer-1,4)==0)
20
          {
21
            b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;
22
            b +=(pgm_read_byte(http_entry[index].new_page_pointer+4)-48);  
23

24
            if(var_array[ b] == (pgm_read_byte(http_entry[index].new_page_pointer+  5  )-48))
25
              memmove(&var_conversion_buffer, "checked\0", 8);
26
            else
27
              memmove(&var_conversion_buffer, "\0", 1);
28
                
29
            str_len = strnlen(var_conversion_buffer,MAX_VAR_ARRAY);
30
            memmove(&eth_buffer[TCP_DATA_START+a],var_conversion_buffer,str_len);
31
            a += str_len-1;
32
            http_entry[index].new_page_pointer = http_entry[index].new_page_pointer+6;
33
          }

Den Teil für die Radiobuttons kann man sehr einfach einsetzen:

 <input type="radio" name="LED1" value="0" %VR@080><br>
 <input type="radio" name="LED1" value="1" %VR@081><br>

Nun werden zwei Radiobuttons erzeugt und abhängig vom Wert in der 
Variable im var_array[08] wird bei 0 oder 1 das Wort "checked" 
hingeschrieben. Das bewirkt, dass bei dem ausgewählten Radiobutton der 
schwarze Punkt vorselektiert ist. Das funktioniert auch mit Werten bis 
zur 9.

Steffen.

p.s. Wie kann ich einem "Your post seems to contain Spam: "[ b]"." 
entgehen?
(Firma: www.ags.tu-bs.de) #703590
Lesenswert?

Sucher wrote:
> Hallo
>
> @Henning kann man von Dir eventuell eine Platine(n) bekommen und die
> Eagle Dateien?
>
> MfG
> Achim

Layout liegt auf meinem Uni-Space 
http://www-public.tu-bs.de:8080/~y0027190/, es ist aber noch ne 
vorläufige Version.
Meine neue Version ist fast fertig, aber die lässt sich dann nicht mit 
der Eagle-Light, die wohl die meisten hier haben, öffnen, da diese exakt 
für die
"SD 10 SW" oder "SD 10 GR" Gehäuse gelayoutet ist. Sprich, die Platine 
ist zu groß für die Light-Version

Habe ich das Richtig verstanden, dass ich dir eine ätzen soll?

Gruß Henning
Gast #703597
Lesenswert?

Eine weitere Frage:

Habt ihr auch solche Erweiterungen der Html-Syntax? Lohnt es sich, 
vielleicht eine Übersicht und deren Umsetzungen zu sammeln, damit wir 
einheitlich bleiben, und nicht immer ein ganzer Abend drauf geht, die 
Änderungen von Ulrich in den eigenen Server zu investieren ;-) (was 
keine Kritik sein soll)?

Hier meine Syntaxerweiterungen:

%VA@xx - Original von Ulrich

%VI@xx - Ersetzen durch Ein oder Aus entsprechend des Variablenwertes

%VR@xxy - Ersetzen durch das Wort "checked" wenn die Variable
          var_array[xx]==y ist.

%VT@xx - EXPERIMENTAL Ersetzen durch ein Wort aus einer Textliste,
         Variable var_array[xx] zeigt auf die Stelle in der Liste
         (z.B. sehr kalt, kalt, mittel, warm, heiss: abhängig vom
         Variablenwert)

Idee:
%VC@xx - Farbe in Abhängigkeit eines Variablenwertes (0 = #rot,
         1 = #grün, oder es wird direkt eine Farbe gespeichert)

Vielleicht habt ihr ja noch weitere Ideen. Übrigens, um nicht allzuviel 
Performance zu verlieren, checke ich in jedem Durchlauf nur, ob ich 
gerade eines von den seltenen %-Zeichen habe, nur dann führe ich weitere 
Kontrollen nach %V...@durch, ich denke, dadurch hält sich der 
Geschwindigkeitsverlust in Grenzen.

Steffen.
Gast #703601
Lesenswert?

Hallo

@Henning von "SOLL" kann keine Rede sein! Falls möglich hätte ich an 2 
Interesse. Irgendwie wurde ja immer wieder von Sammelbestellungen 
geredet, aber da läuft wohl nichts (leider). Mit Ätzen ist bei mir 
nichts drin.

MfG
Achim
(Firma: www.ags.tu-bs.de) #703604
Lesenswert?

@Steffen, danke erstmal für deine Hilfe. Leider habe ich mich in den 
Gesamtcode noch nicht richtig eingearbeitet, da ich das Ding aufgrund 
von Hardarebugs erst gestern zum laufen bekommen hab. Ich dachte, dü 
könntest mir evntl. die fertigen files übermitteln.

Deine Idee so etwas zu sammeln find ich gut, denn nur so wird das 
Projekt vorrangetrieben und es muss nicht jeder das Rad neuerfinden.

Gruß Henning
Gast #703617
Lesenswert?

Hallo

@Henning habe mal den Schaltplan angeschaut. Hast Du bewußt auf die 
Beschaltung an VCC/AVCC auf die 10uH und 100nF verzichtet?

MfG
Achim

Ne andere Frage: Bringt das was vom Webserver nur ne "XML" zu schicken 
und im Browser mit ner "xsl" datei nach HTML wandeln. Hat das schon mal 
jemand in Erwägung gezogen? Leider habe ich (noch) keinen solchen 
Miniwebserver um das auszutesten..
Gast #703635
Lesenswert?

Ref.: @Achim

Da will einer unbedingt Stylesheets schreiben ;-)
Auch wenn XSLT ein echt gleiles Verfahren ist, ist der 
Einarbeitungsaufwand wegen ein paar Webseiten für die Mehrheit der 
Anwender viel zu groß.
Aber wer es sich antut kann viel Platz im Flash sparen und Performance 
gewinnen, da die Ladezeiten wesentlich kürzer werden. Im Grunde brauchst 
du ja nur den <HTML/> - Teil durch dein <?xml/> zu ersetzen und das 
Stylesheet von einem anderen Host ziehen.
Gast #703657
Lesenswert?

hmmm...fertigen Code?

Das Problem ist, dass bei mir einige Änderungen am Gesamtsystem 
durchgeführt wurden. Aber ich sende einfach mal, was ich habe:

Änderungen (die mir gerade einfallen):
 - Ansteuerung eines ks0108-Displays über die stdio (ich hab es mal raus
   genommen, und hoffe, dass es funktioniert
 - anderen Schaltplan --> andere enc28j60.c (ich hab mal die Original 
von
   Ulrich im Anhang mit drin)
 - cmd und telnetd sind raus (auch aus der makefile, kannst ja 
probieren,
   ob es mit beiden Dateien auch noch funktioniert)
 - httpd (eigene Auswertung des Headers, Datei für Websites und 
Pictures)

wahrscheinlich hab ich noch was vergessen. Vielleicht funktioniert es 
bei dir. Vielleicht hilft es ja als Beispiel... Keine Garantie für gar 
nichts.

Steffen.
Angehängte Dateien:
Gast #703658
Lesenswert?

@Steffen S.

die Frage war ja viel einfacher seh ich gerade:

>Wie kann ich den Zustand EIN oder AUS auf der Seite anzeigen, um den
>Wert einer Variablen, die den Zustand 1 für EIN und 0 für AUS annimmt?

In der Website an die Stelle wo der Text stehen soll: %VI@04 --> es wird 
nun an der Stelle wo dieser String steht entweder "AUS" oder "EIN" 
geschrieben, je nachdem was auf var_array[04] steht.

Steffen.
(Firma: www.ags.tu-bs.de) #703660
Lesenswert?

@ Achim
Die Induktivität und den Kondensator brauchst du nur, wenn du PortA als 
ADC nutzt. (wobei ich nicht genau weiß, ob die beiden dann überhaupt 
unbedingt notwendig sind). Da ich nicht vorhabe mit dem Webserver 
irgendwelche analogen Sensoren zu betreiben habe ich LC einfach 
weggelassen, zur vereinfachung

Gruß Henning
Gast #703903
Lesenswert?

Hallo nochmal zu XML

@Werner B. nochmals zum Hintergrund:
 Ich kenne mich in der Atmel "Miniwebserver" Welt nicht aus. Meine Frage 
zielt darauf ab, Messwerte von so einem Miniwebserver zu empfangen und 
in eine "SQL Server 2005" Datenbank zu schreiben. Die Welt der 
Datenbank, XSL, XSLT etc. kenne ich, da ich beruflich damit zu tun habe.
Mein Problem ist es "Haus-Mess-Daten" mit so einem Miniserver zu 
erfassen und dort einzuschleußen. Das war der Hintergrund der XML Frage. 
Die Frage ist dann ob sich durch das Schicken einer XML-Antwort das 
Webserverprogramm vereinfachen läßt da Daten und Darstellung getrennt 
sind. Dazu sollte der "Miniwebserver" die (Mess)Daten über einen 
längeren Zeitraum puffern können (SD-Karte?) und dann werden die 
XML-Files(?) als "Bulk"-dowload in die Datenbank geleaden.

Aber das ist ne andere Baustelle und ich möchte diesen Thread nicht 
verwässern.

Falls jemand eine erprobte nicht SMD Platine (Henning? ULI? mit nem 
Magjack und I2C-Schnittstelle für Erweiterungen oder 2. Atmega drauf?) 
für ne Sammelbestellung zur Verfügung stellen (freigeben?) würde wäre 
das super. Routen und ätzen ist bei mir nicht drin, aber löten ginge 
grad noch. Die Software "draufbringen" und eventuell für mich abändern 
wäre vermutlich auch noch im Bereich des machbaren (Dank dem Forum).
Wie gesagt das ist nicht meine Welt. In diesem Zusammenhang aber ein 
DICKES LOB an das Forum....ich habe schon viel gelernt.
Insbesonderen Dank an ULI (!!!!) und seine Mitstreiter für das 
"Offenlegen" Ihrer Arbeit...

Respekt und vielen Dank
Achim
Gast #703911
Lesenswert?

Sehe ich es richtig, dass die Firmware/Website immer per ISP-Adapter in 
den Webserver gebrannt wird?
Ich benutz(t)e den Siteplayer von netmedia.com, dessen Websites man per 
Loader-Programm über Ethernet ändern kann.
Vielleicht noch ein nettes Feature (nein, ich habe den Thread bisher nur 
oberflächlich verfolgt, falls das Thema schon dran war)
Schönes Projekt übrigens!
OP Persönliche Seite #703981
Lesenswert?

Hallo,

Ja die Firmware wird zur zeit nur mit ISP eingespielt!
In der neuen Version 1_0_22 habe ich das Kommandointerface um einige 
Befehle wieder erweitert. Eine Übersicht gibt nun der Befehl HELP oder 
?. EMail von Thomas Heldt wird auch noch kommen, allerdings muß ich da 
noch einige Änderungen vornehmen! Die ersten 4 Prototypenplatinen lasse 
ich gerade Herstellen. Wenn diese OK sind, werde ich etwa 50 Stück 
herstellen lassen, für eine Sammelbestellung!

Gruß
Ulrich
Gast #704137
Lesenswert?

@Ulrich

Nur zur Rückmeldung an dich: dein Onlineserver macht bei mir Probleme. 
Die Startseite kommt noch richtig, aber wenn dann eine Lampe gewählt 
ausgewählt ist und das Senden gestartet wird, kommt eine defekte 
Webseite zurück.

Mal was anderes, die Entwicklung habe ich bis jetzt immer mit Windows XP 
gemacht. Dabei konnte ich richtig zuschauen, wie die Seiten (inbes. das 
Bild Stück für Stück aufgebaut wird). Jetzt habe ich gerade mal mein 
Linux gestartet und war extrem überrascht, wie schnell die Seite 
aufgebaut wird...Das Bild war so schnell da, dass ich fast den Eindruck 
hatte, es kam aus dem Cache (geht aber nicht, da ich Linux das letzte 
mal VOR der Entwicklung und dem Aufbau des AVR-Webservers gestartet 
hatte...

Steffen
OP Persönliche Seite #704262
Lesenswert?

Hallo,

einfach eine IF-Abfrage einfügen:
1
//Schaltet Ausgänge am AVR je nach Headerinhalt
2
//oder Startseite (POST) Schaltdaten am Ende vom Header
3
if((http_entry[index].http_auth)
4
{
5
  if (strcasestr((char*)&eth_buffer[a],"LED1=1\0")!=0){PORTA ^= (1<<PA0);}
6
  if (strcasestr((char*)&eth_buffer[a],"LED2=2\0")!=0){PORTA ^= (1<<PA1);}
7
  if (strcasestr((char*)&eth_buffer[a],"LED3=3\0")!=0){PORTA ^= (1<<PA2);}
8
}
9
break;

Gruß
Ulrich
(Firma: www.ags.tu-bs.de) #704270
Lesenswert?

@ Achim,
du kannst mit meinem Layout machen was du willst, ich habe es aber 
selber noch nicht 100% getestet. Für eine Herstellungsfirma währen 
bestimmt einige Punkte kritisch, zB. DRC oder meine schlampig 
gelayouteten Drahtbrücken. Der Link zu dem Layout ist ja weiter oben 
irgendwo in diesem Thread

--Ich nehme für nix die Verantwortung--


Gruß Henning
Gast #704283
Lesenswert?

Hier mal eine modifizierte 1_0_20 Version die HTM
Seiten von MMC liest. Der Parser zum einfügen
von Variablen in Seiten von MMC fehlt aber noch :(

Unter Linux dauert das laden einer Seite mit 10 Bildern
bei 30-70kB pro Bild ca. 5s. Unter Windows 30s.

@ Ulrich
Der Webserver läuft superstabil. Ich hab da schon einige MB
durchgeblasen.
Angehängte Dateien:
Gast #704555
Lesenswert?

@Michael Volk:

An den ntp-client habe ich auch schon gedacht und habe ntp_init und 
ntp_request mal rausgenommen, brachte aber leider auch nichts. Die 
Debug-Ausgaben brachten keine Fehlermeldung.
Gast #704609
Lesenswert?

Habe die neue Version soeben getestet, leider treten die Probleme immer 
noch auf. Könnte es vielleicht ein Hardwaredefekt sein? Mein ENC28J60 
wird ziemlich warm, also er verbraucht ziemlich viel Strom, dadurch wird 
der LM317T auch sehr warm, habe ihn auf einen Kühlkörper montiert.
Persönliche Seite #704737
Lesenswert?

Hi!
So mal mein aktueller Stand:

Schalten von 8 LED´s und beschriften eines
4-zeiligen LCD-Dispalys übers Internet.

Dazu:
Wenn LED1=an, dann IP-Tabelle auf LCD-Display anzeigen
Wenn LED2=an, dann aktuelle Raumtemp auf LCD anzeigen, Sensor DS1621

LED8 fährt ein Servo und steuert die Webcam auf die Webserver-Platine
bzw. auf ein Breadboard, auf dem der Temp-Sensor seine Arbeit tut.

Die Webcam läuft über einen PC :)

Viel Spass beim probieren,
Micha

http://mikrocontroller.homedns.org
(Firma: www.ags.tu-bs.de) #705149
Lesenswert?

@ Achim & Co.

Moin,
falls jetzt noch Interesse besteht, hab mal mein Final-Magjackboard 
geupt.
Habe es abr noch nicht geätzt, sprich, es ist noch nicht getestet. Werde 
dann aber, wenn ich Resonanz spüre, hier bescheidgeben, wenn ich es 
gebaut hab und es läuft.

http://www-public.tu-bs.de:8080/~y0027190/final%20board%20for%20123mmx71mm%20box-%20not%20tested/

Gruß Henning
Gast #705400
Lesenswert?

Hallo Mitstreiter :-)

hat sich von euch schon mal jemand Gedanken gemacht, wie man 
Zeitverläufe einfach und effizient darstellen kann? Zum Beispiel, wie 
sich ein Messwert über die Zeit verändert?

- Tabellen mit unterschiedlichen "Füllständen" nebeneinander wären 
wahrscheinlich ab 10 bis 20 Werten zu aufwendig und ineffizient (lange 
Ladezeiten).

- Bei Bildern sehe ich das Problem der Erzeugung und meist noch der 
Kompression (Simon hatte bei seinem Server ein bmp erzeugt (glaube ich)) 
und dem damit verbundenen Zwischenspeichern auf nem mega32

- gibt es mit Java-Script einfache Möglichkeiten?

- Könnte man auf SVG oder ein anderes Vektor-Format ausweichen?

- Welche Bildformate werden von gängigen Browsern eigentlich angezeigt? 
(gif, jpg, png, bmp, svg, ...???)

Steffen.
Persönliche Seite #705421
Lesenswert?

@Steffen

Ich mach mir zur Zeit erst einmal Gedanken die Messwerte z.b. stündlich 
zu speichern, ich habe am aktuellen Board keinen SD-Slot und werde die 
Messwerte wohl im EEPROM speichern.

Dann werde ich sie mit dem Balken GIF darstellen, die Ladezeit dürfte 
nicht ansteigen weil der Browser das Bild normalerweise nur beim ersten 
Mal lädt und danach aus dem Cache nimmt.

Sobald ich wieder Zuhause bin werde ich hoffentlich bald ein Board mit 
SD-Slot fertig haben und dort dann die Messwerte speichern.

Eine Darstellung als "Kurve" wäre natürlich unheimlich toll, aber bei 
mir wird langsam der Speicher eng im m644er ;)
Gast #706033
Lesenswert?

@ Ulrich
>Habe die Version 1.0.24 online gestellt!

Coole Idee Hilfetexte in cmd.c hinzuzufügen.
Sind ja NUR 200 Bytes RAM. Schmeiß das bitte schnell wieder raus.

Pack die Hilfe doch einfach in eine help.txt.
Kann man sich dann ausdrucken und offline lesen.

>Ich mach mir zur Zeit erst einmal Gedanken die Messwerte z.b. stündlich
>zu speichern, ich habe am aktuellen Board keinen SD-Slot und werde die
>Messwerte wohl im EEPROM speichern.

Zu EEPROM und SD hätte ich da noch ein paar Anmerkungen:
Der derzeitige Stack läuft zu 100% in Interrupts.

Probleme:
Ich kann zur Zeit Seiten z.B. von einer SD lesen.
Das passiert im Interrupt. Die SD kann ich aber, weil
der Stack komplett in Interrupts läuft, nicht beschreiben !
Warum nicht ? Weil ein ETH Interrupt mir die Schreibroutine
jederzeit unterbrechen kann. Das gleiche gilt fürs EEPROM.

Ein Zitat was ich hier im Forum mal gefunden habe:
"Interrupts so lang wie nötig und so kurz wie möglich."

Denk mal drüber nach Ulrich.
Gast #706392
Lesenswert?

Hallo,

gibt es eigentlich eine Mindestlänge für eine Nachricht, die ich mit 
Daten füllen muss, oder werden fehlende Zeichen bis zur Mindestmenge 
durch nullen oder Leerzeichen ersetzt? Ich konnte dahingehend nichts 
finden.

Aufgefallen ist mir das, als ich einen ganz kurzen Header von 40 Zeichen 
senden wollte, da ist dann beim Client immer auch ein Teil von dessen 
Anfrage mit angekommen.

Gruß
Heiko.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren