Forum: Projekte & Code Webserver ATmega32/644DIP ENC28J60


von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier mal wieder eine Betaversion habe nach den wünschen von Holger jetzt 
mal nicht die ganze Stackverwaltung in den Interrupt gelegt. Mal sehen 
wie die so läuft!

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

Kann ich den LM317T mit 3 Kabeln verlängern, damit ich ihn auf einen 
größeren externen Kühlkörper montieren kann? Oder könnte es dabei zu 
Störungen durch die Verlängerung kommen?

von Gerd G. (elektrikser)


Lesenswert?

Steffen S. wrote:
> Kann ich den LM317T mit 3 Kabeln verlängern, damit ich ihn auf einen
> größeren externen Kühlkörper montieren kann? Oder könnte es dabei zu
> Störungen durch die Verlängerung kommen?

10-20cm sollten gut funktionieren. Länger würde ich es nicht machen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Beta hat noch einen Bug bin gerade dieses am beheben!!

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

@Gerd G.:

Danke.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe nun die Version 1.0.26 auf meiner Homepage 
(http://www.ulrichradig.de) online.

Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Ulrich

>Die Beta hat noch einen Bug bin gerade dieses am beheben!!

Danke für die Mühe. Aber ich finde es ziemlich gruselig
SPI einmal im INT2, im Timerinterrupt und dann noch in der
Mainloop zu benutzten. Dann doch lieber NUR Interruptbetrieb
oder eben Polling. Letzteres dürfte die einzige Lösung für mein
Problem sein. Oder INT2 und Timerint. verbieten wenn man SPI
ausserhalb der Ints benutzen möchte. Ich schau mal was passiert
wenn man auf Polling umstellt.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier läuft der Stack nun im polling mode. Wie läuft der bei euch??

Gruß
Ulrich

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hi Ulrich,

>Hier läuft der Stack nun im polling mode. Wie läuft der bei euch??

Sorry konnte ich mir noch nicht ansehen.
Da war noch was in arp_request() ! NTP antwortet jetzt viel öfter
positiv.


So sieht das bei mir im Moment aus:

  //Nun ist das ARP-Packet fertig zum Senden !!!
  //Sendet das erzeugte ARP Packet
  ETH_PACKET_SEND(ARP_REQUEST_LEN, buffer);

        //Warte auf eine Antwort !
        for(unsigned char count = 0;count<20;count++)
         {
          for(unsigned long a=0;a<100000;a++){asm("nop");};
          if(eth_data_present) { eth_get(); break; }
         }

von GG_0815 (Gast)


Lesenswert?

Servus miteinander,
bin neu hier. Habe die neue Version (Atmega32) "polling" probiert, alles 
ok.

Gruß GG

von Gerd G. (elektrikser)


Lesenswert?

Webserver läuft mit Polling seit 20 Uhr ohne Probleme.

Atmega32
Enc-Version 4

Gruß Gerd

von holger (Gast)


Angehängte Dateien:

Lesenswert?

@ Ulrich

Der Dateiname des Anhanges meines letzten Postings ist
etwas irreführend. Es ist noch kein Polling ! Immer
noch mit Interrupts. Allerdings sehr kurze Interrupts.

Ich habe auch usart_write() noch etwas geändert.
usart_write() kann jetzt mit %s auch Strings aus dem RAM ausgeben.
usart_write("File found %s\r\n",http_entry[index].filename);

Altes usart.c einfach ersetzen.

Gruß
 holger

von Steffen S. (Gast)


Lesenswert?

Hallo,

Ich habe mir jetzt nochmal die debugausgaben genauer angeschaut.
Mein Problem ist ja, dass der webserver nicht immer richtig startet, 
d.h. der ENC nicht immer beim ersten Mal richtig initialiesiert wird. 
Nun ist mir aufgefallen, dass er zwar immer laut debugausgabe 
Datenpackete empfängt, aber nichts sendet, er macht 5 Sendeversuche, 
aber es kommt nichts an. Wenn ich ihn dann ein paar mal resette gehts 
dann irgendwann wieder un er läuft stabil. Woran kann das liegen?
Könnte der 25 MHz Quarz vielleicht schlecht sein?

von Bernd (Gast)


Lesenswert?

Hallo,

eine kurze Frage zur Schaltung: Ist das wirklich eine 12,6 Z-Diode oder 
wie ist die Angabe 12V6 zu verstehen? Ich finde nur welche mit 12V 
Durchlaßspannung. Ein 0,5W-Typ wird reichen, nehme ich an, oder?

Bernd

von Simon K. (simon) Benutzerseite


Lesenswert?

Mal ne Frage, ich hab nur mal flüchtig reingeschaut, aber es sieht 
tatsächlich danach aus, als würden alle Stringkonstanten zur Laufzeit im 
RAM gehalten werden bei deinem Sourcecode, Ulrich!

Mit PROGMEM bzw. PSTR() und den ganzen _P Funktionen (zB memcpy_P) 
kannst du auch Daten im Flash-Speicher handlen und hättest mehr RAM für 
zum Beispiel den Ethernet Buffer.


Btw, warum setzt ihr eigentlich den Ethernet-Buffer so niedrig? Selbst 
bei 2kB RAM kann man locker die 1500Bytes mit Ethernet-Buffer belegen. 
So müssen wenigstens keine Pakete fragmentiert ausgewertet werden.
Oder hast du noch RAM-Verbrauch durch andere Tabellen bei deinem Server?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo  @Simon K.,

Dann schaue dir den Code mal genauer an! Damit ich nicht zuviel RAM 
verschwende, passt schon Holger immer auf.

Natürlich kann ich den Ethernet Buffer größer Dimensionieren! Aber wenn 
der Webserver auch mit fragmentierten Packeten klar kommt, habe ich 
keine Probleme mit unfragmentierten. Auch wenn ich den Buffer auf 1500 
Bytes stellen würde, würde unter Suse10.3 mit Firefox z.B. die Anfrage 
fragmentiert. Für Belastungsteste und zur Problemanalyse sind kleine 
Packete besser. Jeder kann die MTU Size auch größer wählen wenn er 
meint.

>Oder hast du noch RAM-Verbrauch durch andere Tabellen bei deinem Server? 
Natürlich brauche ich Tabellen für den Stack ich muß ja mehrere offene TCP - 
Verbindungen managen.

Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Ulrich

Die 1.0.26 läuft bei mir nicht korrekt.
Als erstes musste tcp_timer_call() aus dem
Timerint raus. Sonst wurde das SPI Modul
in der Mainloop und im Timerint benutzt.
Dann knallt es :(

Aber auch dann läuft es nur schleppend.
Ich hab

 tcp_socket_process();
 udp_socket_process();

aus der Mainloop rausgenommen und wieder in check_packet() eingebaut.
Dann gehts richtig zur Sache :) Auch im Polling Mode.

von holger (Gast)


Lesenswert?

@ Ulrich

Und da ist der Übeltäter. "while" muss ein "if" sein.
Dann kann man

 tcp_socket_process();
 udp_socket_process();

wieder in die Mainloop legen.

void poll_eth (void)
{
#if USE_ENC28J60
//  while( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0)
  if( (ENC28J60_INT_PIN & (1<<ENC28J60_INT_PIN_BIT)) == 0)
        {
#endif

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Holger,

hatte heute Nachmittag schon eine neue Version 1.0.27 online gestellt da 
ich auch schon probleme hatte. Aber einfach tcp_timer_call() aus dem 
timer rauswerfen ist auch nicht gut!

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

So habe auch nun den Timer mit berücksichtigt!

von holger (Gast)


Angehängte Dateien:

Lesenswert?

@ Ulrich

>Aber einfach tcp_timer_call() aus dem
>timer rauswerfen ist auch nicht gut!

Ich meinte ja nicht KOMPLETT entfernen ;)
Ab in die Mainloop damit:

  while(1)
  {
    poll_eth();
    tcp_socket_process();
    udp_socket_process();

           if(update_arp_tcp)
            {
       arp_timer_call();
    tcp_timer_call();
    update_arp_tcp=0;
            }

Siehe Anhang.

Gruß
 holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

So habe ich es ja jetzt auch :-)

Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Ulrich
>So habe ich es ja jetzt auch :-)

Sorry deinen neuen Code hatte ich noch nicht gesehen.
Der benutzt jetzt aber wieder einen INT.
Ich glaube wir überschneiden uns hier ein wenig :(
Ich rede von Polling. Also deine 1.0.26 Poll Version.

Vieleicht sollte ich einfach auf 1.0.30 warten.

Gruß
 holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich wollte eine kurzen kleinen INT drinnen lassen, habe sonst wieder 
probleme mit RTL8019 Karten. ENC28J60 liefen aber im polling problemlos.
Aber eigentlich sollte dieser kleine Interrupt keine Probleme mehr 
bereiten.

Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Ulrich

>Aber eigentlich sollte dieser kleine Interrupt keine Probleme mehr
>bereiten.

Tut er auch nicht. Man muss sich nur mal auf eine
Vorgehensweise einigen. Die gibst du natürlich vor.
Du brauchst den INT ? Kein Problem. Ich räum dann
einfach gelegentlich mal wieder hinter dir auf
wenn du es erlaubst ;)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Ja ich wollte heute nichts mehr ändern. Es sei denn Du hast noch was für 
mich! Ich werde nur noch einige Teste fahren.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @all,

bin gerade am überlegen wie ich ein Display anbinden soll. LCD direkt am 
Port.A? Somit gehen die analogen Eingänge verloren, oder an einem 
anderen Port? Oder evt. am I2C Bus (TWI) LCD Module von EA-DOG? Was 
haltet ihr von einem NTP Server mit DCF77?? Über MMC/SD bin ich auch 
noch am nachdenken. Mir persönlich würde auch ein 64k I2C EEPROM 
reichen!

Was meint ihr?????


Gruß
Ulrich

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

EA Dog-M an SPI, sollte kaum Probleme darstellen.
3 I/O Pins liegen ja auf dem Board eh noch brach.
Wie wäre es mit einem Data-Flash?

Gruß Sascha

von Gerd G. (elektrikser)


Lesenswert?

Ich tendiere auch zu einem LCD mit SPI- oder I2C-Anschluss. Den PortA 
hätte ich gerne noch zur freien Verfügung.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

An ein Dataflash von Atmel AT45DB041B-RC habe ich auch schon gedacht, 
und hier herrumliegen.

Gruß
Ulrich

von Maik (Gast)


Lesenswert?

Eine SD/MMC Anbindung mit FAT16 wäre meiner Meinung nach super! Ich weiß 
zwar nicht was der Webserver dann für Übertragungsgeschwindigkeiten 
erzielen kann aber so könnte man viel größere Webseiten abspeichern...

von holger (Gast)


Lesenswert?

@ Maik

>Eine SD/MMC Anbindung mit FAT16 wäre meiner Meinung nach super! Ich weiß
>zwar nicht was der Webserver dann für Übertragungsgeschwindigkeiten
>erzielen kann aber so könnte man viel größere Webseiten abspeichern...


Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"

Ist doch schon vorhanden.
Ich lade meine Webseiten von MMC/SD.
Muss man nur richtig anschliessen.
Und bitte keine Dioden als Spannungsregler !

von Maik (Gast)


Lesenswert?

Wie sind denn dann so die Übertragungsraten?

von Steffen (Gast)


Lesenswert?

Hallo,

Also SD/MMC scheint mir nicht so wichtig. Es ist ja immer noch ein 
embedded Webserver. Wer viele Seiten und Inhalt darstellen möchte nimmt 
wohl eher einen "richtigen" Server ;-) Und die Ansteuerung bis hin zu 
richtigem FAT kostet ja ne Menge Ressourcen.

Der Fokus sollte (meiner Meinung nach) bei Messung, Steuerung und 
Überwachung liegen (Temperaturen/... einlesen, LEDs/Relais/... 
ansteuern, Displays/... zur Anzeige verwenden) - obwohl vielleicht ein 
weiterer Flash/EEPROM nicht schaden kann ;-)

i2c hätte den Vorteil, dass man noch weitere Peripherie anschließen 
kann.

Steffen.

von holger (Gast)


Lesenswert?

>Wie sind denn dann so die Übertragungsraten?

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

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Steffen

>Der Fokus sollte (meiner Meinung nach) bei Messung, Steuerung und
>Überwachung liegen (Temperaturen/... einlesen, LEDs/Relais/...
>ansteuern, Displays/... zur Anzeige verwenden) - obwohl vielleicht ein
>weiterer Flash/EEPROM nicht schaden kann ;-)

Das ist auch mein Gedanke, und ich meine 64kBytes für Webseiten über I2C 
reichen für einen embeddet Webserver aus. Somit könnte die interne Seite 
aus dem Flash verschwinden, und es würde immernoch alles in einem 
ATmega32 reinpassen.

Obwohl die MMC/SD Anbindung ist schon nicht schlecht vom Holger ;-)

Gruß
Ulrich

von holger (Gast)


Lesenswert?

>An ein Dataflash von Atmel AT45DB041B-RC habe ich auch schon gedacht,

Gibts pinkompatibel auch mit 2MB !
Würde ich einem I2C EEPROM auf jeden Fall vorziehen.

>Obwohl die MMC/SD Anbindung ist schon nicht schlecht vom Holger ;-)

Danke, aber der Webserver passt dann nicht mehr in einen ATMega32.
ATMega644 ist da angesagt.

von Henning S. (Firma: www.ags.tu-bs.de) (henning85)


Lesenswert?

Hallo.
nochmal an alle, die Interesse an meinem Layout hatten. Ich habe es 
getestet und es läuft super. Hier nochmal der Link:
http://www-public.tu-bs.de:8080/~y0027190/final%20board%20for%20123mmx71mm%20box-%20not%20tested/
Dort findet man die Eagle Files und einige Bilder vom fertigem Aufbau 
mit Gehäuse.
Grüße Henning

von T. P. (dadomas)


Lesenswert?

Zwecks Display; ein einfaches HD44780 für einfache Ausgabe? Einfach 
einen 8 aus 3 Baustein verwenden; die lassen sich auch kaskadieren. 
Somit hast Du z.B. 16 aus 4 (nur noch Ausgänge!).

von Gerd G. (elektrikser)


Lesenswert?

Hmmm, Dataflash wäre was feines. Allerdings wo kauft den ein 
Normalbürger? Segor scheint nur 4MB, 8Mb und 16MB zu haben.

>Zwecks Display; ein einfaches HD44780 für einfache Ausgabe? Einfach
>einen 8 aus 3 Baustein verwenden; die lassen sich auch kaskadieren.
>Somit hast Du z.B. 16 aus 4 (nur noch Ausgänge!).

So ein Display habe ich zu Hause. Gab es mal bei MIR (R.I.P.) in 
München. Mir wäre aber ein Standard-Display lieber.

von Kornelius D. (kornelius)


Lesenswert?

holger wrote:
> @ Maik
>
>>Eine SD/MMC Anbindung mit FAT16 wäre meiner Meinung nach super! Ich weiß
>>zwar nicht was der Webserver dann für Übertragungsgeschwindigkeiten
>>erzielen kann aber so könnte man viel größere Webseiten abspeichern...
>
>
> Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"
>
> Ist doch schon vorhanden.
> Ich lade meine Webseiten von MMC/SD.
> Muss man nur richtig anschliessen.
> Und bitte keine Dioden als Spannungsregler !

Klingt sehr interessant!!! Kannst du mir deinen Schaltplan mal 
zuschicken?!

Gruß
Kornelius

von holger (Gast)


Angehängte Dateien:

Lesenswert?

>Klingt sehr interessant!!! Kannst du mir deinen Schaltplan mal
>zuschicken?!

So sieht mein Board aus. Das hat mit Ulrichs Board nicht
wirklich viel gemeinsam. Glücklicherweise sind die meisten Anschlüsse
am ATMega identisch. So konnte ich mit seinem Code rumbasteln.
Ist auch ISP tauglich.

von Kornelius D. (kornelius)


Lesenswert?

holger wrote:
>>Klingt sehr interessant!!! Kannst du mir deinen Schaltplan mal
>>zuschicken?!
>
> So sieht mein Board aus. Das hat mit Ulrichs Board nicht
> wirklich viel gemeinsam. Glücklicherweise sind die meisten Anschlüsse
> am ATMega identisch. So konnte ich mit seinem Code rumbasteln.
> Ist auch ISP tauglich.

Sehr schick! Hatte auch schon mal einen Microchip Webserver mit einem SD 
Card Controller aufgebaut um den Flash zu entlasten aber der hatte eine 
maximale Übertragungsrate von 5 KB/s... Und deine Sourcedateien weiter 
oben im Forum sind aber auf dieses Board zugeschnitten?! D.h. der läuft 
auf diesem Board?

von holger (Gast)


Lesenswert?

>Und deine Sourcedateien weiter
>oben im Forum sind aber auf dieses Board zugeschnitten?! D.h. der läuft
>auf diesem Board?

Ja, musst natürlich noch nen ATMega644 dranfummeln ;)

von Sucher (Gast)


Lesenswert?

Hallo

@Holger SD Karte ist auch super, wenn man den Webserver als Danelogger 
einsetzen will! Gibs von Deinem Board auch Eagle Dateien? Oder ist das 
zu unverschämt?

MfG
Achim

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Wegen Pins für zukünftige Funktionen:

ich habe das LCD-Display an Port D2-D5 für D0-D3 des Displays und an
Port C4-C7 die Steuerung.

An Port PB4 hängt ein Servo (Webcamsteuerung), PWM über Timer0.

An Port PC0+PC1 hängt über TWI ein Temp-Sensor DS1621.

Port A hat im Moment 8 LEDs, das ist aber natürlich variabel.

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo @all,

Habe hier mal eine kleine Schaltung für ein standart LCD-Display welches 
nur 3 Anschlüsse am Webserver benötigt. (PC2,3 und 4)

Werde den Code im Webserver demnächst benutzen.

Gruß
Ulrich

von Lötlackl (Gast)


Lesenswert?

Hi,
die Routinen "usart_write_P" und "lcd_print_P" unterscheiden sich im 
Inhalt nur wenig. Läßt sich das nicht anders machen? So ähnlich like 
"stdio", oder als zusätzliche Parameterübergabe? Sollte ich, anstatt 
doof zu fragen, einfach mal selber loslegen? ;-)

mfg Lötlackl

von Steffen (Gast)


Lesenswert?

was soll das Ziel der "stdio"-ähnlichen Sache sein?

Willst du per define bestimmen können, ob du RAM oder FLASH nutzt?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Lötlackl

Das ist ja nur ein Beispiel gewesen! So kann das Display wenigstens auch 
in andere Projekte benutzt werden.

Gruß
Ulrich

von Lötlackl (Gast)


Lesenswert?

Hi,
@Steffen
> was soll das Ziel der "stdio"-ähnlichen Sache sein?
>
> Willst du per define bestimmen können, ob du RAM oder FLASH nutzt?

Nöö, man kann der stdio mitteilen, wohin sie ausgeben soll (Stichworte 
stdout, stderr).

@Ulrich
Da hast Du schon recht, ist mir eben nur aufgefallen.

mfg Lötlackl

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Zum testen die aktuelle Version von Uli samt meinen Änderungen:
LCD-Display
Temperatur-Sensor
Servo-Webcam

Gruss,
Micha

http://mikrocontroller.homedns.org/

von Steffen (Gast)


Lesenswert?

hey,

cooler Server - und das auf einem AVR. Insbesondere der Http-Kram 
gefällt mir. Sowas wie den IFRAME habe ich schon (in Gedanken - leider 
nicht mit Google) gesucht.

Eine Frage dazu. Ist es möglich, eine Website zu "embedden" die einen 
Refresh hat und dieser wird dann nur in diesem Bereich neu geladen?

Das würde mich interessieren, da ich momentan eine SVG-Datei erstelle, 
die eine (Spannungs-, Temperatur-,...)History darstellen kann. Diese 
(und nur diese) soll sich selbständig alle 2 Minuten reloaden können.

Gruß
Steffen.

von Steffen (Gast)


Lesenswert?

Achja,

zum Thema Display wollte ich noch meinen Senf geben: Ich finde es eine 
gute Idee das Display über wenige Pins anzuschließen. Somit kann es in 
einer Vielzahl an Projekten (temporär) verwendet werden. Die paar Ports 
hat man oft noch frei.

Den Ansatz könnte man ja fast noch einen Schritt weiter treiben und 
vielleicht einen tiny2313 verwenden (1,30EUR) statt eines Logikchips. 
Dann ein einfaches Protokoll hin zu dem Slave. Den Vorteil sehe ich 
darin, dass für die Kommunikation eine Art Standard verwendet werden 
kann und erst der tiny das konkrete Display ansteuert. So kann ein 
Textdisplay genauso verwendet werden wie ein Grafikdisplay.

Beispiel: Hauptcontroller hat ein paar wenige Befehle, die eigentlich 
komplett an den tiny gesendet werden (Routinen auf dem tiny sparen Flash 
auf dem Hautpcontroller):
- disp_print()
- disp_clear
- disp_line, disp_circle,... (wird nur umgesetzt, wenn es unterstützt 
wird)
...

Und dann wird der entsprechende Text auf dem (Text oder Grafik-) Display 
angezeigt. Es könnte auch eine serielle Schnittstelle dahinter hängen, 
oder ein CAN-Bus-Interface oder PAL-Encoder oder oder oder.

Leider habe ich momentan keine Zeit für solche Spielerein und freue 
mich, dass Uli und andere ihre Programme offen legen. Damit kann man 
sich auf die Anpassung konzentrieren und kommt in endlicher Zeit zu 
einem Ergebnis - so macht das Basteln dann auch Spass :-)

Gruß in die Runde
Steffen.

von VCbasic (Gast)


Lesenswert?

mal was nebenbei für was brauch ich so ein Ding?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Wofür brauche ich einen Fernseher? Warum lebe ich??

Diese Webserver ermöglicht mir das Schalten, Steuern und Überwachen von 
jedem Ort auf dieser Welt.

Gruß
Ulrich

von Thilo M. (Gast)


Lesenswert?

Ich habe den Thread mit Freude verfolgt, zum Thema
>für was brauch ich so ein Ding?

Ich bin dabei, mir eine Heizungssteuerung (Regelungen) für Blockspeicher 
(Solar, elektrisch zugeheizt) und noch diversen Wärmetauschern 
aufzubauen.
Mit freundlicher Genehmigung von Ulrich würde ich den Webserver dort 
integrieren, um den Status (Temperaturen usw.) ansehen (mitloggen) zu 
können und ggf. neu zu parametrieren. Falls machbar auch übers www.

Ist glaub' ich ein schöner Einsatzzweck.

;-)

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Steffen
Hi!
Danke für die Blumen, an dem html habe ich auch ne ganze Zeit gesessen.
Das mit dem automatischen refresh habe ich auch im Hinterkopf.
Das geht mit Ajax ganz gut, lass mir mal ein paar Minuten... :)

Gruss,
Micha

von Robin T. (Gast)


Lesenswert?

Kann mir jemand das Ethernet IC für den Server zu verkaufen?
Bei sontwo wollte ich das nicht bestellen wegen Versand->Ein 
Bauteil=Lohnt sich nicht.

Ein gepolsterter Umschlag(unversichert) währe vollkommen i.O.


Danke schonmal

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Steffen
Hi!
Das obere, rechte Fenster mit der Temperaturanzeige
wird nun alle 5s aktualisiert, AJAX sei Dank.

Im Moment spielt DynDNS verrückt, deshalb hier die ip: 
http://91.66.67.178

Gruss,
Micha

von Steffen (Gast)


Lesenswert?

@Michael

Bei mir funktioniert es nicht. Es steht nur "Lade..." und dann passiert 
nichts mehr in dem Fenster oben rechts. Ich habe hier XP und Firefox 
2.0.0.9. Kann es vielleicht daran liegen, dass gerade zu viele darauf 
zugreifen? (Der Rest der Seite funktioniert und wird angezeigt)

Aber ich habe mich gestern Nacht auch noch mal kurz in Ajax eingelesen. 
Damit sollte es auf jeden Fall gehen.

Vielleicht komme ich am WE noch mal dazu, einen Blick auf den Server zu 
werfen :-)


Steffen.

von Steffen (Gast)


Lesenswert?

hat gerade geklappt, war vielleicht nur überlastet :-)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Michael Volk,

Du solltest mal deine TCP Connection etwas höher setzen.


Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Ulrich

Der RAM Sparer ist mal wieder online ;)

if{ strcasestr((char*)&eth_buffer[a],"LED1=1\0")!=0){PORTA ^= (1<<PA0);}

ersetzen durch

if{ strcasestr_P((char*)&eth_buffer[a],PSTR("LED1=1"))!=0){PORTA ^= 
(1<<PA0);}

Und

memmove(&var_conversion_buffer, "EIN\0", 4);

ersetzen durch

strcpy_P(var_conversion_buffer, PSTR("EIN"));


Gruß
 holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Holger,

Danke!! Ist nun in der neuen Version geändert. Hinzu gekommen ist noch 
die Anbindung des LCDs mit 3Port Pins.


Hallo @all,

also Version 1.0.29 steht nun online!!!

Gruß
Ulrich

von Martin (Gast)


Lesenswert?

Hallo,
dies ist wirklich ein tolles vielseitiges Projekt. Mich würde noch die 
Anbindung einer Kamera interessieren. So wie beim Webserver vom Simon 
mit der MCA 25 von Sony. Würde es Probleme geben wenn ich versuchen 
würde diese zu implementieren? Hat sich schon einer daran gewagt?

Gruß

Martin

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Implementation von einer MCA25 Kamera, Source geschrieben von Simon, 
war auch schon bei meinem alten Stack vorhanden. Da ich hier auch noch 
eine MCA25 liegen habe, wäre es super wenn ich diese auch anbinden 
könnte. Also die Anbindung sollte eigentlich keine Probleme bereiten. 
Ich habe leider nicht immer die nötige Zeit (Familie). Allerdings 
Versuche ich mein bestes.

Gruß
Ulrich

von Martin (Gast)


Lesenswert?

Hallo Ulrich,

vielen Dank für die schnelle Antwort. Ich wollte weder meckern noch 
Druck ausüben. Ich wollte mich nur vergewissern ob es grundsätzlich 
möglich ist eine Kamera anzuschließen. Es wäre toll wenn Du diese mal 
integrieren könntest. Ich wollte in Kürze das Projekt nachbauen. Dann 
könnte ich auch versuchen den Kameracode einzubinden. Hast Du schon 
einen Liefertermin für die Platine?

Gruß

Martin

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Uli
Hallo!

Ich glaube ich bin auf einen Fehler gestossen:

Ich nutze mehrere Variabeln wie time (von Dir für die aktuelle Zeit),
 uptime und counter (von mir, auch in timer.h definiert).

Ich hatte mich gewundert, dass ab und zu im laufenden Betrieb
die Zeit, der Counter und Uptime auf 0 gesetzt werden.

Andere Variablen, wie zB die ARP-Tabellen, bleiben unberührt.

Es ist nachvollziehbar, wenn man eine Seite sehr oft, sehr
schnell hintereinander läd. Dann setzt er diese Variablen
unmotiviert auf 0.
Ein Reset scheint es nicht zu sein, da die Ready-Meldung über
seriell nicht kommt.

Ich habe das auch mit Deiner aktuellen Version 1.0.29,
ohne Veränderungen am Code, nachvollziehen können.
Dazu habe ich 5-10 mal die Seite schnell aktualisiert und dann per
Kommandozeile Time gecheckt.

Liegt das Problem evtl. bei mir oder könnte da im Code
was verwurschelt sein?

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Jo, den Fehler konnte ich lokalisieren!! In Version 1.0.30 ist dieser 
dann beseitigt. Diese Version kommt noch laufe der nächsten 2 Stunden.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Version 1.0.30 ist online!

Gruß
Ulrich

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Uli

Danke, Super!

Kannst Du kurz erklären, woran es lag?

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Fehler war in Stack.c ganz am ende bei der Funktion "tcp_index_del"

Gruß
Ulrich

von Steffen (Gast)


Lesenswert?

@Holger

Haben die RAM-Sparmaßnahmen eigentlich einen Einfluss auf die 
Geschwindigkeit? Oder können die Zugriffe genauso Effizient wie 
RAM-Zugriffe behandelt werden?

Gruß
Steffen.

von Sebastian H. (Gast)


Lesenswert?

Hallo,

erstmal vielen Dank Ulrich für diesen schönen Webserver.

Es läuft alles problemfrei bis auf die IP Einstellung per RS232. Mein 
Nachbau übernimmt die einfach nicht. Die Zeichen werden einfach 
ignoriert. Der Datenaustausch mit dem Telnetprogramm funktioniert, ich 
denke es liegt also nicht an der Hardware. Was mache ich da falsch? Ich 
nutze Hyperterminal 5.1 9600,8,n,1 kein handshake

Achja im Quellcode selber lässt sich die IP ändern.

Für eine Antwort bin ich sehr dankbar

Grusz Sebastian

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Uli
Danke! Der Fehler scheint behoben zu sein.
Selbst bei hohen Besucherzahlen und durch die automatische 
Aktualisierung
erzeugter Traffic führen nicht mehr zu den gelöschten Variabeln.

Eins ist noch sonderbar:
Wenn er beim Start keinen Zeitserver findet, ist er sehr schwer 
ansprechbar für normale Website-Abrufe.

Erst wenn er nach einem Reset den Zeitserver findet und die Uhr stellt,
läuft alles normal.

Vielleicht findet Deine magische Hand ja auch da ein falsches Bit.

Gruss,
Micha

von Simon Hufnagel (Gast)


Lesenswert?

Hallo zusammen!

So der Umbau meines PLatinenlaminieres ist fast abgeschlossen, jetz kann 
ich dann auch mal einsteigen :-)

@Michael: Kann es sein, dass deine Webcam ab und zu aussetzt? hab grad 
auf deinem Server gespielt und nach einer gewissen Zeit wird die 
Webcamanzeige nicht mehr aktualisiert, die automatische Aktualisierung 
funktioniert aber weiterhin...

MfG Simon

PS: Macht weiter so!!! Echt ein sehr lehrreiches Projekt :-)

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Hm, die Webcam läuft natürlich über einen PC, nicht über den AVR :)

Warums da manchmal klemmt - keine Ahnung :)

Gruss,
Micha

von Steffen S. (Gast)


Lesenswert?

Bis zu welcher Baudrate funktioniert der Datenaustausch zwischen RS323 
und telnet? Habe da ein serielles Geräte, dass ich gerne übers Netzwerk 
bedienen möchte, welches allerdings mit 38400 baud läuft. Ist das 
möglich?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @all

habe nochmal eine neue Version olnine gestellt 1.0.31!

@Steffen S.
Sollte eigentlich möglich sein! Allerdings kann es sein das der 
Ringbuffer vergrößert werden muß. Das erfolgt in der Zeile 15 von 
usart.h wenn Du einen Mega644 benutzt kannst du den Buffer bis 500 
einstellen einfach mal testen.

Gruß
Ulrich

von funker (Gast)


Lesenswert?

Hallo,

wie kann ich Zahlen aus einem Textfeld in eine Variable einlesen?
Hat jemand schon zufällig so eine Routine für die httpd.c geschrieben?

von holger (Gast)


Lesenswert?

@ Ulrich

Hier noch ein paar Stellen wo man noch RAM freimachen kann:

In stack.c

icmp_data[] braucht man nicht.

  //Add ICMP Data
/*
  for (unsigned char a = 0;a<32;a++)
  {
    eth_buffer[ICMP_DATA+a] = icmp_data[a];
  }
*/

memcpy_P(&eth_buffer[ICMP_DATA], 
PSTR("abcdefghijklmnopqrstuvwabcdefghi"),32);

In telnetd.c

    memcpy_P(&eth_buffer[TCP_DATA_START],
        PSTR("Start Telnet Server:\r\n"),22);

In http_get.c

  memcpy_P(&eth_buffer[TCP_DATA_START],
      PSTR("GET /xampp/index.php HTTP/1.1\r\nHost: 
192.168.0.99\r\nConnection: Keep-Alive\r\n\r\n"),77);


Ergibt zusammen einen schönen Batzen den man besser auf
die MTU_SIZE drauflegen kann :)

Gruß
 Holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Holger,

habe die Änderungen übernommen. Danke!

Gruß
Ulrich

von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Jungs,

ich habe ja vor einiger Zeit mal wegen "History"-Funktion angefragt. 
Dabei habe ich mich dann für die Umsetzung per SVG-Datei entschieden. 
Vorteil/Nachteil:
+ Vektorformat
+ XML-Basis --> Bilddaten können "einfach" per Text erstellt werden
+ recht sparsames Format für die Darstellung von Linien

- Browser muss SVG unterstützen
- auch so eine XML-Datei zu erstellen ist nicht ganz so einfach
- bei einem Reload wird im Firefox kein Bild angezeigt (nicht mal das 
alte)

Hier kurz die Skizze meiner Umsetzung (der Code ist definitiv nicht 
vorzeigefähig:

Erstellen des Bildes: Ich habe genauso wie bei Bilddateien oder Webpages 
ein  PROGMEM-Feld erstellt mit dem SVG-Bild (siehe Wikipedia):
1
PROGMEM char picHist_svg[] =
2
{
3
//"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" // Wird im Header mitgesendet...
4
"<svg xmlns=\"http://www.w3.org/2000/svg\"\r\n"
5
"     xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n"
6
"     xmlns:ev=\"http://www.w3.org/2001/xml-events\"\r\n"
7
"     version=\"1.1\" baseProfile=\"full\"\r\n"
8
"     width=\"500\" height=\"300\">\r\n"
9
10
//"     width=\"500\" height=\""STR(BREITE)"\">\r\n"
11
12
// Koordinatenkreuz mit Pfeilen
13
"<line x1=\"100\" y1=\"30\" x2=\"100\" y2=\"270\" fill=\"none\" stroke=\"black\" stroke-width=\"3px\"/>\r\n"
14
"<line x1=\"100\" y1=\"270\" x2=\"400\" y2=\"270\" fill=\"none\" stroke=\"black\" stroke-width=\"3px\"/>\r\n"
15
"<polygon points=\"97 30 103 30 100 20\" stroke=\"black\" stroke-width=\"3px\"/>\r\n"
16
"<polygon points=\"400 267 400 273 410 270\" stroke=\"black\" stroke-width=\"3px\"/>\r\n"
17
18
19
//"<!-- Der Schleifer -->\r\n"
20
"<polyline points=\" %VA@00 \" fill=\"none\" stroke=\"red\"\r\n stroke-width=\"3px\"/>\r\n"
21
"<polyline points=\" %VA@01 \" fill=\"none\" stroke=\"green\"\r\n stroke-width=\"3px\"/>\r\n"
22
23
"</svg>\r\n%END"
24
};

An die Stelle, an der ich die History-Linie mit dem Verlauf haben 
möchte, habe ich in bereits bekannter Form "%VA@xx" gesetzt. Dieser 
String wird durch Stützpunkte ersetzt, die dann die Linie bilden.
1
while( (http_entry[index].xml_pointer < NO_MEASURES) && (len_packet < (MTU_SIZE-(TCP_DATA_START)-100) ))
2
      {
3
          len_string = sprintf(zeiger, "  %d  %d ", getValueX(http_entry[index].xml_pointer), getValueY(http_entry[index].xml_pointer, http_entry[index].xml_item));
4
5
          zeiger += len_string;
6
          len_packet += len_string;
7
          http_entry[index].xml_pointer++;
8
      }

in der HTML-Datei steht dann in etwa folgendes:
1
<polyline points="   100  156   115  186   130  222   145  264 ..." fill="none" stroke="red"
2
 stroke-width="3px"/>

Das SVG-Bild wird allerdings nicht als img eingebunden, sondern als 
Html-Objekt. Ich habe in meiner Webpage folgendes:
1
PROGMEM char webReload_html[] = {
2
"<head>"
3
"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=iso-8859-1\" />"
4
"<meta http-equiv=\"refresh\" content=\"5\">\r\n"
5
"</head>\r\n"
6
"<body>"
7
"\n\r<br><p>\r\n"
8
!!!!!
9
"  <object data=\"hist.svg\" type=\"image/svg+xml\" width=\"501\" height=\"301\">\r\n"
10
"    <param name=\"src\" value=\"hist.svg\">\r\n"
11
"    SVG-Anzeige nicht möglich\r\n"
12
"  </object>\r\n"
13
"</p>\r\n"
14
!!!!!!
15
"</body></html>"
16
"\r\n"
17
"%END"};

Das ganze habe ich in einem IFRAME eingetragen und im Header das 
reload-meta-tag eingefügt. Damit kann ein Reload auch ohne Ajax 
durchgeführt werden. Die angezeigten Bilder kommen aus einem globalen 
Feld, welches zur Zeit mit statischen Daten "gefüttert" ist.

Noch mal deutlich: Ich beschreibe hier keine tolle Lösung, sondern nur 
eine Idee, die vielleicht von euch verwendet oder angedacht werden kann. 
Anbei ein Screenshot, wie es dann aussieht.

Steffen.

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi Steffen!
Gute Idee, werde das auch mal so versuchen!

Im Moment zeichne ich einen Temperaturverlauf mit Ulis
balke.gif als Balkengrafik :)

Achso, AJAX hat den Vorteil, dass diese nervige klicken
des IE beim Reload ausbleibt :)

Gruss,
Micha

von Steffen (Gast)


Lesenswert?

hmmm....das mit dem Klick ist natürlich ein guter Grund. Das werde ich 
mir aber erst anschauen, wenn ich es geschafft habe meinem Server ein 
wenig Leben zu geben - wenigstens ein Temp.Sensor sollte heute noch ran 
- bis jetzt sind das ja alles nur Variablen.

Steffen.

von Sucher (Gast)


Lesenswert?

Hallo

@Steffeen weiter oben habe ich schon mal xml angesprochen.....SVG ist 
doch schon ein Schritt in diese Richtung....
Ich bin leider auf dem "kleinen" Atmel nicht zu Hause...

..aber eine Einfache XML-Ausgabe der Form

<?xml version="1.0" encoding="utf-8"?>
<Temperatur>
  <t>20.3</t>
  <t>21.0</t>
  <t>21.1</t>
  ......
</Temperatur>
würde ja reichen. Die umwandlung kann man dann im Browser mit XSL 
machen.....

MfG
Achim

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich würde das Plotten komplett in JavaScript machen, Link zu einer 
fertigen Bibliothek habe ich weiter oben gepostet. Der Vorteil ist dass 
der Server dann nur noch eine (z.B. kommagetrennte) Liste der Werte 
bereitstellen muss die sich der Browser per JavaScript abholen und 
beliebig weiterverarbeiten kann.

von Steffen (Gast)


Lesenswert?

@Andreas:

Ja den Link hab ich mir schon mal angeschaut. Ich muss aber zugeben, 
dass es mir alles recht komplex erscheint. Es werden ja mehrere 
.js-Dateien eingebunden und geladen. Da ist die Belastung sicher auch 
nicht ganz gering.

Rein von der Optik, kann man dann allerdings auch tolle Sachen machen 
und der Rechenaufwand wird in Richtung Client verschoben, was dem 
kleinen 8-Bitter sicherlich gefällt :-)

Aber ich werde mich mal damit beschäftigen.

Steffen.

von Stefan (Gast)


Lesenswert?

Die .js Dateien müssen ja nicht auf dem AVR liegen....

von Christian (Gast)


Lesenswert?

Kann man eigentlich diesem MiniWebServer auch 2 IP-Adressen zuweisen?
Ich frage weil man dann ähnlich einer FritzBox eine Feste IP hat die man 
zum einstellen des Servers Verwenden kann. So das man auch die 2. IP via 
Netzwerk einstellen könnte.
Hat der Server eigentlich schon DHCP oder kommt das noch?

P.S.: Ich habe leider :-( noch keine MiniServer, aber eine Probesatz 
ENC28J60 habe ich mir schon von Microchip zusenden lassen für sage und 
schreibe 0,-EURO (Supi)

von Steffen (Gast)


Lesenswert?

@Stefan

Da ich nicht vor habe den Server im "richtigen" Internet laufen zu 
lassen, sondern mehr so als Spass in meinem Intranet, muss ich es dann 
ja woanders hosten - und nur wegen der History noch einen PC (?) laufen 
zu lassen, finde ich etwas übertrieben.

Mal sehen, was sich da basteln lässt...

Steffen.

von Stephan G. (gerthstephan)


Lesenswert?

@ Ulrich

erst einmal ein großes Lob, für deine Arbeit hier.
Ich verfolge dieses Forum mit großem Interesse und habe den kleinen
Webserver aufgebaut.

Hier bin ich auf ein kleines Problem gestoßen: Wenn ich unter Windows 
eine Telnet-Session starte, wird unmittelbar die Meldung "Sart Telnet 
Server:"
ausgegeben. Wenn ich diese Verbindung beende und erneut starte, vergehen 
nun allerdings einige Sekunden bis diese Meldung wieder erscheint.
Anders verhält es sich, wenn man nach Beenden der Telnet-Session über 
die RS232 mit der CPU kommuniziert, und dann Telnet wieder startet.

Leider kann ich die Ursache dafür in Deinem Code nicht finden.
Natürlich ist das kein riesen Problem, könnte aber auf einen noch nicht
erkannten Fehler hinweisen.

Stephan

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerth,

Der Webserver bzw. Telnetserver benötigt halt seine Zeit bis dieser 
bemerkt das die Telnetsession beendet wurde, und neugestartet wird.
Einfach nach dem Neustart der Session ein Return losschicken sollte dann 
schneller gehen.

Gruß
Ulrich

von funker (Gast)


Lesenswert?

Wie flasht man eigentlich den atmega644 mit AVR Studio? Ich kann den 
644er dort gar nicht auswählen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo funker,

Der ATmega644 kann ohne Probleme aus WinAVR programmiert werden. Die 
Fusebits werden dabei automatisch nach meinen Vorgaben gesetzt.

Hallo @all,
Die Platinen können nun über meine Homepage im Onlineshop geordert 
werden. Hierbei handelt es sich erstmal um georderte 50 Stück! Der 
Versand erfolgt dann zwischen 6.12 und 10.12.2007.

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

Hi!

habe grade ausprobiert, was passiert, wenn ich die Passwortabfrage 
einfach leer lasse und ein paar mal schnell hintereinander OK drücke, 
dann hängt der webserver ganz kurz, ist also für ca. 3 sekunden nicht 
ansprechbar. Das könnte ja vielleicht für Angreifer von außen eine 
Schwachstelle sein, den webserver durch ständige Anfragen "lahmzulegen" 
(z.b. durch eine Brute-Force-Attacke). Ist es möglich einen Schutz 
einzubauen, der nach z.b. 5-maliger falscher Passworteingabe die IP für 
eine gewisse Zeit sperrt?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Mann kann den Schutz übertreiben, bester Schutz ist die Adresse des 
Servers gar nicht preisgeben! Problem ist bei jeder Passworteingabe wird 
ein TCP Socket geöffnet max. 5 Socket kann der Webserver in der 
Defaulteinstellung öffnen. Diese werden aber nach einer definierten Zeit 
wieder geschlossen (somit ist der Server wieder erreichbar).

>Ist es möglich einen Schutz einzubauen, der nach z.b. 5-maliger falscher 
>Passworteingabe die IP für eine gewisse Zeit sperrt?

Möglich ist alles! Zu bedenken ist aber der Webserver hat nur 2kByte 
RAM. Des weiteren, selbst ist der Mann. Ich werde hier nicht anfangen, 
für jeden eine individuelle Lösung anzufertigen.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich noch mal, allerdings kann ich den Server via "Syn Flood" auch 
einfacher lahm legen. Und wenn du die IP sperrst, benutze ich z.B. ein 
Tool womit bei jeder Anfrage eine neue  IP habe.
Wie viele IPs will man sperren? 4Bytes pro IP, bedeutet bei 2kBytes RAM 
kann ich 512 Adressen aussperren. Dann habe ich aber auch kein RAM mehr 
für mein Programm. Das ist aber alles nur fiktiv, solche Programme 
dürfen ja laut unsere Regierung nicht mehr verwendet werden. Also kann 
ich jetzt als Netzwerkadmin beruhigt schlafen  (scherz).

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

@Ulrich:
ok, zugegeben, meine Idee ist vielleicht etwas übertrieben gewesen und 
würde die begrenzten RAM-Ressourcen des ATMELs sprengen.
War halt mal nur so ne Idee ;-)
Und gegen einen Syn Flood würde das ja sowieso nicht helfen.
Außer vielleicht mein Router, der kann Syn-Floods erkennen und für eine 
definierte Zeit blocken.

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich bin mal der Sache mit dem Java-Script Diagramm nachgegangen. Das, 
was Andreas oben angeboten hat ist natürlich genau das richtige, aber 
gerade wenn man alles auf den AVR legen will (.js und .html und .csv) 
dann reicht der Speicher ganz sicher nicht.

Ich hab mal schnell (relativ quick & dirty) was zusammengebastelt. Ist 
sicher noch ausbaufähig, zeigt aber, wohin ich will. Mit etwas 
trickserei (zB Zusammenfassen der Styles in einen CSS Bereich) kann man 
die Größe der .js Datei (aktuell 4kiB) noch weiter drücken.

Das Script zweckentfremdet AJAX um eine .CSV Datei zu öffnen. Die Daten 
daraus werden in ein Array geschrieben. Anschließend wird automatisch 
die Balkenbreite bestimmt (Je nach Gesamtbreite des Diagramms und Anzahl 
der Werte in der .CSV Datei).

Die Balken werden mit div's realisiert. Also sollte das ganze sowohl im 
IE als auch im FF Browser funktionieren.

Angehangen mal das .js Script zum schnellen drüberfliegen. Und hier noch 
eine Demonstration:
http://klinkerstein.m-faq.de/JsBarDia/
(Lädt alle 5 Sekunden ein neues .CSV File)

PS: Eventuell bringts dem einen oder anderen was. Eventuell wirds ja 
sogar noch von ein paar Leuten ausgebaut werden ;)

EDIT: in dem angehangenen Script ist noch ein Fehler betreffend 
IExplorer. Aber auf der Domain ist das Script schon korrigiert.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Du könntest die statischen Dateien gzip-komprimiert auf dem Controller 
speichern und mit dem Header "Content-Encoding: gzip" an den Browser 
schicken. Ist zwar nicht ganz HTTP-konform (ein Server muss auch 
unkomprimierte Daten bereitstellen können), funktioniert aber mit 
praktisch allen Browsern.

von holger (Gast)


Lesenswert?

@ Simon K.

Bei mir laufen deine Seiten von einer SD Karte.
Das größte Problem ist das du lange Dateinamen
verwendest:

JsBarDia.html
SampleData.csv

Noch schlimmer sind Dateien mit Pfadangaben:

JsBarDia-Dateien/JsBarDia.js

Da müsste man einen Pfad Parser einbauen.
Das ist einfach Unsinn auf einem uC.
Ein uC ist kein PC mit jeder Menge RAM.

Nimm kurze 8.3 DOS Dateinamen, dann kann
man den Webserver mit einem einfachen kleinen
FAT Dateisystem betreiben.

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> @ Simon K.
>
> Bei mir laufen deine Seiten von einer SD Karte.
> Das größte Problem ist das du lange Dateinamen
> verwendest:

Das ist ja erstmal kein Problem

> Noch schlimmer sind Dateien mit Pfadangaben:
>
> JsBarDia-Dateien/JsBarDia.js

Moment, das hat der Internet Explorer aber beim Speichern der Seite 
verbrochen!

> Da müsste man einen Pfad Parser einbauen.
> Das ist einfach Unsinn auf einem uC.
> Ein uC ist kein PC mit jeder Menge RAM.

Pfad Parser?

> Nimm kurze 8.3 DOS Dateinamen, dann kann
> man den Webserver mit einem einfachen kleinen
> FAT Dateisystem betreiben.

Ok, an ein FAT16 Dateisystem habe ich garnicht gedacht. Ich dachte 
eigentlich eher daran, die Javascript Datei fest in den ProgMem des AVRs 
zu legen (3kb wird man ja wohl über haben) und bei Nachfrage an den 
Webserver nach dieser Datei kann man diese ja einfach herausstreamen.

Wenn du eh ein Dateisystem hast, kannst du auch das "riesige" 
Diagrammscript von Andreas Schwarz oben nehmen.

von holger (Gast)


Lesenswert?

>> Noch schlimmer sind Dateien mit Pfadangaben:
>> JsBarDia-Dateien/JsBarDia.js

>Moment, das hat der Internet Explorer aber beim Speichern der Seite
>verbrochen!

Sicher hat er das ;) Als PC User denkt man ja auch kaum über
die Gegebenheiten auf einem uC nach.

>> Da müsste man einen Pfad Parser einbauen.
>> Das ist einfach Unsinn auf einem uC.
>> Ein uC ist kein PC mit jeder Menge RAM.

>Pfad Parser?

>JsBarDia-Dateien/JsBarDia.js

JsBarDia.js liegt im Verzeichnis JsBarDia-Dateien

Da müsste das Programm erstmal reingehen. Wenn es das kann !
Na gut, ich könnte, aber vorher müsste man den Dateinamen
den der Browser als JsBarDia-Dateien/JsBarDia.js
liefert in seine Eintzelteile zerlegen. JsBarDia-Dateien und
JsBarDia.js. Wobei JsBarDia-Dateien wieder ein langer Verzeichnisname
ist.

>Wenn du eh ein Dateisystem hast, kannst du auch das "riesige"
>Diagrammscript von Andreas Schwarz oben nehmen.

Such ich mal, und probier es aus :)

von holger (Gast)


Lesenswert?

>>Wenn du eh ein Dateisystem hast, kannst du auch das "riesige"
>>Diagrammscript von Andreas Schwarz oben nehmen.

>Such ich mal, und probier es aus :)

Runtergeladen, und mal reingesehen.
Das war wohl ein Scherz von Andreas.
Aufm ATMega, ich glaub nicht das das geht :(

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
>>> Da müsste man einen Pfad Parser einbauen.
>>> Das ist einfach Unsinn auf einem uC.
>>> Ein uC ist kein PC mit jeder Menge RAM.
>
>>Pfad Parser?
>
>>JsBarDia-Dateien/JsBarDia.js
>
> JsBarDia.js liegt im Verzeichnis JsBarDia-Dateien

Eben. Das braucht es aber nicht. Du kannst die .js Datei (so wie ich) in 
den gleichen Ordner wie die html Datei legen.
Alternativ kannst du die .js Datei auch (wie schon gesagt) in den ROM 
schreiben. (Sogar mit gz. Komprimierung, wie Andreas vorschlug)
Wenn dann ein einfaches "HTTP/1.1 GET /JsBarDia.js" vom Browser kommt, 
kannst du direkt das Script streamen.

> Da müsste das Programm erstmal reingehen. Wenn es das kann !
> Na gut, ich könnte, aber vorher müsste man den Dateinamen
> den der Browser als JsBarDia-Dateien/JsBarDia.js
> liefert in seine Eintzelteile zerlegen. JsBarDia-Dateien und
> JsBarDia.js. Wobei JsBarDia-Dateien wieder ein langer Verzeichnisname
> ist.

Siehe oben. Nur weil dein Internet Explorer beim herunterladen alles 
verzeichnistechnisch umsortiert, musst du noch lange nichts ;)

>>Wenn du eh ein Dateisystem hast, kannst du auch das "riesige"
>>Diagrammscript von Andreas Schwarz oben nehmen.
>
> Such ich mal, und probier es aus :)

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> Runtergeladen, und mal reingesehen.
> Das war wohl ein Scherz von Andreas.
> Aufm ATMega, ich glaub nicht das das geht :(

Ich hab nicht großartig reingeschaut, aber warum sollte es nicht gehen? 
Ist doch bloß eine Javascript-Sammlung. Das wird vom Server einfach nur 
zum Client gestreamt, welcher dann den Javascript-Code im Browser 
ausführt.

von holger (Gast)


Lesenswert?

Hi Ulrich,

ich hab da ne unschöne Stelle in stack.c gefunden:

  //Packeteintrag im TCP Stack finden!
  index = tcp_entry_search (ip->IP_Srcaddr,tcp->TCP_SrcPort);

  if (index >= MAX_TCP_ENTRY) //Eintrag gefunden wenn ungleich
  {
          // Auweia. Hier wird index für tcp_entry[index] benutzt
          // obwohl der Wert so groß ist das er ausserhalb des
          // Arrays struct tcp_table tcp_entry[MAX_TCP_ENTRY];
          // liegt. Ab hier ist index mindestens MAX_TCP_ENTRY.
          // Um index hier benutzen zu können müsste man so deklarieren:
          // struct tcp_table tcp_entry[MAX_TCP_ENTRY+1];

    DEBUG("TCP Eintrag nicht gefunden\r\n");
    tcp_entry_add (eth_buffer);
    if(tcp->TCP_HdrFlags & FIN_FLAG || tcp->TCP_HdrFlags & RST_FLAG)
    {
      result32 = LBBL_ENDIAN_LONG(tcp_entry[index].seq_counter) + 1;
      tcp_entry[index].seq_counter = LBBL_ENDIAN_LONG(result32);

      if (tcp_entry[index].status & FIN_FLAG)
      {
        tcp_entry[index].status = ACK_FLAG;
        create_new_tcp_packet(0,index);
      }
      tcp_index_del(index);
      DEBUG("TCP-Stack Eintrag gelöscht! STACK:%i\r\n",index);
      return;
    }
    return;
  }


Dann hab ich den Webserver heute mal im Firmennetz
angeschlossen. Zuhause läuft er perfekt, aber in der Firma
geht es nur stockend und scheinbar gehen Pakete verloren.
Die Seite wird nicht immer vollständig geladen, der Browser
hängt und wartet auf Daten. Die Sockets sind aber alle bereits leer.
Laut Debug Ausgaben wird häufig neu gesendet.
Weiss der Teufel woran das liegt. Jetzt im Moment, zuhause,
läuft alles wieder perfekt.


Gruß
 holger

von holger (Gast)


Lesenswert?

@ Simon K.

>Siehe oben. Nur weil dein Internet Explorer beim herunterladen alles
>verzeichnistechnisch umsortiert, musst du noch lange nichts ;)

Mein IE sortiert nix um. Der ist bei mir arbeitslos ;)
Ich benutze Firefox.

>Ich hab nicht großartig reingeschaut, aber warum sollte es nicht gehen?
>Ist doch bloß eine Javascript-Sammlung. Das wird vom Server einfach nur
>zum Client gestreamt, welcher dann den Javascript-Code im Browser
>ausführt.

Stimmt, aber diese Sammlung funktioniert auf dem PC schon nicht.
Da muss noch irgendein Mochi.... dazu. Das dürfte recht aufwändig
werden.

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> @ Simon K.
>
>>Siehe oben. Nur weil dein Internet Explorer beim herunterladen alles
>>verzeichnistechnisch umsortiert, musst du noch lange nichts ;)
>
> Mein IE sortiert nix um. Der ist bei mir arbeitslos ;)
> Ich benutze Firefox.

Achso, ich kannte das speziell vom Internet-Explorer. Aber ich glaube 
der Firefox macht das auch so. (Hab die Funktion nie benutzt). Auf 
meinem Webspace liegt aber alles in einem Ordner.

>>Ich hab nicht großartig reingeschaut, aber warum sollte es nicht gehen?
>>Ist doch bloß eine Javascript-Sammlung. Das wird vom Server einfach nur
>>zum Client gestreamt, welcher dann den Javascript-Code im Browser
>>ausführt.
>
> Stimmt, aber diese Sammlung funktioniert auf dem PC schon nicht.
> Da muss noch irgendein Mochi.... dazu. Das dürfte recht aufwändig
> werden.

Ja, das ist wohl eine Art Bibliothek. Die sollte es auch auf der Seite 
geben, aber Garantie kann ich dafür nicht geben.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Holger,

Ich habe den TCP Stack geändert. Das wollte ich auch geändert haben wo 
ich es mal programmiert hatte. Dieser letzte Eintrag am ende der Tabelle 
wird nur kurzzeitig benötigt. Zum zurückweisen einer Verbindung bei 
vollem Stack.

Gruß
Ulrich

von Michael U. (amiga)


Lesenswert?

Hallo,

erstmal Danke für dieses schöne Projekt.
Ich habe den Kram mal zusammengelötet (auf Lochraster, wie meist bei 
mir...), spielte auf Anhieb.

2 Ungereimtheiten sind mir in der Schaltung aufgefallen:

wenn schon Drossel für AVCC, dann die Spannung aber auch an der 
VCC-Seite zuführen, sonst nutzt das Filter dem ADC auch nicht so richtig 
viel. ;-)

Z.Diode als Überspannungsschutz ist eine gute Idee, eine flnke Sicherung 
davor wäre dann allerdings ganz angebracht. So muß man sich darauf 
verlassen, daß das Netzteil die Strombegrenzung erledigt und auch 
durchhält. Wäre mir zu riskant.

Gruß aus Berlin
Michael

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Das mit den AVCC ist richtig! Gut wenn sich mehrere Personen ein 
Schaltbild anschauen. Aber die Funktion des Webservers wird dadurch 
nicht beeinflusst. Die meisten lassen die Spule sogar raus und löten 
eine Brücke ein. Gut mit der Sicherung war ich auch schon am überlegen, 
man sollte mit allem rechnen. Somit gibt es das Eaglefile und andere 
Layoutdaten korrigiert und wie immer kostenlos auf meiner HP zum 
Downloaden.

Gruß
Ulrich

von Thilo M. (Gast)


Lesenswert?

Hallo Ulrich,
erstmal: Respekt! Das Teil ist echt klasse.
Hatte Anfangs auf unserer etwas groben Ätzanlage Probleme mit dem 
Isolate deiner EAGLE-Files. kann auch am Drucker gelegen haben ;).
Ich würde wegen Lötbarkeit und Sicherheit gegen Whisker zu einem Isolate 
von 0.8 raten.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Danke wird beim nächsten Release gemacht!

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Natürlich kann man auch ohne Probleme eine Sicherung im alten Board 
verbauen. Einfach eine 0,5A Picofuse (von Reichelt) in reihe mit der 
Verpolungsschutzdiode schalten.

Gruß
Ulrich

von Steffen (Gast)


Lesenswert?

Hallo,

bei der Diskussion mit einem Kollegen ist die Frage aufgekommen, ob es 
möglich ist, einen Webservice zu installieren. Anscheinend werden diese 
XML-basierten Services zwischen Anwendungen verwendet um Daten 
auszutauschen.

Sinnvoll erscheint es mir, wenn ich den Miniwebserver nicht zur Anzeige 
verwende, sondern im Netz einen/mehrere Sensoren habe, die über einen 
zentralen PC mit richtigem Webserver und entsprechenden Möglichkeiten 
Daten austauschen müssen.

Kann jemand von euch abschätzen, ob es möglich ist, Webservices zu 
entwickeln und damit bspw. Sensordaten über XML zu versenden. Der 
Vorteil ist, wenn man einen Javaserver o.ä. verwendet kann man Services 
wohl sehr einfach einbinden.

Gruß
Steffen.

von Martin (Gast)


Lesenswert?

Hallo Ulrich,

habe auf Deiner Web-Seite beim "Ethernet ATmega32/644 
Experimentierboard" das  im Bild angeschlossene Display gesehen. Laut 
Sourcecode wird es seriell angesteuert. Gibt es das Display fertig zu 
kaufen? Oder wo gibt es weitere Informationen hierzu?

Gruß

Martin

von Micha .. (micha68) Benutzerseite


Lesenswert?


von Henning (Gast)


Lesenswert?

Hallo Leute,
hab irgendwie immernoch nicht gerafft, wie der "Senden"-Button aus der 
webpage.h in den restlichen Code eingebunden ist. den im Html 
festgelegten wert "submit" find ich sonst nirgends. Hat es was mit dem 
"firstswitch" zutun? wenn ja, wie?
Würde gerne nen Reset-Button ins Webfrontend machen, damit ich den 
Server auch von extern reseten kann

Grüße Henning

von Steffen (Gast)


Lesenswert?

So wie ich das verstanden habe, ist der Button ja ein Standardkonstukt 
und hat also solches ein bestimmtes Verhalten. Nachdem du darauf 
klickst, sendet der Browser eine Anfrage an den Server. Je nachdem ob 
GET oder POST (bei Formular) verwendet wird, steht in der Adresszeile 
auch der Wert jedes Formularelementes (auch des Buttons).

Der Server kann nun die neue Anfrage auswerten.

Ich hoffe, ich habe jetzt nicht zu viel falsches geschrieben.

Steffen.

von Sebastian (Gast)


Lesenswert?

Hallo *,

ein bisschen OffTopic, da es hier hauptsächlich um den WebServer geht, 
aber vielleicht etwas was der ein oder andere gebrauchen kann.
Beitrag "uip für AVR/ENC"

Gruß
Sebastian

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier die Version 1.0.34! Hier zeige ich wie einfach es ist eigene 
Applikationen zu schreiben. Hinzu gekommen ist eine Applikation die UDP 
Daten empfängt und auf dem Display darstellt.

Gruß
Ulrich

von Michael U. (amiga)


Lesenswert?

Hallo,

binn immernoch ASm-Freak, eigentlich keine Ahnung von C, deshalb eine 
Frage:
1
//
2
unsigned int enc28j60PhyRead(unsigned char address)
3
{
4
  unsigned int data;
5
6
  // Set the right address and start the register read operation
7
  enc28j60Write(MIREGADR, address);
8
  enc28j60Write(MICMD, MICMD_MIIRD);
9
10
  // wait until the PHY read completes
11
  while(enc28j60Read(MISTAT) & MISTAT_BUSY);
12
13
  // quit reading
14
  enc28j60Write(MICMD, 0x00);
15
  
16
  // get data value
17
  data  = enc28j60Read(MIRDL);
18
  data |= enc28j60Read(MIRDH);
19
  // return the data
20
  return data;
21
}

fehlt da nicht beim Verknüpfen mit MIRDH in data ein links-Shift um 8 
Bit?

Gruß aus Berlin
Michael

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

das würde ich jetzt auch sagen, habe mir gerade mal das angeschaut und 
getestet. Auch wenn diese Funktion zur Zeit nicht von mir benutzt wird, 
werde ich es mal ändern. Ich dachte schon ich mache nur Fehler ;-)

Gruß
Ulrich

von sascha (Gast)


Lesenswert?

Hallo,

der praktischen Anwendung wegen gibt's hier auch ein bisschen Wetter vom 
AVR-Webserver - zumindest wenn mein Router an ist.

http://sw-penig.dyndns.org:8080/wetter.htm

Gruß
Sascha

von Steffen (Gast)


Lesenswert?

geeeenial :-)

Wenn ich irgendwann mal so weit bin, soll meiner auch sowas können. Bei 
mir hapert es aber noch gewaltig an JavaScript.

Ein Tipp/Anmerkung: Meist sind in Diagrammen die aktuellen Werte immer 
rechts. Vielleicht kannst du die Schleife (?) in der du deine Messwerte 
sendest einfach anderes herum abarbeiten.

Steffen

von Simon K. (simon) Benutzerseite


Lesenswert?

sascha wrote:
> Hallo,
>
> der praktischen Anwendung wegen gibt's hier auch ein bisschen Wetter vom
> AVR-Webserver - zumindest wenn mein Router an ist.
>
> http://sw-penig.dyndns.org:8080/wetter.htm
>
> Gruß
> Sascha

Das Javascript gibt übrigens Fehler beim Bewegen der Maus. 
Firefox+Firebug AddOn lässt grüßen!

von Bernd (Gast)


Lesenswert?

Hallo,

leider läuft mein Websrver nicht :-)
Wenn ich das LAN-Kabel reinstecke, leuchtet LED2 permanent. Gebe ich die 
IP in den Browser ein, blinkt LED3 kurz auf.
Der Router findet den Server leider auch nicht. Muß ich evtl. noch etwas 
am Router konfigurieren oder etwas in der config.h ändern (habe die 
Schaltung Ver 1.1 von Uli exakt nachgebaut)?
Bernd

von Steffen (Gast)


Lesenswert?

IP-Adresse im richtigen Subnetz eingestellt?

Was sagen die Debug-Ausgaben an der seriellen Schnittstelle?

Zum hundertsten mal kontrolliert, ob alles richtig zusammengelötet 
wurde?

Steffen.

von Bernd P. (bertron)


Lesenswert?

Hi,

>IP-Adresse im richtigen Subnetz eingestellt?
Ja

>Was sagen die Debug-Ausgaben an der seriellen Schnittstelle?
Habe leider kein serielles Kabel ....
Versuche mir mal eins zu besorgen.


Bernd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Wenn LED2 Leuchtet steht die Verbindung vom Router zum Webserver (RX)! 
Du sagst die Led am Router leuchtet nicht? Somit hast du vom Webserver 
aus gesehen ein TX Problem. Quarz OK! Tranciever OK?

Gruß
Ulrich

von Bernd P. (bertron)


Lesenswert?

Hallo Uli,

>Wenn LED2 Leuchtet steht die Verbindung vom Router zum Webserver (RX)!
Genau, LED2 leuchtet, solange das Kabel drin ist.
LED3 blinkt kurz auf wenn der Webserver empfängt.

>Du sagst die Led am Router leuchtet nicht? Somit hast du vom Webserver
>aus gesehen ein TX Problem.
Doch, die LED im Netgear-Router leuchtet auch, zeigt mit gelb sogar 
korrekt eine 10Mbit-Verbindung an.

>Quarz OK!
Denke schon. Muß ich die Frequenz in der config.h eintragen?

>Tranciever OK?
Was meinst Du mit Tranceiver? Den Übertrager?

Bernd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

also gehe ich jetzt erstmal davon aus das die Verbindung OK ist!
Betreibe mal den ENC ohne Prozessor schau dir dabei das Blinken von LED3 
an. Danach stecke den Prozessor wieder in das Board, schau dir nun 
nochmal das Blinken von LED3 an. Hier sollte nun auffallen, das die Led 
immer etwas länger mit Prozessor blinkt, wenn nicht stimmt was mit der 
Kommunikation zwischen Prozessor und ENC nicht.

Gruß
Ulrich

von Bernd (Gast)


Lesenswert?

Hallo Uli,

ich merke ohne den Atmel leider keinen Unterschied. LED2 leuchtet 
permanent, LED3 blitzt einige male (mit ein paar Sekunden Abstand) kurz 
auf, sobal ich im Browser die IP eingebe und auf Return drücke.
Bernd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

hast Du mein Layout benutzt? Sind die FuseBits des Prozessor richtig 
eingestellt. Ich gehe mal davon aus das das Programm entweder nicht 
richtig läuft, oder ein problem mit dem SPI Bus hast.

von Bernd P. (bertron)


Lesenswert?

Ja, ist Dein Layout in der neuen Version. Fusebits sollte WINAVR völlig 
alleine setzen, oder habe ich das falsch verstanden?
Bernd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Wenn über WinAVR programmiert wird werden die FuseBits richtig gesetzt! 
Jetzt wäre eine Terminalmeldung nicht schlecht :-)

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hast du die Platine nur einseitig geätzt?

von Bernd P. (bertron)


Lesenswert?

Hi Uli!

Sorry - mein Fehler... aber jetzt läufts! Zum einen hatte ich eine 
winzige Leiterbahnunterbrechung, die ich erst unter der Lupe bzw. mit 
dem Multimeter gefunden habe.
Und dann wußte ich nicht, daß ich im WINAVR vor dem 'Make all' noch ein 
'Make clean' zu machen habe.
Jetzt klappts! Trotzdem vielen Dank für Eure schnelle Hilfe.
Bernd

von Frank B. (Gast)


Lesenswert?

Geniales Projekt - auf dem Weg zum tieferen Verständnis leuchten bei mir 
allerdings schonmal ein paar Fragezeichen auf:

- Welche MAC nimmt man eigentlich? Die sollte doch weltweit unique 
sein?!

- WLAN - Accesspoint (oder was sinngemäßes?) anschließbar (und natürlich 
nutzbar;-) ?

Gruß
Frank

von Frank B. (Gast)


Lesenswert?

Nachtrag:

Über LED_B (gegen Vcc oder GND geschaltet) bestimmt man, ob der ENC in 
Halb- o. Voll-Duplex Modus initialisiert. Da ich hier im Thread beide 
Schaltungsvarianten gesehen habe, die Frage:

- Welche Variante nehmen?
- Wann ist Voll- , wann Halbduplexbetrieb üblich?

Fragender Gruß
Frank

von Sebastian (Gast)


Lesenswert?

Hallo Frank,

die MAC Adressen sollten weltweit unique sein, spielt aber keine Rolle 
welche Du nimmst, solange sie nicht schon in deinem LAN Segment 
auftaucht. Über dem LAN Segment hinaus, spielt die MAC Adresse keine 
Rolle mehr (wird auch nicht über Router weitergegeben). Du hast also die 
freihe wahl aus 2^48 MAC Adressen minus denen die Du schon in Benutzung 
hast (und denen die etwas spezieller sind wie z.B. broad-cast 
ff-ff-ff-ff-ff-ff-ff oder multi-cast - würde ich auch nicht nehmen - s. 
Wikipedia ...)
Anders sieht die Sache aus, wenn du ENC Implementierungen (im großen 
Stil) verkaufen willst. Dann wirst du vermutlich nicht darum 
herrumkommen die MAC Adressen zu kaufen (nein, du kannst natürlich auch 
weiterhin random MAC Adresse verwenden, nur Kunden wären garnicht 
begeistert wenn du nun zufällig eine MAC Adresse erwischen würdest die 
bei ihnen im LAN vorhanden ist - erst recht nicht, wenn's die MAC 
Adresse des default router ist :-) also auf alle fälle die Vendorcodes 
der gängingen Router Hersteller meiden :-) )

WLAN - also den ENC an einen AP anschließen und dann via WLAN darauf 
zugreifen - geht.

Vollduplex ist immer dann zu nehmen wenn es geht... Wenn Du nicht gerade 
uralt Hardware hast (Switche / Hubs etc.) sollten die FullDuplex können.


Gruß
Sebastian

von Sebastian (Gast)


Lesenswert?

P.S. man stellt Half/Full Duplex darüber ein, wie die LED angeschlossen 
ist????

Das kann ich nun garnicht glauben, aber kann natürlich sein, dass das so 
programmiert ist.

Gruß
Sebastian

von Micha .. (micha68) Benutzerseite


Lesenswert?


von Peter (Gast)


Lesenswert?

was ich bis heut nicht verstehe; "wie kann man nur bei tuxgraphics" 
nachsehen?!?!?
die projekte sind teilwese interessant, aber ansonsten happert es an 
allen ecken und kannten - er persönlich ist zudem unfreundliche und bei 
weitem nicht kompetent.

von Simon K. (simon) Benutzerseite


Lesenswert?

Nur der Startwert des Duplex-Modus wird durch die LED festgelegt. Der 
Modus lässt sich aber während der Initialisierung des Chips verändern.

PS: Ulrich: Du schreibst, dass die Fuse-Bits automatisch(?) gesetzt 
werden mit WinAVR(?)

Wie hast du das gemacht?

von Frank B. (Gast)


Lesenswert?

Danke für die Antworten!

Eine aber noch hinterher: Wie erkennt man denn, ob man auf halb-Duplex 
zurückfallen muß?

Gruß Frank

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die FuseBits werde im makefile gesetzt.
1
#Fuse settings for ATmega644
2
ifeq ($(MCU), atmega644)
3
  FUSE_BITS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
4
  HEX_FILE_NAME = MEGA644
5
endif
6
7
#Fuse settings for ATmega32
8
ifeq ($(MCU), atmega32)
9
  FUSE_BITS = -u -U lfuse:w:0xff:m -U hfuse:w:0xcf:m
10
  HEX_FILE_NAME = MEGA32
11
endif

Gruß
Ulrich

von Simon K. (simon) Benutzerseite


Lesenswert?

Achsoo, das funktioniert aber auch nur mit avrdude dann. Nichtoder?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

So ist es nur mit avrdude!!

Gruß
Ulrich

von Markus C. (ljmarkus)


Lesenswert?

Hallo...

kann mir einer sagen bitte wie die Fuses gesetzt bei PonnyProg werden 
müssen.

Danke, Markus

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Im Anhang die FuseBits für einen Mega32.
Einen Mega644 habe ich unter PonyProg noch nicht zum rennen bekommen.

Gruß
Ulrich

von Markus C. (ljmarkus)


Lesenswert?

Hallo..

hab die so eingestellt, und jetzt kann ich nit mehr drauf zu greifen.
Mega32

lg, markus

von Markus C. (ljmarkus)


Lesenswert?

So habe mal das STK wieder benutz un konnte nun den AVR beschreiben.

Über Hyperterminal sehe ich auch wenn ich web Web drauf zugreife.
Aber wenn ich im Terminal zb. Ver eingebe passiert nix. Sehe auch nicht 
das ich es schreibe.
Was kan da falsch sein ?

lg, markus

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ulrich Radig wrote:
> Hallo,
>
> Im Anhang die FuseBits für einen Mega32.
> Einen Mega644 habe ich unter PonyProg noch nicht zum rennen bekommen.
>
> Gruß
> Ulrich

Das mit dem MEGA644 im neuen PonyProg ist etwas komisch. Der sagt zwar 
immer Hardware nich gefunden doch wenn man auf ignorieren geht tut ers 
trotzdem.

von Markus C. (ljmarkus)


Lesenswert?

Guten Morgen,

So jetzt geht es per Terminal. Habe den MAX232 rausgenommen und über 
RS232 Spare vom STK500 gegangen.

Dann noch etwas, der Taster, laut Schaltplan ist der ja für Reset. Das 
Board funktionier nur dann wenn ich den gedrückt halte, (es ist nen 
schließer).

lg, markus

von Sucher (Gast)


Lesenswert?

Hallo

ne Frage an die "Board"-bauer. An dem Übertrager bzw. am Connector sin 
1nF 1KV Kondensatoren. 1nF ist ja kein Problem aber 1 bzw 2 KV. Wo 
bekommt man die her? Bei Reichelt habe ich keine gefunden. Von einem 
alten Board ist klar....so man hat.

MfG
Achim

von Markus C. (ljmarkus)


Lesenswert?

Guten abend..

Ich habe hier noch ein 16x1 Display liegen.
Wie wird es angeschlossen ? Habe so im Quelltext die Zuordnung der Pins 
nicht gefunden.

Danke, Markus

von Paul Baumann (Gast)


Lesenswert?

@Robin Tönniges
Hast Du bei Ponyprog mit dem Atmega 644 die Fuses genau so gesetzt, wie
Uli es oben auf seinem Bild für den Atmega32 gemacht hat?

MfG Paul

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ich habe nicht gesagt das ich den Webserver nachgebaut habe (obwohl ich 
die Platine hier schon länger liegen habe). Ich habe lediglich gesagt 
dass ich einen ATmega644 mit Ponyprog erfolgreich gefust und 
programmiert habe.

von Paul Baumann (Gast)


Lesenswert?

Ach so! Ich habe den nämlich schon mit Mega32 in Betrieb und wollte 
jetzt den Mega644 draufstecken.
Da wäre es schön, die Fuse-Einstellungen nochmal im "Klartext" statt im 
Quelltext zu haben.

MfG Paul

von Markus C. (ljmarkus)


Lesenswert?

Irgendwie bekomme ich es nicht hin, nutzte das STK500 mit dem 10poligem 
Kabel was mit ISP aufm Webserver verbunden ist.
Bekomme aber keine Verbindung zum AVR. Es ist ziemlich umständlich immer 
den AVR rauszunehmen und ins STK zu stecken.

Wo könnte da der Fehler liegen ?


Danke, Markus

von Gerd G. (elektrikser)


Lesenswert?

Markus C. wrote:
> Guten abend..
>
> Ich habe hier noch ein 16x1 Display liegen.
> Wie wird es angeschlossen ? Habe so im Quelltext die Zuordnung der Pins
> nicht gefunden.
>
> Danke, Markus

Findest du ein bißchen weiter oben in diesem Thread und zwar hier:
Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"

> Irgendwie bekomme ich es nicht hin, nutzte das STK500 mit dem 10poligem
> Kabel was mit ISP aufm Webserver verbunden ist.
> Bekomme aber keine Verbindung zum AVR. Es ist ziemlich umständlich immer
> den AVR rauszunehmen und ins STK zu stecken.
>
> Wo könnte da der Fehler liegen ?

- Quarzprobleme? Welchen verwendest du? Mal auf Kurzschlüsse und auf die 
richtigen Kondensatoren testen.
- Oder die Fuses passen nicht.
- Kontrolliere deine Platine noch einmal. Besonders um den ISP-Anschluss 
und dem Quarz. Programmiere mal ein Blinklicht, spiel das auf dem Atmega 
auf und schau ob der Pin, den du programmiert hast, toggelt.

Gruß Gerd

von Markus C. (ljmarkus)


Lesenswert?

Hallo Gerd,

das Board funktioniert ja wunderbar. Nur das flaschen geht per ISP nit.

lg, markus

von holger (Gast)


Lesenswert?

>Ich habe hier noch ein 16x1 Display liegen.
>Wie wird es angeschlossen ? Habe so im Quelltext die Zuordnung der Pins
>nicht gefunden.

Die Schaltung zum Display findest du auf der Seite von Ulrich.

von Gerd G. (elektrikser)


Lesenswert?

Welche Version verwendest du? Die Eagle-Dateien, die Ulrich anbietet?
Ich verwende noch die erste Version, die kleine Fehler enthielt, aber 
der ISP funktionierte einwandfrei.

von Markus C. (ljmarkus)


Lesenswert?

Nutzte die Version 1.1

lg, markus

von Gerd G. (elektrikser)


Lesenswert?

> Dann noch etwas, der Taster, laut Schaltplan ist der ja für Reset. Das
> Board funktionier nur dann wenn ich den gedrückt halte, (es ist nen
> schließer).

Das es ein Schließer sein soll ist korrekt. Geht das jetzt wenigstens 
richtig? Ohne das du den Taster drücken musst? Wenn der Reset nicht 
richtig beschaltet ist, dann funktioniert der ISP auch nicht.

Gib mal genau an, was klappt und was nicht.

von Bernd P. (bertron)


Lesenswert?

Hallo,

ich würde den Webserver gerne in regelmäßigen Abständen mit dem 
NTP-Zeitserver synchronisieren. Wenn ich das richtig sehe, wird das in 
der aktuellen Version nur einmal bei Programmstart gemacht.
Habe schon versucht, ein zusätzliches ntp_request einzubauen, aber das 
funktioniert irgendwie nicht...
Bernd

von Thilo M. (Gast)


Lesenswert?

Hi zusammen.
Vielleicht kann mir jemand auf die Sprünge helfen, habe grade ein Brett 
vor dem Kopf!

Ich muss vorausschicken, dass ich HTML und JAVA nicht grade beherrsche.

Ich habe Ulrichs Webserver begeistert in Betrieb genommen, nun möchte 
ich Messwerte (Variablen des AVR) in die Webseite einbetten. Dass es mit 
JAVA-Script gemacht werden muss weiß ich mittlerweiile, auch wie diese 
eingebettet werden, nur nicht, wie die Übergabe vom AVR zur 
JAVA-Varablen funktioniert.

Wäre prima wenn mich jemand in die richtige Richtung schubsen könnte!

von Paul Baumann (Gast)


Lesenswert?

Ich frage nochmal an, ob mir jemand mal die Fuse-Einstellungen für den 
ATMEGA644 im Klartext posten kann. Dort gibt es nämlich Bodlevel 0, 1, 2
statt nur Boden und Bodlevel.
Flashen konnte ich ihn mit Ponyprog, aber an die Fuses gehe ich so nicht 
gerne ran.

MfG Paul

von Thilo M. (Gast)


Lesenswert?

@ Paul:
hast du das AVR-Studio installiert?
Im Prog-Plugin (der schwarze Käfer) kannst du dir die Bedeutung der 
Fuses angucken (im Disconnectet-Modus).
Das war übrigens für mich das ausschlaggebende Argument, nicht den 
Ponyprog zu benutzen. ;)

von Steffen (Gast)


Lesenswert?

>Dass es mit JAVA-Script gemacht werden muss weiß ich mittlerweile
                                        ^^^^

:-) Dann weisst du aber was, was sonst nicht viele wissen ;-)

Ne, mal ernsthaft: Javascript ist eine Möglichkeit die Werte 
anzuzeigen, und hier im Thread eigentlich nur erwähnt, um z.B. ein 
Diagramm darzustellen. Für die einfache Anzeige eines (Mess-)Wertes geht 
es auch einfacher.

Für diesen Miniwebserver wurde die Zeichenkette %VA@0x (x=0..9) 
eingeführt. Wenn das Unterprogramm http_data_send(...) diese 
Zeichenkette in der gerade gesendeten Webseite findet (definiert in 
webpage.h) wird diese Zeichenkette durch den Wert aus der Variablen 
var_array[x] ersetzt.

Was du dir also mal anschauen solltest:
1: Schreiben der aktuellen Werte auf die Variable var_array[x]
2: in webpage.h in der Variablen PROGMEM char page1 = [...] die Zeilen 
mit %VA@0x anschauen
3: in der Routine http_data_send in httpd.c mal schauen, wie die Daten 
in die Webseite eingebettet werden.

Vielleicht hilft dir das als Hinweis, dass du den Quelltext verstehst.

Steffen.

von Thilo M. (Gast)


Lesenswert?

@ Steffen:
danke dir, das war der nötige Schubs.;)

Werde deine Tipps beherzigen!

von Paul Baumann (Gast)


Lesenswert?

@Thilo M.
Nein, ich habe keinen Programmer, der zu AVR-Studio kompatibel ist.
Mir geht es vor allem um die BODLEVEL-Fuses, denn der MC mitsamt der
Schaltung funktioniert ja schon, nur Resettet der Kerl sich immer mal 
und das hängt offenbar mit den BODLEVEL-Einstellungen zusammen. Ich habe 
mir
die Anleitung zum "Umzug" von Mega32 zu Mega644 bei Atmel geladen, kann 
aber leider kein Englisch.
Ich will ihn aber nicht unbedingt "verfusen", weil ich sonst erst wieder 
einen Adapter für meinen HV-Programmer bauen müßte.
MfG Paul

von Thilo M. (Gast)


Angehängte Dateien:

Lesenswert?

Einen Programmer brauchst du nicht, nur die Software.
Habe dir mal einen Screenshot angehängt.

von Paul Baumann (Gast)


Lesenswert?

@Thilo
Danke! Das war´s. Jetzt läuft er stabil. :-)

MfG Paul

von Henning S. (Firma: www.ags.tu-bs.de) (henning85)


Lesenswert?

Moin,
hat hier eigentlich schon wer die MCA25-Cam in den Code mit 
integriert???

Grüße Henning

von Thilo M. (Gast)


Lesenswert?

@ Steffen:
danke nochmal, läuft jetzt.
Auch wenn der Regler noch nicht dranhängt. ;)
http://hreg.dyndns.org/index.htm

von CrissCross (Gast)


Lesenswert?

@Ulrich
Super Projekt!

Könntest du auf deiner Seite noch eine History / Changelog zu den 
Änderungen bei zukünftige Versionen machen so kann man dann sehen das du 
bei einer neuen Version geändert hast.
Und könntest du bitte  auch die alten Versionen auf einer „Archiv“-Seite 
online stellen?

mfg CC

von Gerhard.G (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe gerade in der neuesten Version 0.36 gesehen, dass 
versucht wird, einen Atmega128  in das Make-File zu  intrigieren.
Ich verwende seit langem einen Atmega128. Habe nie versucht den 
kleinsten Websever zu bauen, sondern den Größten. Ich verwende ein 
Fertigmodul siehe Bild, mit unglaublichen 20 Mhz(außerhalb der Spezi, 
aber stabil). Wenn ich RS232 verwende, schalte ich um auf 16 Mhz. Kann 
dank LIBC Pascal Stangl Grafikmodule, Kartenleser, DS1307, DS1621 und 
gigantisch viele Ports verwenden.
Der optimierte Oszi des Atmega128 kann mit guten Quarzen tadellos bis 
20MHz laufen. Dank der stabilen Software habe ich nun einen tadellos 
funktionierenden Webserver.
Ich danke allen Beteiligten für die tolle Server-Software.

mfg Gerhard.G

von Sucher (Gast)


Lesenswert?

Hallo

@Gerhard woher hast du das Fertigmodul bezogen und was kostet das? Auf 
den Seiten kommt bei mir nur teilweise was lesbares...

Viele Grüße
Achim

von Gerhard G. (Gast)


Lesenswert?

Servus Archim,

hier die Adresse: Suche bei Ebay nach Atmega128, die Firma heißt 
http://myworld.ebay.de/micro-research
Der Preis ca. 30 Euro. Da gibt es auch Bilder und die Schaltung. Habe 
bereits einige Boards gekauft, der Versand dauert (Hongkong), war aber 
immer zufrieden.
Oder noch besser ... da der Dollar sehr niedrig ist:
Atmega128-Board und ENC28J60-Bord 
http://www.futurlec.com/BasicControllers.shtml

Gruß Gerhard

von Andreas W. (theslow)


Lesenswert?

> Ich verwende noch die erste Version, die kleine Fehler enthielt

Was waren das für Fehler? Bis auf die zusätzliche Sicherung kann ich so 
auf Anhieb keine Unterschiede zwischen Version 1.0 und 1.1 erkennen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Das war noch der Anschluss VCC und AVCC. Diese sind vertauscht gewesen! 
Hat aber mit der eigentlichen Funktion des Webservers nichts zu tun.

Gruß
Ulrich

von horst (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe auch Ulrichs Webserver nachgebaut und
mir ist beim Ansehen der Software und beim Ausprobieren
etwas an der "icmp_reply()" Routine aufgefallen ( siehe Anhang).

Nach diesen Anpassungen ist bei mir ( Linux/WinXp ) alles
in Ordnung.

Vielen Dank, Ulrich fuer dieses schoene Projekt.

horst

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Soeben ist die Ver. 1_0_37 raus. Habe die Änderungen in ICMP übernommen 
und eine Änderung in check_packet bei ICMP gemacht.

Gruß
Ulrich

von Martin (Gast)


Lesenswert?

Hallo,
so habe mir eine Platine erstellt und bestückt! Die Taktfrequenz und die 
ip_Adresse kann ich in der config.h anpassen. Aber wo kann ich den 
Prozessortype vorgeben? Finde im Quelltext zwar "if defined" aber 
nirgend wo "defined". Oder habe ich etwas wichtiges übersehen?

Gruß

Martin

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Prozessor wird im makefile vorgegeben!
1
# MCU name
2
#MCU = atmega32
3
MCU = atmega644
4
#MCU = atmega128

von Martin (Gast)


Lesenswert?

Danke,
für die Antwort Ulrich. Ich muss aber blöd nachfragen! Die Angabe im 
Makefile hat Einfluss auf "#if defined (_AVR_ATmega644_)" in der 
timer.c? Wo erfolgte die Umsetzung?

Gruß

Martin

von Simon K. (simon) Benutzerseite


Lesenswert?

Ganz einfach: Der Compiler bekommt beim Aufruf über make (make wiederum 
parst das Makefile) die Preprozessor-Defines (und somit auch den 
AVR-Typ) per Kommandozeilenparameter übergeben.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier mal eine Bauteileliste mit den Bestellnummern von Reichelt.

Gruß
Ulrich

von Sucher (Gast)


Lesenswert?

Hallo

@Ulli vielen Dank für Deine Bauteileliste....noch ne blöde Frage... in 
manchen Schaltungen haben die C19/20 eine Spanungsangabe im KiloVolt 
Bereich die von Reichelt haben nur bis 100V.
Kannst Du das kurz erklären?

MfG
Achim

von Markus C. (ljmarkus)


Lesenswert?

Guten Morgen.

Als erstes, ich habe mit C keine erfahrungen. g

Möchte folgendes nutzen,
auf UDP Port 6454 soll empfangen werden und die Anwendung abgearbeitet 
werden.

stack.c
1
UDP_PORT_ITEM UDP_PORT_TABLE[MAX_APP_ENTRY] = // Port-Tabelle
2
{
3
  {6454,artnet},
4
  {0,0},
5
  {0,0} 
6
};

so, wie geht es nun weiter ? Stehe da gerade auf dem Schlauch etwas.

Danke, Markus

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Status: Zur Zeit versuche ich eine Philips DC-3840 Kamera an den 
Webserver anzubinden. Ich hoffe doch das ich bald hier Ergebnisse dazu 
liefern kann.
Diese Kamera benutzt den gleichen Chip wie die CAM_C328 und ist 
technisch gesehen fast identisch.

Gruß
Ulrich

von Henning S. (Firma: www.ags.tu-bs.de) (henning85)


Lesenswert?

Hallo Ulrich,
wolltest Du nicht ursprünglich die MCA-25 implementieren? Wieso hast Du 
Dich umentschieden? Gibt es mit der MCA Probleme oder ist die Phillips 
einfach nur besser??

Grüße Henning

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich finde die Philips eigentlich besser (optisch schöner, kleiner usw.). 
Außerdem habe ich genug Philips Kameras hier herumliegen (somit auch 
schon in meinen Shop :-) . Da inzwischen die MCA auch schwierig zu 
beschaffen ist habe ich mich für ein anderes Modell entschieden. 
Anscheinend kennen die Verkäufer den bedarf dieser MCA25 Kameras, und 
nehmen auch schon entsprechende Preise.

Gruß
Ulrich

von Henning S. (Firma: www.ags.tu-bs.de) (henning85)


Lesenswert?

Okay..
Dann werd ich mir gleich erstmal eine aus Deinem Shop sichern, denn die 
Dinger gibts sonst im Netz irgendwie nicht (5 minuten google)

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