Forum: Projekte & Code Webserver ATmega32/644DIP ENC28J60


von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier mal noch ein Webserver auf der Basis von dem ENC28J60 Chip und 
einem ATmega32 oder ATmega644 als Prozessor. Software zum Testen des 
Webservers ist auch schon dabei, sowie Bilder wie er fertig aussieht. 
Warum das ganze? Der Webserver hat eine einseitige Platine und kommt 
ohne SMD aus.

Gruss
Ulrich

von Paul Baumann (Gast)


Lesenswert?

Prima! Ich habe jetzt zwar schon einen funktionstüchtigen Webserver nach 
der ISA-CTRL-Platine und RTL8019AS als Ethernetcontroller, aber das hier 
ist mechanisch kleiner aufzubauen und auch von den Bauelementen her 
besser
zu löten.
Frage: Hast Du dort eine SD-Karten-Unterstützung mit drin?

MfG Paul

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Noch ist keine MMC/SD Unterstützung enthalten.

Gruß
Ulrich

von Paul Baumann (Gast)


Lesenswert?

Aha!
Danke für die Antwort.

MfG Paul

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Ist das noch geplant mit MMC unterstützung?

von Marko H. (vitis01)


Lesenswert?

warum habt Ihr die Restringe bei den Terminals
so klein? etwas größere Restringe machen das Bohren
und anschließende Löten etwas einfacher find ich.

von E. M. (hias)


Lesenswert?

Hallo!
Gibt es irgendwie eine "einfache" Möglichkeit, wie bei USB-Hosts, einen 
virtuellen COM-Port zu erzeugen, der dann die serielle Schnittstelle 
deines Webservers ansteuert?
So was ähnliches wie die CDC oder HID-Treiber bei USB wäre super. Ich 
hab aber noch nichts dergleichen gefunden.

MfG
Matthias

von Stefan (Gast)


Lesenswert?

Danke danke danke danke danke danke danke Ulrich!!!

Auf genau so einen Webserver habe ich von dir schon gewartet :-)
ENC, AVR, einseitige Platine, kein SMD, funktionierende Software zum 
dran weiterprogrammieren.

Einfach Perfekt!

Stefan

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Das mit dem RS232 Port ist ein Ziel von mir dazu benutze ich einen 
fertigen Treiber von Lantronix.

http://www.lantronix.com/device-networking/utilities-tools/com-port-redirector.html

Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Hi!
Kann das Beispiel schon irgendwie Ein/Ausgänge des 644 steuern?

Bin kein "C"-Mensch und habe im Quellcode auf den ersten Blick nix
gefunden, wie das funktionieren sollte.

Danke,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Im Beispiel macht er bisher nur http. Wenn ich halbwegs damit weiter 
komme stelle ich es Online.

Gruß
Ulrich

von Gast (Gast)


Lesenswert?

Hallo,

ich nehme an, dass bewusst keine Quelldokumente für den Schaltplan und 
das Layout herausgegeben wurden. Ist beabsichtigt, dies noch zu tun?

Ich könnte mir vorstellen, dass auf der Basis deiner Arbeit noch sehr 
einfach Änderungen vollzogen werden könnten. Beispielsweise könnten die 
bereits angesprochenen Restringe größer gemacht werden (oder durch 
"lange" Kupferflächen ersetzt werden) oder gleich Bauelemente statt der 
Lochraster eingesetzt werden (z. B. Motortreiber, HC595 um die Anzahl 
der Ports zu erhöhen, Stecker für Sensoren oder sonst was, Relaistreiber 
für die (12V-)Lampensteuerung per WLAN :-).

Begeisterter Gruß von einem
Gast.

von Löhlein_Erwin (Gast)


Lesenswert?

Sehr gute Arbeit respekt !

Ich werde ihn demnächst aufbauen.

Aber darf ich mal fragen, was ich überhaupt mit so einem Webserver 
machen kann? Ist nicht böse gemeint, würde nur gerne einen 
Verwendungszweck wissen.


Danke!

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Quelldateien gibt es auf meiner HP. Anwendungszweck: Der aktuelle 
Source Code schaltet über den Webserver den Port A. Dieses erfolgt sogar 
bei mir übers Internet. Also kann ich bei mir zu Hause das Licht an- und 
ausschalten :-)

Gruss
Ulrich

PS: Den aktuellen Source Code werde ich immer nur auf meiner HP 
vorstellen. Ich will diesen Server nicht unnötig mit Dateien belasten.

von Gast (Gast)


Lesenswert?

da hätte ich ja gleich mal auf die Idee kommen können, auf deiner Site 
zu schauen :-(

Schaut super aus.

Gast.

von Maik (Gast)


Lesenswert?

Ansich nicht schlecht...Hab mir die Sourcedateien nicht angekuckt aber 
wo werden die Webseiten abgespeichert? Wird der ENC gepollt oder läuft 
das über Interrupt?

Gruß
Maik

von Michael (Gast)


Lesenswert?

Hi!

Ich würde die Schaltung gerne nachbauen.

Wo bekommt man denn die speziellen Teile wie den
Übertrager oder den ENC?

Danke und Gruss,
Micha

von Thorsten F. (thorsten)


Lesenswert?

ENC zumindest bei csd-electronics.de

von TOM (Gast)


Lesenswert?

Wie sieht es mit dem Übertrager aus? Wo bekomme ich diesen Typ? Oder 
sind die auf den Netzwerkkarten alle ähnlich, do dass ich jeden 
verwenden kann (bis auf die Pinbelegung natürlich). Kann mir das jemand 
kurz erläutern?

Danke

Gruß

Thomas

von Kai R. (kairiek)


Lesenswert?

Eine Frage am Rande: Ich habe gerade den Quellcode überflogen und mir 
ist aufgefallen, dass die httpd nirgends aufgerufen wird. Hat das einen 
Grund oder hab ich beim überfliegen nur was übersehen?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Doch httpd wird aufgerufen nur etwas anders als sonst.

in Stack.c wird die Funktion in eine Tabelle eingetragen:

PORT_ITEM PORT_TABLE[] = // Port-Tabelle
{
  {80,httpd},      //erst der Port dann die aufzurufende Funktion
  {23,telnetd},
  {0,0}
};

So habe ich es auch mit den Kommandos gehalten.

Gruß
Ulrich

von Kai R. (kairiek)


Lesenswert?

Ja ok Danke, dann lag's echt nur am überfliegen. Zum Glück gibt es keine 
dummen Fragen ;-)

von Elektrikser (Gast)


Lesenswert?

>>Wie sieht es mit dem Übertrager aus? Wo bekomme ich diesen Typ?

Den kannst du auch von csd-electronics bekommen. Ich habe schon mehrere 
PC-Karten ausgeschlachtet und die Übertrager hatten eigentlich immer 
funktioniert.

von MicroMann (Gast)


Lesenswert?

> Also kann ich bei mir zu Hause das Licht an- und
> ausschalten :-)

Link bitte veröffentlichen, das will ich auch mal ausprobieren ;-)))

an, aus, an, aus, an, aus, an, aus ... (Welcher Blödmann fummelt da 
ständig an meinem Licht herum ...)

von Marvin M. (Gast)


Lesenswert?

Ein dickes "Danke" an Ulrich. Das baue ich demnächst nach, habe ich 
schon länger vorgehabt und muss nun nicht bei "null" anfangen. Super!

von Michael (Gast)


Lesenswert?

Hi!
Im CSD-Shop findet man den Übertrager, wenn man unter Suche
FB2022 eingibt.

http://www.csd-electronics.de/de/index.htm

Gruss,
Micha

von Frank B. (frank13)


Lesenswert?

So was hatte ich schon lange vor. Jetzt muß ich nicht ganz von null 
anfangen und kann gleich richtig einsteigen.

Danke dafür!!!

von Michael (Gast)


Lesenswert?

Hi!

So, Teile sind bestellt :)

Allerdings habe ich den Ferrit nicht gefunden, ist der
unbedingt notwendig?

Ich werde den 644 erst mal auf dem STK500 aufbauen und eine
kleine Platine mit dem Netzwerkkram basteln.

Mal sehn, ob das klappt...

Gruss,
Micha

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hier die Bestellnummern:

reichelt als Excel, CSD:
Anzahl Artikel E.- Preis G.- Preis
1 ATMEGA644-20PU Nummer: 30174  6.95 EUR 6.95 EUR
1 ENC28J60/SP Nummer: 30362  5.95 EUR 5.95 EUR
1 FB2022 Nummer: 17350  1.95 EUR 1.95 EUR


Gruss,
Micha

von Richard Brose (Gast)


Lesenswert?

Michael vielen Dank für die Liste!

von Festus (Gast)


Lesenswert?

Vielen Dank für die Liste, aber irgendwie fehlt die RJ-45 Buchse (oder 
hab ich die übersehen ?)

Viele Grüße,

Festus

von Michael (Gast)


Lesenswert?

Hi!

Stimmt, die habe ich auch nicht gefunden.
Hat jemand einen Tipp?

Ausserdem seht ihr, dass ich von den Kleinteilen wie C und R
jeweils 10 bestellt habe...

Gruss,
Micha

von Sirko (Gast)


Lesenswert?

Passt nicht diese von CSD?
"Modular Buchse 8 polig print"

von Michael (Gast)


Lesenswert?

Sieht gut aus, habe ich leider nicht gesehn...

von Nik B. (nikbamert)


Lesenswert?

>Allerdings habe ich den Ferrit nicht gefunden, ist der
>unbedingt notwendig?

Wird zwar vorgeschlagen, ich hab nun aber schon etwa 10 ENCs verlötet 
und einfach eine Drahtbrücke verwendet und es hat immer einwandfrei 
geklappt...ausprobieren :-)

von Kornelius D. (kornelius)


Lesenswert?

>Allerdings habe ich den Ferrit nicht gefunden, ist der
>unbedingt notwendig?

Der Ferrite Bead oder auch Ferritperle zwischen dem Übertrager und der
Versorgungsspannung dient zum Filtern von hochfrequenten Signalen auf 
der
Versorgungsspannung und sollte eine 60 Ohm Impedanz bei 100 MHz 
besitzen. Zu Testzwcken kann man diesen weglassen. Es ist allerdings 
sehr zu empfehlen diesen mit zu verlöten...gibts bei Segor. Da gibt es 
auch RJ45 Buchsen mit integrierten Übertrager von HALO electronics also 
nochmal platzsparend!

von Simon K. (simon) Benutzerseite


Lesenswert?

Sirko wrote:
> Passt nicht diese von CSD?
> "Modular Buchse 8 polig print"

Alternativ gibts bei CSD auch den "Magjack" direkt mit Übertrager 
eingebaut.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

RJ45 Buchsen mit integrierten Übertrager wollte ich nicht benutzen. Auch 
wenn diese ein Platzvorteil haben. So kann fast jede alte Netzwerkkarte 
vom Schrott wieder verwertet werden. Auf diesen findet man fast immer 
einen passenden Übertrager, Netzwerkbuchse und LEDs. Und wenn nicht 
bekomme ich die Teile zumindest auch bei Reichelt.

Gruß
Ulrich

von Rudi Rüssel (Gast)


Lesenswert?

An Stelle der Ferrite Bead kann man auch "Festinduktivität 1 µH 0,7 A" 
von CSD nehmen.
Ist ja in erster Linie dazu, um Störungen aus der Versorgung zu filtern 
und nicht noch verstärkt ans Netz abzugeben.
Sind auch gut zum filtern der Analog-Referenspannung am AtMega u.ä.

von Rudi Rüssel (Gast)


Lesenswert?

@Ulrich

Hmm, Reichelt ist diesem Zusamenhang wohl (noch)nicht die Quelle erster 
Wahl.
Die muss man wohl noch überzeugen bezüglich des ENC28J60 und des 
Übertragers.
Haben sie beides nicht.

Und alte Hardware zu fleddern, geht so lange bis das die Sollbruchstelle 
wird.
Ich weiss das aus leidvoller Erfahrung, stundenlanges Messen hätte ich 
mir sparen können, wenn "weniger Geiz, noch geiler" gewesen wäre.
Ich denke schon, dass der MagJack zum genannten Preis(CSD) nicht 
schlechter als eine Einzellösung ist.

Ich hoffe, Du hast hier ne Lawine losgetreten und man kann bald div. 
Webserverlösungen und deren Software bewundern.

von Rene Z. (renezimmermann)


Lesenswert?

Hi,

wieder mal ein super Projekt von Ulrich. Mir kam die Idee das FTP 
Protokoll zu Implementieren um dann Daten von einer SD-Karte über Nacht 
auf den FTP Server zu übertragen. Somit müsste nicht immer ein PC bei 
mir laufen.

Gruß Rene

von maddin (Gast)


Lesenswert?

hi,

wie groß ist das Interesse am Thema "Internetradio"?

ich denke das wär wirklich mal ein nützliches projekt, für mich nur 
leider in sehr großer ferne :-).

https://helixcommunity.org/projects/datatype/


m.

von Torsten E. (samson2)


Lesenswert?

Hallo maddin,

ich hätte da mit Sicherheit auch Interesse dran. Wenn's da mal was 
gäbe....

samson2

von maddin (Gast)


Lesenswert?

hmm, tja so ist das...

verweisen wollte ich eigentlich hier her:

Beitrag "Internet-Stream Radio"

aber ich denke dann wird man wohl einfacher bedient sein, es zu kaufen.

klar - wie so oft, die herausforderung treibt einen ja dazu, dinge 
selber zu machen, anstatt sie zu kaufen, doch das ziel ist mir allein zu 
fern und zeitintensiv....

-schnittstelle
-protokolle
-datenstromdecodierung
-senderauswahl
-und was weiß ich noch alles....

m.

von Voy A. (voyager)


Lesenswert?

maddin
@Torsten Enkelmann

"Internet-Stream Radio"

Hi

Falls das Interesse am Thema "Internetradio" immer noch vorhanden sein 
sollte, kann ich folgende Informationen über ein Projekt (A low cost 
portable wireless Internet radio receiver) zur Verfügung stellen. Dieses 
WLAN Radio arbeitet mit dem Shoutcast Stream Protokoll und besteht aus 
folgenden Komponenten:

AVR Microcontroller
Hardware MP3 Decoder
PCMCIA WLAN Card (Prism 2.5 chipset)
128 x 64 SED LCD-Display

Lithium Battary ----
PWM Drive for battery recharging
Battery Voltage & Current Sensor
Supply Voltage Regulator

C Code for the IAR AVR Compiler


Voy

von Simon K. (simon) Benutzerseite


Lesenswert?

Klingt sehr interessant. Also mindestens ansehen würde ich mir es :-)

von Andreas W. (andreasw) Benutzerseite


Lesenswert?


von Gast (Gast)


Lesenswert?

>http://www.gurulib.com/_project/wmp3/index.htm

wow - und das alles mit nem kleinen Atmel :-)

Mir würde es schon mal reichen, wenn ich den kleinen Server von Ulrich 
noch um den Anschluß eines Displays erweitern kann. Vielleicht dann noch 
per Weboberfläche irgendwelche Texte eingeben...

von Mike R. (thesealion)


Lesenswert?

Da noch ein Display dran zu hängen ist nicht weiter schwer.
Ich hab eine ähnliche Platine (allerdings mit einem Mega128 und nahezu 
nur SMD) mit einem DOGLCD bei mir zu hause liegen.

Leider nicht die Software noch nicht so weit wie die von Ulrich und 
irgnedwie komme ich nicht mehr so richitg zum weiterentwickeln.

von Voy A. (voyager)


Lesenswert?

Könnte man nicht die Hardware und Source von Guido Socher (A LCD display 
with ethernet interface / Tuxgraphics.org) für obiges Board anpassen?

von Erik (Gast)


Lesenswert?

Hallo Uli, Respekt zu deinem Projekt!

Wie gross wäre deiner Meinung nach der Aufwand um deinen Server als 
"Ethernet-RS232 Gateway" laufen zu lassen?
Es braucht eine "Benutzer-Oberfläche" auf die man per Ethernet und 
Browser in einem Netzwerk auf deinen Server zugreifen kann und dann kann 
man Ports am uC schalten...

Leider habe ich im Moment noch wenig Ahnung von Ethernet, ich kann 
deinen aktuellen Stand noch nicht nachvollziehen.

Gruss, erik

von Gast (Gast)


Lesenswert?

Hallo,

also das mit dem Display sehe ich rein Hardwaretechnisch nicht als 
großes Problem. Stand alone habe ich so ein KS1080(?) Display mit 128x64 
Pixeln schon mit der Bib von Ape (glaube ich) zum laufen bekommen. Ich 
sehe eher das Problem die Bib mit der Software von Ulrich zu 
verstricken, und dann vielleicht noch auf http-Anfragen eine Textmeldung 
zu erzeugen.

Leider habe ich privat kaum Zeit für sowas, und auf Arbeit kann ich das 
meinem Chef auch nur schwierig als dienstlich sinnvoll verkaufen.

Gast.

von Thomas P. (Gast)


Lesenswert?

Mensch Ulli, ich bin ja mal froh, dass ich sehe, dass auch andere 
Menschen "Zeiger auf Funktionen" auf diese Art und Weise verwenden ;-)

Bestens,

Thomas

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Tolle Sache, wenn das Layout jetzt noch als Postscript zur Verfuegung 
stuende  koennte man sich das sogar mal nachbauen ;)

Michael

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Michael G.

Wie ich in einem anderen Thread lesen konnte ist dir das Bild zu 
pixelig, 600dpi reichen bei mir. Aber wer will kann sich ja selber ein 
File aus den Eagledateien erstellen. Aber nur für den privaten gebrauch! 
Zum vekaufen von Platinen aus meinem Layout das ist nicht so gedacht.

Gruß
Ulrich

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Hallo Ulrich,

und wo finde ich diese files? In dem angehaengten Archiv ist ja nichts 
bei und auf Deiner Homepage habe ich grad auch nichts gefunden. Mir 
wuerde im Prinzip ein Postscript schon ausreichen wenn Du das Layout 
nicht rausgeben willst.

Gruss,
Michael

von Erik (Gast)


Lesenswert?

Hallo Uli

Magst du zu meiner Frage etwas oberhalb Stellung nehmen? Ich würde mich 
jedenfalls freuen :)

Gruss, erik

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Erik,

Der Webserver hat schon eine Webschittstelle zum schalten von Ports. Das 
mit der RS232 Schnittstelle und einem Display ist schon in arbeit.

@Michael G. das Layout ist auf meiner HP, dieses haben schon viele Leute 
gefunden. Ich werde hier nicht jedes Layout Format veröffentlichen wie 
es jeder will.

Gruss
Ulrich

von Erik (Gast)


Lesenswert?

Vielen Dank Uli!

Das tönt alles ausgezeichnet... Schreibst du es irgendwo hin, wenn es 
implementiert ist? Dann werde ich Anfangen, mich mit deinem Code 
internsiv zu beschäftigen, resp. versuchen es zu nachvollziehen.

von Thomas (Gast)


Lesenswert?

Servus Ulli,

was ich nicht ganz nachvollziehen kann, ist die HTTPD.

Mir ist klar, wie Du die entsprechende Funktion im HTTPD Thread auslöst; 
jedoch ist mir nicht klar wieso Du das so machst.
Wie kann ich nur meine Fraqe in Worte fassen?

Warum springst Du bei "app_status == 1" ausgerechnet in die Funktion, 
warum "app_status == 2" ausgerechnet in eine andere? Prinzipiell kann 
man doch stets Daten senden, z.B. den html-File-Inhalt sobald ein PSH 
und ACK Flag vom Clienten kommt, oder nicht?

Vielleicht kannst Du das noch ein wenig verdeutlichen.

Danke

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Thomas,

Nach einer eingabe im Browser wird zuerst der Port in Server geöffnet.

Client: SYN
Server: SYN,ACK
Client: ACK

Hierbei wird die App. nicht gestartet. Erst jetzt erfolgt vom Client 
Browser ein GET HTTP also PSH Flag gesetzt app_counter = 1.

Das Packet wird nun Stückchenweise zum Client gesendet. Bei jedem 
Stückchen empfange ich ein ACK. app_counter++ damit ich weiss welches 
Stückchen ich gesendet habe und als nächstes drann kommt. Wenn ich kein 
Ack vom Client empfange erfolgt irgendwann ein Timeout und Packet wird 
nochmal gesendet.
Ist das Packet komplett gesendet wird der Port geschlossen.

Gruß
Ulrich

von JUERGEN_ (Gast)


Lesenswert?

Hallo Ulrich,

wiedermal ein sehr schönes projekt.

nun habe ich leider schon 2 deiner vorherigen webserver...;-)

aber nicht das die platine ein problem darstellen würde.
aber da ginge mir eher eine doppelseitige platine durch den kopf.
die mann sich auch über
http://www.haka-lp.de/html/zwillingsangebot.html
fertigen lassen könnte.
und da währe ökonomisch die grösse von 100mm x max 79mm
das würde dann dort 4-stück ergeben.

schick  ;-)  und würde dann in 1/2 eurogehäuse-1 reinpasen.

ich gehe nicht davon aus,
das du selber platinen in umlauf bringen willst ?

;-) ich allerdings auch nicht!
(höchstens die eagle.brd, falls ich die habe)

Jürgen

von Thomas (Gast)


Lesenswert?

Danke; das  hab ich dann soweit.

Also wäre es auch möglich, das Paket in eine Variable zu packen und in 
der create_tcp_paket Funktion aufzuteilen und somit ACK-Abhängig die 
Teil-Pakete auf den Weg zu schicken.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

in der Create_tcp_packet Funktion wird nichts aufgeteilt das geschieht 
vorher !

Gruß
Ulrich

von Thomas (Gast)


Lesenswert?

Hallo,

schon klar; war nur so ein Gedanke von mir.

Hast Du eigentlich noch Literaturverweise? Ich arbeite an meinem Stack 
meistens nur mit Wikipedia und Wireshark; aber so ein paar 
"Protokoll-Ablauf für Dummies" Referenzen täten manchmal schon gut.

Thomas

von Erik (Gast)


Lesenswert?

Ja, zu ein paar nützlichen Links würde ich als Ethernet-Dummy auch nicht 
nein sagen.

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen,

ich habe die cmd.c /cmd.h mal erweitert damit man sich über 3 neue 
Befehle jederzeit die eigene IP, MAC und ENC Version ausgeben lassen 
kann.

Befehle:
IP = zeigt eigene IP-Adresse
MAC = zeigt eigene MAC-Adresse
VER = zeigt Version des ENC28J60 an

@Ulrich
Wäre es möglich die beiden cmd.c / cmd.h in deine Version zu übernehmen?

Ich  hatte dir auch vor ein paar Tagen eine Mail geschrieben weil ich 
gerne deinen Haftungsauschluss-Text nutzen würde, habe aber leider nie 
eine Antwort erhalten :(

Wäre es nicht besser in der main.c die Anzeige der eigenen IP-Adresse
so zu realisieren damit die IP auch optisch korrekt angezeigt wird?

usart_write("My IP: 
%1i.%1i.%1i.%1i\r\n\r\n",myip[0],myip[1],myip[2],myip[3]);

Übrigens lerne ich an deinem Code eine Menge hatte nur Bascom benutzt 
bisher aber jetzt arbeite ich mich in C ein und da hilft dein Code 
ungemein!

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Deine drei Befehle habe ich mit aufgenommen. Das die IP angezeigt wird 
habe ich schon lange realisiert. Ich würde mal dem aktuellen Source Code 
herunterladen!

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Als Grundlage  hatte ich die cmd.c aus der 0.93 genutzt, die sollte 
aktuell gewesen sein. Die Anzeige der IP-Adresse war nur beim Start 
drin, oder?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Mit der neuen Version 0.95 von mir kann auch ohne Probleme über das 
Kommandointerface die IP geändert werden.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Super Sache, besteht die Möglichkeit das die IP im internen EEPROM 
gespeichert werden kann und somit nach einem Stromausfall bedingten 
Neustart automatisch wieder die zuletzt eingestellte ist?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Thomas Heldt,

jetzt wird die IP auch im EEPROM gespeichert!

Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Hi!
Langsam!!! :)

Ich komme nicht mehr mit...
3-4 Versionen pro Tag - Respekt :)

Weiter so,
Michael

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich
Super !!!

Ich lerne echt viel dadurch das ich das alles parallel auch probiere.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Ich arbeite hier auf meinem Board mit dem Takt des ENC28J60 und habe in 
der aktuellen Version die Taktfrequenz in der config.h angepasst aber 
dann stimmt die Ausgabe auf der seriellen Schnittstelle nicht.

Erst wenn ich auch in der usart.h den Takt ändere klappt es, aber sollte
nicht die erste Definition in der config.h ausreichen?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

include mal config.h in usart.h

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Danke, klappt ;)

Wirst du doch sicher in der nächsten Version auch so machen und das
define in der usart.h sparen, oder?

von Randy N. (huskynet)


Lesenswert?

Mal eine Frage: wenn ich den ENC28J60, der Laut Datenblatt nur einen 
"10BASE-T port" besitzt, ohne Switch an ein 100BASE-T-Netzwerk 
anschließe, wird das ganze Netzwerk bis zum nächsten Switch auf 10MBit 
ausgebremst, ja?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

so ist es, aber wer benutzt noch einen Hub??

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Habe mal eine Verständnisfrage, es ist ja nirgendwo ein Gateway 
eintragbar, ist es korrekt da ja nur Anfragen von extern an den Server 
kommen und er deshalb keinen Gateway im Netz braucht um die Anfragen zu 
beantworten?

Ich möchte vom Internet aus über eine Portweiterleitung auf einer 
Fritz!Box auf den Server zugreifen, das sollte doch gehen, oder?

von jemand (Gast)


Lesenswert?

>Ich möchte vom Internet aus über eine Portweiterleitung auf einer
>Fritz!Box auf den Server zugreifen, das sollte doch gehen, oder?

Ob eine Portweiterleitung ausreichend ist, ist fraglich.
Ich hatte mal einen Server auf einem PC aufgesetzt, dabei musste der 
Router(war keine Fritzbox gewesen) so eingestellt werden, dass er dem 
Serverpc die externe IP zuweist, da die Anfragen ja auch an diese 
gestellt werden. Es gab zwar die Möglichkeit unter den 
Portweiterleitungen eine für Http-Server (Port 80) einzurichten, dies 
hat jedoch nicht funktioniert. Kann natürlich auch ein Problem dieses 
speziellen Routers gewesen sein.

>ist es korrekt da ja nur Anfragen von extern an den Server
>kommen und er deshalb keinen Gateway im Netz braucht um die Anfragen zu
>beantworten?

Was du hier beschreibst ist die NAT:
http://de.wikipedia.org/wiki/Network_Address_Translation

Wenn die Portweiterleitung so funktionier, leitet der Router die 
externen Anfragen auf Port 80 an den Webserver weiter, der bekommt die 
so, als wären die vom Router gestellt, gibt seine Antwort dann an den 
Router, der trägt die  IP des Anfragestellers ein und schickt das 
Päckchen auf seine Reise.

von Randy N. (huskynet)


Lesenswert?

@Thomas Heldt:
Ja mit der Fritz!Box ist das möglich - die NAT ist praktisch integriert. 
Einfach bei Internet->Portfreigaben eine neue Portfreigabe erstellen. 
Dort muss bei "von Port" 80, an Port die IP des Servers im LAN und "an 
Port" wieder eine 80 stehen. Die Pakete werden dann automatisch 
umgeleitet.

Einen AVR-Webserver hab ich so zwar noch nicht betrieben, aber mit dem 
PC als Webserver hat es einwandfrei geklappt. Und der AVR-Webserver ist 
bereits in Arbeit :-).

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@jemand und Randy N.

Das die Portweiterleitung funktioniert ist mir klar, sorry da ist meine 
Frage wohl falsch verstanden worden, es geht mir darum zu verstehen wie 
der AVR-Webserver die Seite ohne einen Gateway zu kennen an den 
anfragenden Client ausliefern kann.

Ich betreibe mehrere Server (Dienste) hinter der Fritz!Box und das NAT 
funktioniert super, aber alle Server haben halt auch die Fritz!Box als 
Gateway eingetragen, das ist in der Software für den AVR-Webserver aber 
nicht vorhanden, daher meine Frage.

von Randy N. (huskynet)


Lesenswert?

Ups hab garnicht die Frage, sondern nur die Antwort meines Vorgängers 
gelesen, um dann zu sagen, es geht doch :-)

Also ohne es jetzt genau zu wissen, würde ich sagen, dass dem Webserver 
der Gateway, um Anfragen von Clients aus dem Internet beantworten zu 
können, nicht bekannt sein muss. Wenn der Webserver allerdings selbst 
von anderen Servern im Internet Daten abrufen muss, muss er dies über 
den Gateway erledigen - und DANN braucht der dessen IP. Aber da das ja 
bis jetzt noch nicht in der Firmware implementiert ist, muss diese auch 
den Gateway nicht kennen - somit kann man den auch nirgends angeben.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Randy N.

Danke, genau so habe ich es mir auch gedacht ;)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

und genau so ist es.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

So der aktuelle SourceCode baut via Telnet eine Verbindung zur RS232 
Schnittstelle des AVRs auf. Eingehende Zeichen werden zur Tellnetapp. 
geschickt und umgekehrt. Somit kann ein virtueller Comport angelegt 
werden. Dazu benutze ich com0com und com2tcp.

Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Hi!
Super wäre jetzt noch die Möglichkeit, die aktuelle html-Seite
bei Abruf mit aktuellen Infos, wie zB dem Zustand von Input-Ports,
zu versehen.

Aber das hast Du wahrscheinlich in Version 0.992 eh schon drin ;)

gruss,
Michael

PS: Bin leider noch nicht zum testen gekommen, Controller
ist noch nicht da :(

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Wo werden den Diensten die Ports zugeordnet?
Finde das irgendwie nicht :(

Gruß
Thomas Heldt

von Sven (Gast)


Lesenswert?

add_tcp_app(PORT, ....);

Bitte mal genau lesen ! Sind auch Kommentare im Code !


Gruß Sven

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Sven

Ja aber genau das verstehe ich nicht wie HTTP an Port 80 gebunden wird, 
ich sehe keine 80 oder so:
1
//Trägt Anwendung in Anwendungsliste ein
2
void add_tcp_app (unsigned int port, void(*fp1)(unsigned char))
3
{
4
  unsigned char port_index = 0;
5
  //Freien Eintrag in der Anwendungliste suchen
6
  while (PORT_TABLE[port_index].port && PORT_TABLE[port_index].port!=0)
7
  { 
8
    port_index++;
9
  }
10
  if (port_index >= MAX_APP_ENTRY)
11
  {
12
    DEBUG("Zuviele Anwendungen wurden gestartet\r\n");
13
    return;
14
  }
15
  DEBUG("Anwendung wird in Liste eingetragen: Eintrag %i\r\n",port_index);
16
  PORT_TABLE[port_index].port = port;
17
  PORT_TABLE[port_index].fp = *fp1;
18
  return;
19
}

Auch sehe ich nur die leere Tabelle:
1
PORT_ITEM PORT_TABLE[MAX_APP_ENTRY] = // Port-Tabelle
2
{
3
  {0,0},
4
  {0,0},
5
  {0,0},
6
  {0,0},
7
  {0,0} 
8
};

Ich würde es gerne verstehen denn ich steige von Bascom aus um und
deshalb frage ich wenn ich etwas nicht verstehe/finde.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

httpd.c:
1
void httpd_init (void)
2
{
3
...
4
  //Serverport und Anwendung eintragen
5
  add_tcp_app (80, (void(*)(unsigned char))httpd);
6
...
7
}

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Andreas Watterott

Vielen Dank ;)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die While-Schleife sollte so aussehen der Rest ist unsinn!!!!

1
//Trägt Anwendung in Anwendungsliste ein
2
void add_tcp_app (unsigned int port, void(*fp1)(unsigned char))
3
{
4
  unsigned char port_index = 0;
5
  //Freien Eintrag in der Anwendungliste suchen
6
  while (PORT_TABLE[port_index].port)
7
  { 
8
    port_index++;
9
  }

von Gerd G. (elektrikser)


Lesenswert?

Hallo Ulrich,

habe das Wochenende genutzt und den Webserver mit Hilfe deiner 
Eagle-Dateien nachgebaut. Funktioniert prima!

Allerdings bin ich mir nicht sicher, ob du nicht den falschen 
Spannungsregler kühlst, wenn ich mir deine Bilder ansehe ;-). Der 
ENC28j60 ist ja ein kleiner Stromfresser (Imax = 250mA lt. Datenblatt) 
und damit wird der LM317 ganz schön heiß. Bei mir nimmt die komplette 
Schaltung max. 220mA bei 8VDC auf.

Vielen Dank für die Bereitstellung der Sourcen, Layouts und Pläne. Habe 
auch bei deinem Programm dazu gelernt.
Grüße Gerd G.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerd G.

Es stimmt der ENC28J60 nimmt recht viel Strom auf. Ich habe deshalb auch 
selbst den LM317 gekühlt, und nicht den LM78S05.

Gruß
Ulrich

von Sucher (Gast)


Lesenswert?

Hallo

@Ulli kannst du sagen, wieviel "Reserve"der "Stack" übrig läßt, um zum 
beispiel so 1-Wire Sensoren  (DS18S20)anzuschließen? Oder via die 1-Wire 
Master DS2482-100 bzw. DS2482-800 mit I2C....ist das möglich? Kann man 
von dir so Platinen bekommen oder gibtst du sie in einen 
(Fertiguns)-Pool...dann müßten natürlich für dich kostenlose Platinen 
rausspringen.. bei so einer SUPER Arbeit.

Danke
Achim

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Ich habe jetzt die Möglichkeit integriert einen SHT11 Sensor abzufragen, 
wie kann ich die Werte Temperatur und Luftfeuchte jetzt aus der Webseite 
anzeigen lassen?

Die cmd.c habe ich schon erweitert so das ich die Werte über die 
serielle angezeigt bekomme.

Ich möchte aber die beiden Werte halt auf der Webseite sehen, die 
Möglichkeit die Ports zu schalten ist für meine Anwendung nicht so 
interessant ;)

Bin für jedem Tipp dankbar.

Gruß
Thomas

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Prozessor hat noch genügend Reserven für sowas!! I2C uvm. will ich 
auch noch anbinden. Über eine Sammelbestellung bzw. der Verkauf der 
Platine bin ich noch am überlegen.

Der aktuelle SourceCode 1.0.2 funktioniert nun auch mit dem RTL8019 AVR 
Webserver von Holger Buss.

Das Anzeigen von Werten über das Webinterface ist schon in arbeit! Bis 
zum WE ist es dann fertig.

Gruss
Ulrich

von Gerd G. (elektrikser)


Lesenswert?

Hallo Ulrich,

>Es stimmt der ENC28J60 nimmt recht viel Strom auf. Ich habe deshalb auch
>selbst den LM317 gekühlt, und nicht den LM78S05.

Mache ich auch. Aber auf dem Foto ist es anders herum. Da war der 
Kühlkörper am 7805, oder sehe ich das falsch?

Ansonsten ist der Aufbau sehr einfach. Ich habe mir allerdings die Pads 
und teilweise die Leiterbahnen vergrößert, damit ich es einfacher habe.

>Der aktuelle SourceCode 1.0.2 funktioniert nun auch mit dem RTL8019 AVR
>Webserver von Holger Buss.

Mal sehen, ob ich das am Wochenende mit dem M128-Server zum Laufen 
bringe.Ich habe da noch einen, der nicht im Dauereinsatz ist...

Momentan bastle ich an der Anzeige der geschalteten Ausgänge. Aber ich 
bin mit meiner Version schon wieder veraltet. Mann, bist du schnell!

Gruß Gerd

von Michael (Gast)


Lesenswert?

Hi!
Ich habe den Webserver fliegend aufgebaut und nachdem mein
Router richtig konfiguriert war, klappte alles auf Anhieb!

Super, jetzt kann ich mich ans probieren machen...

Gruss,
Micha

von Michael (Gast)


Angehängte Dateien:

Lesenswert?


von Michael (Gast)


Lesenswert?

Die Leds springen hin und her :)

von Omega G. (omega) Benutzerseite


Lesenswert?

Ich glaube fast jeder der darauf zugreift schaltet mal ein bisschen. 
(Ich auch)

von Michael (Gast)


Lesenswert?

So solls sein :)

Funktioniert super!

Bin gespannt, was von Uli noch an Funktionen kommt!

von Michael (Gast)


Lesenswert?

So, nehme ihn jetzt vom Netz. Morgen wird ein zweites Netzwerkkabel
gelegt und dann kann man wieder testen.

N8,
Micha

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

Er läuft ;)

Nach vielen Stunden in denen ich nach Verbindungsunterbrechungen gesucht 
habe ist es geschafft, mein Board läuft mit Ulrichs Software einwandfrei 
;)

Ihr könnt hier allerdings nur eine LED schalten, URL

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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

So jetzt habe ich die tuxgraphics.org Software drauf und man sieht die 
Daten des SHT11 Sensors ;)

von Lars K. (larsk)


Lesenswert?

Hallo,

ich hatte das Projekt von Nik Bamert ja schonma aufgebaut, so brauchte 
ich nur die Software auszutauschen. So schnell wurde aus Device mit UDP 
Support ein Webserver :-)
Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver 
wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ?
Ansonsten sehr nette implementation.

Gruß

Lars

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

So jetzt habe ich mal die Temperaturanzeige und eine Möglichkeit hier 
die
LED ein/auszuschalten auf einer Seite.

Neue URL: http://heldt-intern.dyndns.org:81/secret

von Simon K. (simon) Benutzerseite


Lesenswert?

Lars Kessner wrote:
> Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver
> wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ?
> Ansonsten sehr nette implementation.

Das hängt von der IP/Subnetzkombination deines PCs ab. Ich empfehle eine 
Netzwerklektüre.

von Randy N. (huskynet)


Lesenswert?

@Thomas Heldt:
Blink :-)

Ich bin erstaunt, dass die Seite so schnell geladen wird. Wie schnell 
ist deine Internetverbindung? Kannst du vielleicht mal ein Bild 
draufmachen? Das würde mich mal interessieren.

Hach ich freu mich schon auf meinen ENC28J60, der hoffentlich bald 
kommt...

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Randy N.

Ich habe hier leider nur DSL2000, ich habe gerade die tuxgraphis.org 
Software drauf um den SHT11 zu nutzen, ich muss mal schauen wie ich da 
ein Bild einbinden kann, ich lerne gerade erst C und brauche deshalb 
noch etwas um da durch zu steigen teilweise ;)

von Gast (Gast)


Lesenswert?

Ja, ich finde auch, dass es eine sehr schnelle Reaktion ist. Hast du 
spezielle Optimierungen auf Geschwindigkeit vorgenommen? Mega läuft mit 
16MHz??

Wie viele Prozente nimmt eigentlich der Text für die Website für sich in 
Anspruch?

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Gast

Ich betreibe alles mit dem Takt vom ENC28J60, bei mir 12,5MHz, also wäre 
da sogar noch etwas Luft nach oben. Ich arbeite hier bei mir aber mit 
sehr guten Switches, aber dafür hängt der "Kleine" jetzt hinter ca. 50m 
Kabel und  2 Switches.

Die Seite hat nur wenig Text, allerdings werden ja die Daten des SHT11 
noch on time eingefügt.

@Alle

Wer hat schon einmal ein Bild in die Software von tuxgraphics.org 
eingefügt, ich finde da keinen Anfang :(

von Dirk (Gast)


Lesenswert?

Folgt denn eigentlich noch eine SD Karten Anbindung im FAT16 Format??? 
Das wäre dann mal ein interessanter Fortschritt...

von Michael (Gast)


Lesenswert?

Hi!
Ich denke dass 1wire, SD-Card etc. noch kommen wird.
Bedenkt bitte, dass Uli das in seiner Freizeit macht und
wir alle wissen, dass man eigentlich immer zuwenig Freizeit hat :D

Danke an Uli und weiter so!

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Jaja so ist es ich mache was ich kann!! Mit der Version 1.0.3 können nun 
Variablen und Balken eingebunden werden.

Wer den Code durchblickt zum einfügen von Variablen kann ja mal eine 
kurze Doku schreiben. Ich arbeite noch am Webserver!!

Gruß
Ulrich

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal Ulrichs Webserver 1.0.3 mit FAT12/16/32 und MMC/SD.
Statt raket.gif wird image1.jpg von MMC/SD geladen wenn
eine Karte erkannt wird. Ist noch starr reinprogrammiert.

Achtung: Ich hab da massiv an httpd.c, stack.c, main.c
und enc28j60.c/.h rumgebastelt ! Also bitte nicht Ulrich fragen
wenn was schief geht ;)

Was ist bei mir anders ?
Mein Board benutzt INT0 statt INT2. Und der Reset Pin vom
ENC28J60 wird auch vom uC gesteuert. CS der MMC/SD wird
vom SS Pin angesteuert.

Das mit dem Resetpin in enc28j60.c klappt leider
nicht immer (nach ISP prommen). Da ist noch was faul.
RESET im Terminal eingeben reicht dann oft. Sonst
ausschalten und wieder einschalten.

Ob das alles so richtig ist ? Bis jetzt geht es.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

So mit der aktuellen Version von Ulrich habe ich mal etwas gespielt und 
eigene Variablen eingebunden ;)

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

@Ulrich

Wie kann ich die Daten für ein Bild selber erzeugen?

von Gerd G. (elektrikser)


Lesenswert?

Hallo Thomas,

schau dir mal WinBin vom Ulrich an. Findest du unter Projekte. Sollte 
das sein, was du suchst.

Gruß Gerd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

In der Version 1.0.4 kann über den Befehl SV auf die Variablen 
zugegriffen werden.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Gerd G.

Danke, genau das habe ich gesucht, klappt super ;)

@Ulrich

Interessant wäre jetzt die Uhrzeit von einem NTP-Server zu holen und auf 
der Webseite an zu zeigen. Am besten über den Timer der den Uhrenquarz 
nutzt.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Bei NTP bin ich auch am überlegen! Ob nun Client oder Server mit DCF77.
Was sagt ihr?

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Also Client fände ich besser so braucht man keine weitere Hardware ;)

Für das lokale Netzwerk könnte dann ja der AVR Server als NTP-Server 
arbeiten.

von Dirk (Gast)


Lesenswert?

Hey Holger!

Was erreichst du insgesamt für eine Übertragungsgeschwindigkeit mit 
deiner SD Kartenanbindung?

Gruß
Dirk

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Zum Thema AVR Webserver und Geschwindigkeit habe ich eine gute 
Studienarbeit gefunden (Seite 63 - 64).

http://www.uni-koblenz.de/~physik/informatik/studienarbeiten/thowil.pdf

Gruß
Ulrich

von holger (Gast)


Lesenswert?

>Was erreichst du insgesamt für eine Übertragungsgeschwindigkeit mit
>deiner SD Kartenanbindung?

Das hängt extrem von der Karte ab.
Inklusive FAT Dateisystem geht das bei mir
so von 27kB/s bis 400kB/s bei 8MHz SPI Speed.
Mittelwerte versteht sich. Ohne die Daten wirklich zu
verarbeiten. Also RAW Read/Write ohne Webserver.

Der Webserver bremst das natürlich gewaltig aus.
Ein 67kB JPG Bild braucht so ca. 18 Sekunden.
Unter Windows 98/XP. Linux ist doppelt so schnell ;)

von Jonas G. (jonny)


Lesenswert?

Das ist der Grund warum ich mir eine Dataflash von Atmel auf mein 
Webserver-Board gemacht habe.
Da merkt mein den Unterschied. Ein Bild ist schnell geladen. Eigentlich 
merkt man keinen unterschied zum "richtigen" Server.

Die sind auch nicht teuer und für eine Webseite werden meistens nicht >2 
MB benötigt.

Ich habe jetzt einen 4 Mbit Flash und komme damit mehr als aus.

von Tom G. (Gast)


Lesenswert?

Hallo Ulrich!

Ich hab gesehen das du über Telnet einen virtuellen Comport eingebunden 
hast.
Warum muss PC-seitig ein virtueller Com-Port erzeugt werden und dieser 
mit dem TCP-verlinkten verknüpft werden? Ist das nicht irgendwie doppelt 
gemoppelt, oder wie hab ich das zu verstehen?
MfG
Tom

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Natürlich ist das doppelt gemoppelt, kannst ja einen besseren Treiber 
schreiben ich nehme diesen gerne. Problem ist halt einen Treiber zu 
finden der unter der GPL steht.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Wie kann man es machen das man die Webseite des Server über eine längere 
URL, z.B. http://10.0.0.10/password/ statt http://10.0.0.10/ erreichen 
kann?

Irgendwie sollte man einen kleinen Schutz einbauen können damit später 
nicht jeder Ports umschalten kann ;)

Es wäre auch gut den Zustand der Ports im EEPROM zu speichern, nach 
einem Reset wäre dann der Zustand wieder herstellbar der vor dem Reset 
da war.

von Jonas G. (jonny)


Lesenswert?

http-auth implementieren

wie beim avr-eth1 projekt?!?

von Thomas P. (Gast)


Lesenswert?

@Mr pcexperte!

Bitte nicht nur auf den Wissen anderer aufbauen. Es ist super, dass Du 
hier was dazu lernen willst; aber die Art und Weise ist etwas daneben! 
Bitte, zerfetzt mich jetzt für diesen Beitrag! Ich warte.

von Randy N. (huskynet)


Lesenswert?

@Thomas P.
Soll heißen, im Internet gibt es sooo viele Quellen, wie man eine 
Webseite schützen kann - erstmal dort suchen und selber versuchen, es 
hinzubekommen. Beispielsweise hier: 
http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-Authentifizierung

Aber jaja ich kenn das - irgendwie ist es einfacher was ins Forum zu 
schreiben, als selbst nachzudenken. Hab ich auch schon paarmal gemacht 
und...danke dass ihr mir trotzdem geholfen habt :-D :-D :-D

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Thomas P.

Jeder lernt durch das Wissen anderer, das fängt schon in der Schule an! 
;)

Es geht hier nicht darum Insellösungen zu basteln, sondern nachher eine 
Lösung aus einem "Guss" zu haben. Ich schick viele meiner Ideen auch an 
Ulrich etc. und ich lerne durch lesen, beobachten und probieren!

von Gera (Gast)


Lesenswert?

Hallo!
Ich sag gleich das ich von Programmierung kein großen Plan habe, aber 
mich interessiert eine Sache. Und zwar nachbau einer IP 
Camera/Videoserver...
Es soll so aussehen:
(CCD Modul 420Linien = Analog)>(A/D 
Wandler=?)>(Mikrocontroller=?)>(Ethernet Interface=ENC28J60)
Dieses teil sollte über eine IP ansprechbar sein?!
Ähnlich wie das hier:
http://avr.auctionant.de/avr-ip-webcam/avr-webserver-hardware.html

von Gera (Gast)


Lesenswert?

Oder auch statt CCD Modul ein 2-5Mpix CMOS Kamera module???!!!

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Http_auth werde ich heute noch einbinden.

Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Moin!

Zum spielen:
http://mikrocontroller.homedns.org

(Version 1.04 mit kleinen Änderungen, zB Zustandsanzeige der
3 Lampen und Befehl ? zur Ausgabe der eingebauten Befehle)

Gruss,
Micha

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael

Ich probiere gerade mir auch die vorhandenen Befehle auflisten zu 
lassen, aber ich bekomme nur leere Zeilen :(

Was mache ich falsch?

Hier der Code:
1
  
2
unsigned char cmd_index = 0; // Befehlsindex
3
4
while (CMD_TABLE[cmd_index].cmd)
5
{
6
  usart_write("%s\r\n", CMD_TABLE[cmd_index].cmd);
7
  cmd_index++;
8
}

Gruß
Thomas

von Michael (Gast)


Lesenswert?

Hi!
ich habe es so gemacht:
1
void command_help (void)
2
{
3
  unsigned char index = 0;
4
  for (index = 0;index<8;index++)
5
  {
6
    usart_write_str(CMD_TABLE[index].cmd);
7
    usart_write(" - ");    
8
    usart_write_str(CMD_TABLE[index].help);
9
    usart_write("\r\n");
10
  }
11
}

Ich habe die Kommando-Tabelle auch noch mit einem Hilfetext versehen.

Mein 4-zeiliges LCD lässt sich fernsteuern :)
http://mikrocontroller.homedns.org

inkl. Webcam zur Kontrolle (allerdings nicht über den Controller)

Gruss,
Micha

von holger (Gast)


Lesenswert?

@ Thomas
>Was mache ich falsch?

usart_write() ist eigentlich ein usart_write_P().
Das heisst es schreibt nur Strings aus dem Flash.
Für Strings aus dem RAM musst du wie Michael
usart_write_str() nehmen.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

Danke,

da suche ich schon seit Stunden im Tutorial etc. und finde nichts was 
hilft und jetzt klappt es ;)

von Michael (Gast)


Lesenswert?

ich such mir auch die Finger wund, steige gerade
erst ein in C. Sonst nur ASM :)

von Willivonbienemaya .. (willivonbienemaya)


Lesenswert?

Ich hab den Webserver mal aufm Steckbrett getestet.
Sieht echt gut aus.
Was mir aufgefallen ist: Die drei Ausgangsports toggeln wenn man im 
Browser auf aktualisieren drückt.
Es scheint als würde das passieren, wenn man mal einen Haken gesetzt 
hatte.
Kann man das irgentwie machen, dass die Haken gesetzt bleiben, wenn der 
Port an ist?
Oder ist da noch ein Bug?

von Michael (Gast)


Lesenswert?

Hi!
Die Led´s toggeln, da der letzt Schaltbefehl in der URL
noch enthalten ist. Bei aktualisieren wird er erneut verarbeitet.

Gruss,
Micha

von Gast (Gast)


Lesenswert?

Mir fällt gerade auf, dass bei den Servern die online sind, dass 
Impressum fehlt :-) Zum Glück sollten sich hierher nur 
Techniker/Ings/u.ä. verirren. Anwälte verstehen hier wahrscheinlich 
(hoffentlich) nur Bahnhof.

Aber ansonsten ist das eine super Ding. Einfach, preiswert und viel zu 
sehen.

von Gerd G. (elektrikser)


Lesenswert?

>inkl. Webcam zur Kontrolle (allerdings nicht über den Controller)
>
>Gruss,
>Micha

Hallo,

hatte ich zuerst überlesen und mich dann gewundert, dass die Bilder so 
schnell laden. Aber eine schöne Idee mit der Cam und dem LCD. Ich suche 
gerade einen Schaltregler für die 3,3V in SMD um den LM317 zu ersetzen. 
Ich habe noch ein paar ENCs in SMD und überlege eine SMD-Version zu 
machen. Viel kleiner soll es eigentlich nicht werden. Mal sehen.

Zur Zeit streite ich immer noch mit den DS18S20. Sie bremsen einfach 
meine Anwendung aus. Oder ich lass es einen Tiny machen und verwende den 
als Slave.

Gruß Gerd

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Gast

Du solltest dich mal informieren, vielleicht bei einem Fachanwalt, wann 
eine Impressumspflicht besteht!

Man stelle sich vor jedes Gerät welches man über das Web administrieren 
kann bräuchte ein Impressum (Router, Sensoren etc. ) ;)

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Gerd G.

Nimm doch einen SHT11 von Sensirion (evtl. als Sample) und du hast auch 
die Luftfeuchtigkeit, Code dafür habe ich schon eingebunden und läuft 
stabil.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier die Webseite mit HTTP AUTH ich bin aber noch an dem Klartextstring 
dran, ich hoffe aber das ich heute noch fertig werde. Könnt ja mal 
testen.

USER = admin
PASSWORT = uli

Gruß
Ulrich

von Gast (Gast)


Lesenswert?

Hallo,

ich bin kein auch Fachanwalt, und wollte das eigentlich nur ein wenig 
witzig meinen - mir ist klar, dass hier keiner ein Impressum 
implementiert/implementieren muss.

Soweit ich weiß, ist das bei rein privaten Seiten (was hier wohl 
unterstellt werden kann) wirklich nicht notwendig. Die kleinen Server 
sind ja auch über eine veränderliche Adresse ansprechbar, von 
dauerhafter Anwendung (so wird es wohl gefordert für die 
Impressumspflicht) kann also auch keine Rede sein.

Wäre aber witzig, falls es doch jemand implementiert, natürlich mit 
einem breiten ":-)" an unsere Justiz.

Gast.

von Gerd G. (elektrikser)


Lesenswert?

Thomas Heldt wrote:
> @Gerd G.
>
> Nimm doch einen SHT11 von Sensirion (evtl. als Sample) und du hast auch
> die Luftfeuchtigkeit, Code dafür habe ich schon eingebunden und läuft
> stabil.

Ist schon richtig. Das Teil ist nicht schlecht. Leider habe ich noch 
keinen. Die Dallas verwende ich, weil ich vier Meßstellen habe und nur 
die Temparatur brauche.

Aber eine Wetterstation mit Innen- und Außenmeßwerten wird auf meiner 
Liste sein. Funkübertragung natürlich über RFM12, die bieten sich zur 
Zeit an. Die Werte sollen auf einer Website dargestellt werden und alle 
halbe Stunde auf SD-Karte gespeichert werden. Wäre natürlich toll, wenn 
ich die Werte dann als Diagramm anzeigen könnte (Tageswerte).

von Michael (Gast)


Lesenswert?

@Uli

Hatte heute den ganzen Tag den Webserver laufen, mit 8 LED´s und
Display - wassn Spass die Leute da hatten :)
Zur Überwachung gabs ne externe Webcam. So konnte man sehn, was man
geschaltet hat ...

http://mikrocontroller.homedns.org




weiter so...

Gruss,
Micha

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Funktioniert super, vielleicht kannst Du die base64.c und base64.h von 
dieser Seite http://www.episec.com/people/edelkind/c.html oder dieser 
Seite http://www.adp-gmbh.ch/cpp/common/base64.html gebrauchen um den 
base64 kodierten String aus Name/Passwort in der http.c zu erzeugen. 
Dann könnte man in der config.h die beiden Werte im Klartext ablegen.

Gruß
Thomas

von Gerd G. (elektrikser)


Lesenswert?

Hallo Michael

funktionieren bei deinem Display keine Sonderzeichen, wie "!!!??" ?

Gruß Gerd

von John S. (linux_80)


Lesenswert?

Hallo,

alle Sonderzeichen werden vom Browser codiert in %nnn
dieses müsste der AVR-Server erst wieder zurückwandeln damit die 
entsprechenden Zeichen rauskommen.

Kannst dir ja mal die Adresszeile anschauen, was da rauskommt beim 
senden.

@Michael:
Die Seite wird bei mir jetzt nicht mehr richtig geladen, hats da was 
zerbröselt, oder wird grad optimiert ?!

mfG

von Michael (Gast)


Lesenswert?

Hi!
Bei mir spielt alles !?

Immer noch Probleme?

@Gerd:
genau, ich habe mir noch nicht die Mühe gemacht, die
Sonderzeichen zu decodieren ;)

Gruss,
Micha

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Also bei mir geht die Webcam nicht :(

von John S. (linux_80)


Lesenswert?

@Michael
einmal hats geklappt, doch dann kommt nur wieder die Hälfte, und wird 
mit dem Laden nicht fertig !

so schauts jetzt aus:
http://roboter.net-con.net/mc/AVR_Webserver_Fehler.jpg

egal ob IE oder FF !

von Michael (Gast)


Lesenswert?

schade :(

Könnte am Browser oder den Script-Einstellungen liegen!?

Zur Entschädigung gibts hier im Minutentakt ein Bild:
http://www.vw-bus-t4.de/webcam.jpg

Gruss,
Micha

von Michael (Gast)


Lesenswert?

@tiny80

Ist mir bisher nicht aufgefallen. Vielleicht zuviele Zugriffe
im Moment? Ist ja einiges los :)

Gruss,
Micha

von John S. (linux_80)


Lesenswert?

@Michael
ich gehe per Proxy ins Inet, kann den aber auch deaktivieren, zum Test, 
dann gehts. Heute Nachmittag, vom Büro aus, hats auch geklappt, da gehts 
nur per Proxy ins Inet.

Evtl. kannst Du mal probeweise diese Zeile in den Header der Seite 
einbauen :
1
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
dann sollte die Seite nicht in 'nem Cache landen.



Mir würde nur der richtige Quarz für den ENC abgehen, dann könnte ich 
auch so einen Server zusammenbauen.

von Jonas G. (jonny)


Angehängte Dateien:

Lesenswert?

So sieht es bei mir jetzt aus

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Version 1.0.5 gibts nun auf meiner Homepage. Passwort und Benutzer für 
HTTP können in der config.h eingerichtet werden.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Funktioniert super, danke ;)

@Alle

Mein Testserver ist weiterhin unter http://heldt-intern.dyndns.org:81/ 
zu erreichen, Zugangsdaten sind admin + demo .

Angezeigt werden die Temperatur und Luftfeuchte im Webservergehäuse ;)

von Steffen (Gast)


Lesenswert?

Guten Abend,

die aktuelle Version mit "strcasestr" in httpd.c läuft nur mit der 
aktuellsten Version von WINAVR??

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Steffen

Ulrich gibt auf seiner Homepage die Version vom 25.05.2007 als geeignet 
an, diese dürfte die aktuellste sein und die nutze ich auch. Mit dieser 
Version funktioniert es auf jeden Fall.

Gruß
Thomas

von Jonas G. (jonny)


Lesenswert?

Ich weiß nicht warum aber im Firefox 2.0.06.6 unter Suse Linux 10.3 geht 
die Authentifizierung nicht unter anderen Browsern schon.

Weiß nicht warum... wollte es nur mitteilen!

von Hermann (Gast)


Lesenswert?

Wie siehts denn mit Servo ansteuerungne aus, um eine Webcam zu lenken?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@jonny g.

Welcher prozessor M32 oder M644, wenn du einen M32 hast erhöhe mal MTU 
Size auf 650 in Stack.h Zeile 48

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@ Jonas G. und Ulrich

Beim m644 musste ich die MTU Size auf 1500 setzen damit es mit SuSE 10.3 
und dem aktuellen Firefox funktioniert, aber wenn man es auf 1500 erhöht 
geht es perfekt.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Was wurde denn in der V1.06 geändert, bzw. welche Dateien wurden 
geändert?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Da war ein Fehler im Stack mit der RTL8019 Karte!

Gruß
Ulrich

von Steffen (Gast)


Lesenswert?

Hallo,

ich hatte bisher alles mit einem älteren WinAVR gemacht. Bis v4 ging es 
auch. Jetzt hab ich halt die neue WinAVR drauf :-)

Ich habe nun schon ne Weile auf den Code geschaut, mir ist aber noch 
nicht ganz klar, wie die httpd.c genau funktioniert. Es gibt ja die zwei 
großen if-Abfragen: Einmal mit tcp_entry[...].app_status == 1 und einmal 
mit .app_status > 1 und < 0xfffe.

In der oberen (app_status==1) wird ja (nach der authentifizierung) 
entweder eines der bilder gesendet, die Ausgänge gesetzt oder die 
index-Seite gesendet.

In der unteren if-Abfrage (app_status > 1) ist dann allerdings noch eine 
schleife von 0 bis 290. In dieser werden auch die Variablen gesetzt. Mir 
ist jetzt der Zusammenhang nohc nicht ganz klar. Wo werden die Variablen 
beim ersten Senden der "page1" gesetzt? Die Kommentare haben mir leider 
noch nicht ganz geholfen.

Danke und Gruß
Steffen.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Steffen

So wie ich das verstehe wird in der ersten Schleife auf eine GET 
Anforderung reagiert, also entweder Anforderung der Authentifizierung, 
Anforderung eines Bildes oder der Seite selber. In der zweiten Schleife 
werden dann die Daten  gesendet, jeweils in Paketen a 290 Byte.

@Ulrich

Hab ich das korrekt verstanden?

Gruß
Thomas

von Lars K. (larsk)


Lesenswert?

Simon K. wrote:
> Lars Kessner wrote:
>> Ich hab ein Kleinigkeit festgestellt, kommt jemand auf den Webserver
>> wenn die Subnetzmaske nicht 255.255.255.0 sondern 255.255.0.0 ist ?
>> Ansonsten sehr nette implementation.
>
> Das hängt von der IP/Subnetzkombination deines PCs ab. Ich empfehle eine
> Netzwerklektüre.

Hallo Simon,

ich glaube nicht das ich eine Netzwerklektüre benötige, dass ist mein 
tägliches Geschäft und ich habe halt ein Netzwerk laufen was nicht 
255.255.255.0 als Subnetzmaske besitzt. Und das Netzwerk funktioniert.

Gruß

Lars

von Der wirkliche Netzwerker (Gast)


Lesenswert?

>ich glaube nicht das ich eine Netzwerklektüre benötige

Deine Frage lässt aber das Gegenteil vermuten.......

Hier mal was als Einstieg

http://netzmafia.de/skripten/netze/netz8.html

von Steffen (Gast)


Lesenswert?

Hallo Thomas,

ja, nachdem ich dann mit meinem Notebook abends im Bett den Quelltext 
noch mal durchgeschaut habe (man wie krank hört sich das jetzt an ;-) 
denke ich genauso wie du.

In der ersten Abfrage wird für die Indexseite bspw. nur der Header 
gesendet und der Zeiger auf die zu sendenden Werte gesetzt. Erst wenn 
dann die Bestätigung vom Client kommt, wird dann die ganze Seite 
gesendet.

Eine Frage noch: Warum wird die Schleife 290 mal durchlaufen? Ist das 
ein maximaler Wert für irgendetwas, oder korrespondiert der mit der 
Anzahl der Zeichen in der Indexseite? oder... oder... oder...???

Könnte der Wert auch über ein strlen o.ä. aus Page1 ermittelt werden?

Gruß
Steffen.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Steffen

Warum es genau diese 290 Zeichen sind kann ich auch nicht sagen, bin ich 
noch nicht hinter gestiegen da müsste Ulrich was zu sagen.


@Ulrich

Ich habe ein komisches Verhalten bzgl. Browser und Authentifizierung 
festgestellt:

MTU-Wert: 1100-1500 versucht

Zugriff per IP-Adresse im Browser oder per Domainnamen (Dyndns)

Klappt mit Firefox unter Linux SuSE 10.3, mit dem IE 6 unter Win2000 
aber nicht korrekt mit dem Firefox unter Win2000.

Zugriff per Domainnamen über Dyndns klappt immer mit allen Browsern.

Beim Zugriff über die IP-Adresse kann man sich beim ersten mal anmelden 
und auch einen Schaltvorgang durchführen (Firefox) wenn man dann noch 
mal direkt schalten will kommt wieder die Authentifizierung und nichts 
geht mehr. Refreshed man die Seite aber nach dem ersten Schaltvorgang 
(Also Datenübergabe in der Url) und schaltet dann wieder geht es auch.

Dieses Verhalten tritt bei mir mit verschiedenen MTU-Werten auf und 
immer mit dem Firefox.

Steckt da eine Logik hinter?

von Steffen (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

nochmal eine Frage zum Verständnis des Codes: Ich habe im Anhang eine 
einfache, schnell erzeugte Grafik zum Programmfluss:

Habe ich das richtig verstanden, dass, nachdem der eine neue Anfrage 
gestartet wurde (z.B. Aufruf der Seite oder Anfrage des Clients nach 
einem Bild) eine neue TCP-Session aufgemacht wird mit 
tcp_entry[index].app_status==1 (sonst =0)?

Wenn diese Nachricht empfangen wurde, wird noch kontrolliert, ob es eine 
Anfrage nach einem Bild oder der Html-Seite war. Je nachdem, ob die 
Anfrage ein Bild oder Html war, wird der entsprechende Header sofort! 
gesendet und der Pointer für die nächsten Daten auf die entsprechende 
Quelle gelegt (die Html-Seite ist Page1 und die Bilder Page2 bzw. 
Page3). Das Unterprogramm wird dann beendet.

Beim Senden des Headers wird der Statuszähler um eins erhöht (in der 
Routine tcp_socket_process in der Datei stack.c).

Wenn der Client nun die Bestätigung für den Empfang des Headers sendet, 
wird erneut der Httpd aufgerufen. Nun ist der app_status aber höher 
(min. 2) und es wird in die zweite if-Abfrage gesprungen. In dieser wird 
nun auf Basis des gesetzten Pointers die entsprechende Page gesendet. 
Egal welche Page ausgewählt wird, wird der Inhalt nach den Variablen 
durchsucht und durch entsprechende Werte ersetzt. Diese werden nun 
gesendet.

Kann es vorkommen, dass die Variablenzeichenkette (VA@xx) auch in 
Bildern vorhanden ist und dann durch Werte erstetzt wird???

wenn keine Daten mehr vorhanden sind, wird die Session beendet.

Bitte um Bestätigung ;-) (oder Korrektur)

Gruß
Steffen.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Steffen

Meinem Verständnis nach ist es genauso wie du es beschrieben hast, ob 
die Variablenplatzhalter so in Bilddaten vorkommen kann ich aber nicht 
sagen, theoretisch dürfte es aber möglich sein was dann wohl zu 
"Pixelfehlern" führen würde. Aber ich glaube das es passiert ist sehr 
unwahrscheinlich.

Man könnte je nach Headerart die Variablen evtl. nur bei nicht Bilddaten 
ersetzen lassen, mal sehen was Ulrich sagt.

von Lars K. (larsk)


Lesenswert?

Der wirkliche Netzwerker wrote:
>>ich glaube nicht das ich eine Netzwerklektüre benötige
>
> Deine Frage lässt aber das Gegenteil vermuten.......
>
> Hier mal was als Einstieg
>
> http://netzmafia.de/skripten/netze/netz8.html

Hallo,

mal andersrum gefragt, hast du den Webserver mal aufgebaut und die 
Software eingespielt ?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Wert 290 ist relativ klein gewählt. Um eine hohe Packetanzahl zu 
erzeugen (TESTZWECKE). Normalerweise müsste die Zahl (MTU_SIZE - 
TCP_DATA_START) sein. Dann würde ein Frame voll ausgenutzt. Allerdings 
sollte man berücksichtigen das noch Variablen eingefügt werden können, 
also MTU_SIZE - TCP_DATA_START - 100.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Das Problem mit Firefox und Linux Suse10.3 könnte nun beseitigt sein 
:-).
Ursachenforschung: Das Headerpacket get / vom Client wurde in mehrere 
Packete aufgeteilt. Firefox hat einen großen Header über 1500Bytes. 
Problem die Software wird immer komplexer :-)

Download der Version 1.0.7 auf meiner HP.

Gruß
Ulrich

von Adler (Gast)


Lesenswert?

Hallo

Zur Info.
Ich benutze die letzte Version von Ulrich Radig (Danke für den 
Sourcecode) newStack_1_0_4 und habe bis auf den RJ45 Stecker die 
gleichen Komponenten. Also ENC28J60 und einen Atmega32.

Habe ein Problem mit der MAC Adresse. Wenn ich diese in den ENC schreibe 
gibt es keinen Fehler. Schaue ich die Einträge im Register an mit

usart_write("MAC 0: 0x%1x\r\n", enc28j60Read(MAADR1));
usart_write("MAC 1: 0x%1x\r\n", enc28j60Read(MAADR2));
usart_write("MAC 2: 0x%1x\r\n", enc28j60Read(MAADR3));
usart_write("MAC 3: 0x%1x\r\n", enc28j60Read(MAADR4));
usart_write("MAC 4: 0x%1x\r\n", enc28j60Read(MAADR5));
usart_write("MAC 5: 0x%1x\r\n", enc28j60Read(MAADR6));

ergibt dies als Ausgabe:

MAC 0: 0x0
MAC 1: 0x0
MAC 2: 0x0
MAC 3: 0x0
MAC 4: 0x5f
MAC 5: 0x0

Dass heisst: Nur der letzte Eintrag wurde im Speicher abgelegt und zwar 
an der ersten Stelle. Alle anderen Einträge sind 0x00. Es sieht so aus, 
als würde sich die Adresse nicht ändern und dauernd der neue Eintrag den 
vorhergehenden löscht. Mache ich einen Überlegungsfehler, stimmt etwas 
im Quellcode nicht oder könnte es sein, dass mein ENC den Geist 
aufgegeben hat(Wahrscheinlich nicht, da ich den letzten Wert auslesen 
kann).

Ein anderes Problem ist mit der ARP Tabelle. Diese ist immer 0. Die 
sollte doch automatisch gefüllt werden oder liege ich da falsch???

Vielen Dank für die Hilfe

Gruss

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Jetzt klappt es auch mit Opera und MDA II. Evt. schließe ich das an mein 
Garagentor an ;-)

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Entweder habe ich nicht alle Änderungen aus der 1.07 in die 1.06 
übernommen oder es tritt ein neues Problem mit dem Firefox auf:

Wenn ich per IP-Adresse zugreife lädt der Browser unter Win2000 endlos 
obwohl die Seite komplett ist. Mit IE und wenn ich auf den Dyndns 
Domainnamen zugreife funktioniert es. Unter Linux ist die Seite total 
kaputt :(

Kann da mit den Variablen zu tun haben, ich nutze andere als du, z.B. 
%LED1 und ersetze diese mit folgendem Code:
1
      if (strncasecmp_P("%LED1",http_entry[index].new_page_pointer,5)==0)
2
      {
3
        if((PORTB & (1<<PB1))!=0)
4
        {
5
          memmove(&eth_buffer[TCP_DATA_START+a],"<b><font color=\"#FF0000\">AUS</font></b>",39);
6
          a = a + 38;
7
          http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5;
8
        }
9
        else
10
        {
11
          memmove(&eth_buffer[TCP_DATA_START+a],"<b><font color=\"#00C000\">AN</font></b>",38);
12
          a = a + 37;
13
          http_entry[index].new_page_pointer=http_entry[index].new_page_pointer+5;
14
        }
15
      }

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Alles klar habe es gelöst ;) ARP Cache geleert und MTU-Wert angepasst.

Jetzt klappt es mit allen Browsern unter Linux und Windows.

Noch eine Frage, ich habe FTP soweit das ich mich mit WS-FTP am Server 
anmelden kann, alle Anfragen vom Client werden beantwortet.

Aber jetzt will der Client ja einen Port <>21 haben für die 
Datenkommunikation, wie kann ich jetzt einen neuen Port für die aktuelle 
Sitzung öffnen und z.B. ein Dummy Directory Listing an den FTP-Client 
senden?

Im RFC ist die Antwort auf LIST nicht deklariert und wie ich das mit den 
beiden Ports mache verstehe ich leider noch nicht.

Ich war schon froh das ich es hinbekommen habe das der Server auf die 
FTP Anfragen antwortet und die Verbindung auf- und abbauen kann.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Bei der 1.07 (Original von dir) und auch bei meiner geänderten geht 
HTTP-AUTH nicht mehr, in der config.h ist eine 1 eingetragen aber die 
Seite kann ohne Abfrage aufgerufen werden :(

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Lese dir mal die neue Config duch, und du wirst feststellen eine 1 
schaltet Auth ab. Welche Werte wurden geändert?

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Alles klar hatte meine alte config.h genommen :(

Jetzt teste ich verschiedene MTU Werte etc. weil es je nach länge der 
URL mal funktioniert und mal nicht. Aber ich bekomme das schon hin nur 
mit dem FTP stehe ich auf dem Schlauch.

von Werner B. (Gast)


Lesenswert?

@ Thomas Heldt

suche mal nach "passive ftp". Ist einfacher zu verstehen.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Werner B.

Danke, habe ich schon gelesen, werden aber auch zwei Ports genutzt. Aber 
ich muß hier erstmal die aktuelle Version stabil zum laufen bekommen 
bevor ich weiter um FTP kümmern kann.

@Ulrich

Kann es sein das die V1.07 extrem abhängig von der URL, Länge der 
Webseite etc. ist. Mal lädt die Seite mit einem MTU-Wert, dann wertet 
sie aber die Parameter der GET Anweisung nicht korrekt aus, dann wieder 
klappt alles mit der Auswertung dafür lädt die Seite im Browser endlos.

Egal ob mit deiner Originalversion als auch mit meiner bisher eigentlich 
stabilen Version.

Hast Du da noch einen Tipp?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die 1.0.8 jetzt nicht mehr :-) (hoffe ich)
Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Läuft wie geölt auf Win2000 mit IE6 und Firefox und auf SuSE 10.3 mit 
Firefox auch ;)

Kannst Du mir vielleicht noch einen Tipp geben wie ich aus meiner ftpd.c 
heraus einen zweiten Port (z.B. 999) gebunden an die gleiche MAC/IP 
öffnen kann als Datenport für FTP?

Müsste das dann eine eigene Anwendung mit eigenem Port darstellen, 
glaube doch schon das ich beim Start den Port als Anwenung eintragen und 
nach der Verbindung wieder aus der Anwendungsliste löschen muss, korrekt 
gedacht?

von holger (Gast)


Lesenswert?

@ Ulrich

Mach aus den
const char http_header1[]={"HTTP/1.0 .....

doch mal ein

PROGMEM char http_header1[]={"HTTP/1.0 .....

Dann ersetzt du

memmove(start_data,http_header...

durch

memcpy_P(start_data,http_header....

Schon hat man fast 300 Byte RAM mehr zur Verfügung.

Und schmeiß Page2 aus httpd.c raus in eine Headerdatei.
Ist ja lästig da dauernd über ein 1000 Zeilen Hex Listing
scrollen zu müssen wenn man mal zwei Zeilen ändern möchte.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier die neuste Version!

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

So die letzte Version für heute! Mit richtiger Html Header End 
Auswertung!

Guss
Ulrich

von Steffen (Gast)


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.

von E. M. (hias)


Lesenswert?

Hallo

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

MfG Hias

von Thomas H. (pcexperte) Benutzerseite


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?

von Thomas H. (pcexperte) Benutzerseite


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 :(

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hier zum spielen!!

http://ulrichradig.dyndns.org

User:     admin
Passwort: uli1

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Jetzt scheint es zu gehen MTU_SIZE=1500, drunter gab es bei mir immer 
Probleme. Jetzt teste ich mal wie stabil er läuft ;)

von holger (Gast)


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 !

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Alsogut doch noch eine neue Version habe V1.0.12 Online gestellt. 
Debugmeldungen habe ich erstmal aktiviert!

Gruß
Ulrich

von Steffen (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

So jetzt sollte alles klappen Version 1_0_13!!!!

http://ulrichradig.dyndns.org

User:     admin
Passwort: uli1

und immer schön testen :-)

von Michael (Gast)


Lesenswert?

Hi!

Also ich bekomme mit der neusten Version keinen stabilen Betrieb
mehr hin. Di letzte mit der alles klappte, war die 1_0_4

Ich nutze das mitgelieferte 644-HEX und nach dem ersten
Aufruf wird die Seite zerstückelt.

http://mikrocontroller.homedns.org/

Jemand ne Idee??

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Hexfiles sind alte Versionen und entsprechen nicht den neusen Stand 
und sind nur zum testen. Ping usw. ob das Board überhaupt läuft.

Gruß
Ulrich

von Michael (Gast)


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...

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe gerade die Hexfiles aktualisiert wir sprechen hier auch von der 
version 1.0.13?

Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Ja, genau.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich habe die Version schon den ganzen Abend am laufen. Mit mehreren 
Browsern und Rechner getestet.

http://ulrichradig.dyndns.org
User:     admin
Passwort: uli1


Gruß
Ulrich

von Michael (Gast)


Lesenswert?

Hi!
Da habe ich auch schon wild dran rumgeschaltet, keine Probleme.
Könnte es etwa an meinem fliegenden Aufbau liegen !?

Gruss,
Micha

von Michael F. (fury)


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.

von Michael (Gast)


Lesenswert?

Also ih bin mir sicher, dass der Code funktioniert. Ich werde
mal den fliegenden Aufbau gegen eine Platine tauschen, ich
denke, daran liegt es.

Gruss,
Micha

von Gerd G. (elektrikser)


Lesenswert?

Habe die neue Version auch schon zwei Stunden am Laufen und bisher keine 
Probleme.

Gute Arbeit!

von Thomas H. (pcexperte) Benutzerseite


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.

von Michael (Gast)


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

von Lötlackl (Gast)


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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael

Ja ich nutze den 644er, aber ich werde es gleich mit einem 32er 
probieren und berichten.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael und Ulrich

Also die 1.0.13 mit einem ATMEGA32 scheint "out of the box" zu 
funktionieren, habe keine Abstürze wie beim 644er.

Jetzt teste ich mit verschiedenen Taktfrequenzen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Es liegt an der MTU SIZE stellt die MTU SIZE auf 500 und es geht auch 
mit einen 644er. Ich arbeite drann!!

Mfg
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Danke, jetzt läuft der 644er super ;)

von Michael (Gast)


Lesenswert?

Ja, das wars. Klappt jetzt einwandfrei. Auch die
von mir geänderte 1_0_4 (Display und 8 LEDs) spielt jetzt
super.

Danke Uli!

Micha

PS:
Macht nicht mehr so lange :)

von Steffen (Gast)


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.

von Thomas H. (pcexperte) Benutzerseite


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

von Steffen (Gast)


Lesenswert?

mega32 - ich musste aber telnet und cmd total raus schmeissen...

von Michael (Gast)


Lesenswert?

Hallo Uli!
Danke für die neue Version.

Irgendwie klappt das decodieren der Schalt-Parameter nicht mehr.
Es bleibt der vorherige Schaltbefehl irgendwo gespeichert und
toggeld die LED nochmals.

Gruss,
Micha

von Michael (Gast)


Lesenswert?

zu sehen hier:
http://mikrocontroller.homedns.org

für den 644 compilierte 1_0_14

Zur Kontrolle die Webcam:
http://www.vw-bus-t4.de/html/webcam.php

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

So die letzte für heute habe noch was am ENC Treiber optimiert stürtzte 
zeitweise bei mir noch ab!

Also nochmal Version 1.0.14

und immer testen ;-)

http://ulrichradig.dyndns.org
User:     admin
Passwort: uli1

Gruß
Uli

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Noch einen kleinen Nachtrag, Änderung der Zeile 296 in der enc28j60.c 
auf

delay_us(10000);

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Einfach tolle Sache, jetzt klappt es auch mit mehreren Seiten etc. auf 
dem 644er ;)

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


Angehängte Dateien:

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

von Willivonbienemaya .. (willivonbienemaya)


Angehängte Dateien:

Lesenswert?

Ich hatte einen Fehler bei der Verkabelung der Spulen, den hab ich jetzt 
bei dir nicht gesehen.

ich hab mal meinen Schaltplan angehängt. Der hat vor ein paar Tagen noch 
funktioniert.
Kannst ja mal vergleichen.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier eine Software Version die es erlaubt schnell neue Seiten 
hinzuzufügen.
Schaut euch die Tabelle am Ende von webpage.h an!

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


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

von holger (Gast)


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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Holger

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

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.

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


Lesenswert?

Kann mir niemand helfen?? :-(

Gruß Henning

von T. P. (dadomas)


Lesenswert?

Dann hänge doch mal den Schaltplan als PNG-File an, dann würde ich auch 
mal drüber schauen ;-)

von holger (Gast)


Angehängte Dateien:

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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Holger

Danke ich habe das mit dem Uhrenquarz heute N8 schon hinbekommen, es 
läuft super.

Ich nutze jetzt den Uhrenquarz und zeige auf der Webseite an wie lange 
der Server läuft.

@Ulrich

Ich habe dir mal eine Mail geschickt mit der Möglichkeit den Uhrenquarz 
alternativ als Taktgeber für den genutzten (m32 Timer1 / m644 Timer 2) 
zu verwenden.

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Holger

Kannst Du dir mal bitte meine timer.c ansehen, so läuft es bei mir,
bitte sage mir ob es für den ATMEGA32 so korrekt ist. Ich teste hier mit
dem 644er.

Eigentlich sollte es lt. Datenblatt so gehen.

Nachtrag:
Habe den Code mal aufgeräumt und aktualisiert ;)

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Holger

Sorry falsche Datei, hier die korrekte ;)

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


Angehängte Dateien:

Lesenswert?

@dadomas
Hier ist der Schaltplan als PNG. Ich weiß echt nicht, woran es liegen 
könnte, die Magjackbelegung (SI-60024) hab ich auch schon 1000mal 
geprüft. Kann dir gerne auch noch das Layout schicken, aer hier kann man 
ja immer nur eine Datei anhängen

Gruß

Henning

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@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.

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


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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

1 3 4 6 ->>3 1 6 4

So ;)

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

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


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

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


Lesenswert?

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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Henning Schaper

Passiert gar nichts oder wird erkannt das ein Kabel eingesteckt wird, 
also leuchtet dann eine LED?

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


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.

von Thomas H. (pcexperte) Benutzerseite


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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@henning

Hat der Webserver auch sicher eine IP-Adresse aus deinem Netzwerk?

von Kornelius D. (kornelius)


Lesenswert?

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

von Robin T. (rotoe) Benutzerseite


Lesenswert?

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

Vollkommen richtig. Nennt sich "Cross Over LAN-Kabel"

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


Angehängte Dateien:

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

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


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

von Kornelius D. (kornelius)


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?

von Florian (Gast)


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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Florian

Also mit der Version vom 25.05.2007 klappt es, installiere dir dich mal 
die aktuelle WINAVR ;)

von Willivonbienemaya .. (willivonbienemaya)


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.

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


Lesenswert?

Hallo  Willivonbienemaya

könntest die mir die eagle libary, die du dort verwendet hast zukommen 
lassen?? hast du evntl auch ein eigenes layout gemacht??

von Willivonbienemaya .. (willivonbienemaya)


Angehängte Dateien:

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.

von Willivonbienemaya .. (willivonbienemaya)


Angehängte Dateien:

Lesenswert?

hier das Board

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


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

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Holger

Ich habe noch einmal den Code überarbeitet für den Timer könntest Du mal 
schauen und sagen ob der Teil für den Atemga32 korrekt ist, der Teil für 
den Atmega644 läuft.

Danke für eine Antwort.

Gruß
Thomas

von Willivonbienemaya .. (willivonbienemaya)


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.

von Florian (Gast)


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?

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Florian

Sorry, kann ich nichts sagen ist meine erste WINAVR Installation 
gewesen, aber schaden kann es sicher nichts die alte zu entfernen ;)

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


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

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


Lesenswert?

Henning Schaper wrote:
>> Was hast du denn für ein Widerstand als Rbias drin?
> 2,32ohm bei 2%
2,32 KOhm bei 2% sorry, Tippfehler

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Henning Schaper

Da Du ja die Version auslesen kannst, ich habe die selbe Version, ist 
die Verbindung AVR <-> ENC korrekt. Ich nutze einen RBIAS mit einem Wert 
von 2K mit 1%. Je nach Länge des RJ45 Kabels habe ich da schon von 
Problemen gehört.

von Jonas G. (jonny)


Lesenswert?

Ich habe RBIAS 2,7 KOhm und habe auch gelesen, dass dies in den neuen 
Revisionen des ENCs erforderlich ist.
Ich habe mit 2,7k keinerlei Probleme...

Jonas

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Jonas G.

Mein ENC Rev. 5 funktionierte mit 2,7K und langem Kabel nicht korrekt, 
Paketverluste, gleiches Kabel 2K funktioniert wunderbar. Olimex z.B. 
setzt bei allen Versionen 2K ein soweit ich gehört habe.

[Nachtrag]

Lt. Microchip soll bei Rev.5 ein 2,32K mit 1% genutzt werden also sollte 
es bei Henning klappen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich habe einen ENC mit der Rev. 5 daran funktionieren die Bias 
Widerstände 2k, 2.3k und 2.7k

Gruß
Ulrich

von Nicht B. (florian01)


Lesenswert?

@ Thomas:

Hab es jetzt zuerst gelöscht und schon ging es.
Vielen Danke Dir und Grüße
Florian

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


Lesenswert?

Hallo,
ich glaub ich hab meinen Fehler gefunden...Das muss ich aber noch 
testen.
Habe vermutlich für den ENC kein Grundtonquarz, sondern es hat die 25Mhz 
im 3. Oberton


Grüße Henning

von Michael (Gast)


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!--->

von holger (Gast)


Lesenswert?

Benutzt du den internen RC-Osci ?

von Thomas H. (pcexperte) Benutzerseite


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?

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Henning

Hi!
Ich nutze auch den Reichelt-Quarz, 25Mhz, 3. Oberton.

Funktioniert bei mir im fliegenden Aufbau (Steckbrett)
einwandfrei.
http://mikrocontroller.homedns.org/

Gruss,
Micha

von Michael (Gast)


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 
:(

von Michael (Gast)


Lesenswert?

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

Leider nein, hab dyndns im Mom nicht eingerichtet.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael

Nur zum testen geh mal auf 300 Baud runter dann wäre der Baudratenfehler 
nur noch 0,01%, vielleicht ist der Quarz so ungenau oder schwankt.

Gib mal bescheid was dann passiert.

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


Lesenswert?

Michael Volk wrote:
> @Henning
>
> Hi!
> Ich nutze auch den Reichelt-Quarz, 25Mhz, 3. Oberton.
>
> Funktioniert bei mir im fliegenden Aufbau (Steckbrett)
> einwandfrei.
> http://mikrocontroller.homedns.org/
>
> Gruss,
> Micha

Hi Micha,
hast du zusätzlich noch irgendeinen Filter mit drin, der den Grundton 
rausfiltert??

Grüße, Henning

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Henning
Nein, schaltung nach Uli. Nur den Quarz mit 2x 22pF nach Masse.

Gruss,
Micha

von Michael J. (kalie)


Lesenswert?

Nun gut, mit 300 Baud bekomme ich überhaupt keine Verbindung zum Uart 
des Servers :((

Stelle ich in der Config wieder auf 9600 um gehts wieder ... nur eben zu 
98% unleserlich.

Solche Probleme hatte ich mit dem AVR Uart noch nie :(

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael J.

Stell mal den 644er um auf interne 8 MHz und im Code auch auf 8000000UL 
um, was passiert dann?

Was passiert wenn Du mal auf den Quarz tippst mit dem Finger?

Kannst Du mir den Code mal als zip schicken, thomas [at] heldt-web 
[punkt] de  ?

von Michael J. (kalie)


Angehängte Dateien:

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.

von TheMason (Gast)


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

von holger (Gast)


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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael J.

Läuft bei mir ohne Probleme, vielleicht ein Problem mit dem RS232 Kabel 
etc.
Also der Code ist OK.

von Michael J. (kalie)


Lesenswert?

nope, steht auf:

CKSEL=0111 SUT=10

also externer Quarz

von Michael J. (kalie)


Lesenswert?

Das Kabel, hm ....

1m Kabel (vom STK500) .. unlesbar
1m Kabel (USB - RS232) .. dito

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael J.

Vielleicht der MAX232 auf dem Board bzw. die C`s, kalte Lötstelle, 
Wackelkontakt etc. alles nochmal prüfen.

von Michael J. (kalie)


Lesenswert?

Das habe ich mir auch gerade überlegt :D

Werde morgen mal direkt vom Mega zum max232 auf dem STK500 gehen, mal 
sehen was der so spricht.

von TheMason (Gast)


Lesenswert?

@michael :

kannst du den max232 nicht einfach per loopback testen ?!
dann weißt du zumindest ob es an ihm liegt oder am avr ....

gruß
rene

von Michael J. (kalie)


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 ...

von Stefan (Gast)


Lesenswert?

Preis/Aufwand/Nutzen

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich hatte bisher noch nie Probleme mit dem MAX232, ich benutze sogar nur 
100nF Kondensatoren. Den MAX232 verbaue ich eigentlich immer.

Gruß
Ulrich

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


Lesenswert?

Es gibt den max232cpe, laut Datenblatt 1µF Kondensatoren verwenden
und es gibt den max232acpe, bei dem muss man laut Datenblatt 100n 
überall verwenden.
Der max233 braucht gar keine ;)

Gruß Henning

von TheMason (Gast)


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

von Gerd G. (elektrikser)


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

von Gerd G. (elektrikser)


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.

von Steffen S. (Gast)


Lesenswert?

Hi,

kann man anstelle des 2022-Übertragers auch einen 20F001 nehmen?
Oder einen F0041 von einer 10/100 Realtekkarte?

von Gerd G. (elektrikser)


Lesenswert?

Wahrscheinlich schon. Aber die sind wahrscheinlich kleiner (kürzer) und 
damit müsste das Layout geändert werden.

von TheMason (Gast)


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

von Steffen S. (Gast)


Lesenswert?

kann man den Übertrager auch sockeln?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Version 1.0.15 steht nun zur Verfügung! Nun auch mit UDP und NTP 
Client. Somit kann man sich eine Ethernet Uhr bauen :-}

Gruß
Ulrich

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hi Ulrich,

Version 1.0.15 läuft prima. NTP funtioniert.
Könntest du nicht vieleicht die time.c aus dem Anhang
nehmen ? TIMER1_OVF_vect erzeugt keine wirklich gute Sekunde.

Begründung siehe hier:
Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"

Gruß
 Holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Holger,

Habe ich vor, werde ich die Tage noch übernehmen.

Gruß
Ulrich

von holger (Gast)


Lesenswert?

@ Steffen S.
>kann man den Übertrager auch sockeln?

Meiner ist gesockelt. No Problemo.

@ Ulrich

Danke !

von Micha .. (micha68) Benutzerseite


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

von holger (Gast)


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.

von Steffen (Gast)


Lesenswert?

Hallo,

eine Frage an Ulrich:

Hat das einen Grund, dass du deine debug-Ausgaben jetzt direkt mit 
usart_write schreibst und nicht mehr mit DEBUG?

Steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Nein das hat keinen Grund! In NTP werde ich es noch ändern. Wieso?
Ich werde heute noch eine neue Version veröffentlichen. Also mit 
Änderung von NTP(DEBUG) und Einbindung der neuen Routinen für timer.c.


Gruß
Ulrich

von Domschl (Gast)


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

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Diese Idee mit Dyndns hatte ich auch schon! Mir ist es auch schon ohne 
Probleme gelungen eine Webseite aus dem Internet abzurufen. Dieses war 
meinerseits als RSS Reader gedacht, um aktuelle Infos/News auf einem LCD 
Display darzustellen.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Aktuelle Version rennt super, danke ;)

Hast du geplant die Möglichkeit eine Verbindung über einen Router nach 
außen auf zu bauen auch für TCP geplant, dann könnte man auch 
"Warnmails" versenden etc.

von Günni (Gast)


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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Du hast in der 1.0.17 den MTU Wert für den m644 wieder auf 500 gesetzt, 
es funktioniert aber bei mir nur korrekt mit einem Wert von 1000, hatte 
es was zu bedeuten das der Wert geändert wurde?

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!

Ich will ja nicht nerven, aber seit einigen Versionen klappt das 
schalten der Ausgänge nicht mehr. Habe nur ich das Problem?

Gruss,
Micha

PS: Danke für die neue Version

von Thomas H. (pcexperte) Benutzerseite


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
    }

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Jetzt wiederholt er keine Schaltvorgänge, allerdings
lässt sich so nur ein Ausgang gleichzeitig umschalten :(

Gruss,
Micha

von Thomas H. (pcexperte) Benutzerseite


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.

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Ich habe experimentiert und die Art der Datenübergabe von 'get'
auf 'post' in der webpage.h geändert.

Auf den ersten Blick scheint das die Lösung zu sein, da keine
Daten mehr über URL übertragen werden.

Ich forsche mal, ob diese Lösung andere Fallen hat oder ob das die
(Er)Lösung ist.

Gruss,
Micha

von Steffen (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @ Michael Volk,

Ich meine auch POST behebt das problem!!

@ Thomas Heldt

Normalerweise sollte es mit den MTU Wert 500 auch klappen! Habe hier 
drei Testboards wo ich viele Werte immer durch teste. Benutzt du den 
orginal Source Code oder einen abgeänderten?

Gruß
Ulrich

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hallo Uli!

Ich weiss noch nicht genau warum POST das Problem behebt,
aber ich forsche noch.

Sag mal, gab es in webpage.h nicht mal eine Tabelle der
Seiten? Ist das aus bestimmten Gründen rausgeflogen?

Gruss,
Micha

von Thomas H. (pcexperte) Benutzerseite


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.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Mit der 1.0.20, also MTU-Wert 600 und kleinerem Auth-Buffer klappt es ;)

Danke, super Arbeit.

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

So habe es auch mal auf POST umgestellt und es klappt mit ein paar 
Anpassungen auch mit meiner 2 Seiten Konfiguration ;)

Also 1.0.20 läuft somit perfekt.

von Simon Hufnagel (Gast)


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

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Simon Hufnagel,

WOL sollte kein großes Problem darstellen. Ich werde mir das mal heute 
anschauen, und mal sehen ob ich an meinen Laptop WOL zum laufen bekomme 
um den ETH_M32_EX Webserver zu testen.

Gruß
Ulrich

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Super Sache jetzt habe ich es geschafft bei jedem Start eine Mail zu 
versenden, also Verbindungsaufbau zu einem externen Server per TCP 
funktioniert auch super.

von Steffen (Gast)


Lesenswert?

@Thomas

Welche Quellen hast du für das Senden der Mails verwendet? Nur 
irgendwelche RFCs oder gibt es eine gute Beschreibung, was, wann und wie 
gesendet werden muss?

Steffen

von Thomas H. (pcexperte) Benutzerseite


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 ;)

von Thomas H. (pcexperte) Benutzerseite


Angehängte Dateien:

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 ;)

von Steffen (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Thomas Heldt

Den Arp Request würde ich so gestalten, ohne Warteschleife.
1
//ARP Request senden
2
if (arp_request(MAIL_IP))
3
{
4
MAIL_DEBUG("MAIL Server gefunden!!\r\n");
5
....
6
....
7
....
8
return;
9
}
10
MAIL_DEBUG("Kein MAIL Server gefunden!!\r\n");
11
return;

Gruß
Ulrich

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


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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Danke, habe es mal geändert, hatte es so aus dem experimentellen Code 
übernommen und dachte es hat einen Sinn warum du extra die Schleife 
eingebaut hast ;)

von Steffen (Gast)


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.

von Sucher (Gast)


Lesenswert?

Hallo

@Henning läuft jetz dein Board mit dem Magjack, wenn ja was wars?

MfG
Achim

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


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

von Sucher (Gast)


Lesenswert?

Hallo

@Henning kann man von Dir eventuell eine Platine(n) bekommen und die 
Eagle Dateien?

MfG
Achim

von Steffen (Gast)


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?

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


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

von Steffen (Gast)


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.

von Sucher (Gast)


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

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


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

von Sucher (Gast)


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..

von Steffen S. (Gast)


Lesenswert?

@Steffen:

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?

von Werner B. (Gast)


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.

von Steffen (Gast)


Angehängte Dateien:

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.

von Steffen (Gast)


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.

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


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

von Sucher (Gast)


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

von STK500-Besitzer (Gast)


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!

von Ulrich R. (radiguli) Benutzerseite


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

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Ulrich

Es wäre sicher sinnvoll die Mailadressen in die config.h zu übernehmen, 
evtl auch den Betreff und den Mailtext. Oder willst du es noch flexibler 
gestalten? ;)

Ich freue mich schon auf die Version mit Mail um zu sehen was ich hätte 
besser machen können.

Die V1.0.22 läuft übrigens auch super.

von Steffen (Gast)


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

von Steffen S. (Gast)


Lesenswert?

Ist euch auch schon aufgefallen, dass die Seite viel schneller läd, wenn 
man unter Linux auf den AVR-Webserver zugreift?
Liegt das an dem TCP-Stack von Windows, weil es dort langsamer geht?

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Steffen und Steffen S.

Ich habe einfach den MTU-Wert wieder hoch gestellt und er rennt unter 
Windows als auch unter Linux ;)

Ich nutze den 644er, ob er beim 32er klappt kann ich nicht sagen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe nun die Version 1.0.23 online habe einige eurer Änderungen 
übernommen!
Desweiteren die Verwaltung der Webseiten über eine Tabelle. Habe nun 2 
Seiten die aufgerufen werden können.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @Steffen S.

Das liegt daran das Linux die ACK Packete schneller versendet als 
Windows.

Zum Thema AVR Webserver und Geschwindigkeit habe ich eine gute
Studienarbeit gefunden (Seite 63 - 64). (schonmal gepostet in diesem 
Thread)

http://www.uni-koblenz.de/~physik/informatik/studi...

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

@Ulrich:

Danke für den Hinweis, werd ich mal durchlesen.

Was mir auch aufgefallen ist, wenn man den Link zum einschalten direkt 
sendet: http://192.168.0.40/?LED1=1&LED2=0&Submit=Senden
Dann geht die LED an, ohne dass man das Passwort eingeben muss.
Die Passwort-Abfrage kommt zwar, aber die LED geht sofort an.

von Ulrich R. (radiguli) Benutzerseite


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

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


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

von holger (Gast)


Angehängte Dateien:

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.

von Steffen S. (Gast)


Lesenswert?

@Ulrich:

Danke, funktioniert.

von John S. (linux_80)


Lesenswert?

Hallo,

hat hier schon mal jemand vorbeigeguckt:
http://benshobbycorner.nl/
da könnt' man sich fast noch'n Paar Ideen holen ;-)

von Steffen S. (Gast)


Lesenswert?

Funktioniert wirklich stabil das Ding.
Allerdings muss ich ihn manchmal ein paar mal resetten, bis er im Netz 
erreichbar ist. Kann das an der Initialisierung des Stacks liegen?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Das liegt nicht am Stack sondern an dem Netzwerktreiber! Mit einer 
RTL8019 Karte funktioniert es ohne Probleme. Mit dem ENC28J60 geht nach 
dem start und einem Ping z.B. das erste Packet verloren, aber dann läuft 
er durch. Einen Reset muß ich allerdings nicht durchführen.

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

Das kann ich leider nicht bestätigen, manchmal startet er einfach nicht 
richtig und ist dann auch nicht erreichbar. Auch nicht nach mehreren 
Pings.

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Sreffen S.

Check doch mal die Debug-Ausgabenn per RS232.
Ich glaube er bleibt hängen, wenn die Verbindung
zum NTP-Server nicht klappte.

Passiert mir auch manchmal.

Gruss,
Micha

von Steffen S. (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe die Version 1.0.24 online gestellt! Hier sollten die Initprobleme 
mit dem ENC28J60 beseitigt sein.

Gruß
Ulrich

von Steffen S. (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich habe hier 4 Boards einmal ENC Version 2 und 5 mit Mega32 und Mega644 
sowie 2 Boards mit RTL8019 alle laufen Problemlos!! Es ist richtig das 
der ENC warm wird man muß nur mal ein blick ins Datenblatt werfen!

Gruß
Ulrich

von Steffen S. (Gast)


Lesenswert?

irgendwas scheint bei mir schief gelaufen zu sein. Jetzt blinkt die LED3 
auch nicht mehr, wenn Daten ankommen.Ich denke, dass mein ENC was hat.

von Micha .. (micha68) Benutzerseite


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

von Micha .. (micha68) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi!
Wegen einigen Anfragen hier der Code.

Der Code basiert auf Version 1.04 von Uli, ist also etwas älter.

i2c ist von mir, ebenso servo.

lcd ist aus der Codesammlung

KEINE GARANTIE :)

Gruss,
Micha

von Steffen S. (Gast)


Lesenswert?

Was müsste ich am Source ändern, wenn ich die 3com 3c5x9 Karte auf dem 
ISA-CTRL-Board von Holger Buss betreiben möchte? Ist das überhaupt so 
ohne weiteres möglich?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Steffen S.

Das ist zur Zeit nicht möglich nur die Anbindung einer RTL8019 Karte, es 
sei denn du schreibst den Code für 3com um.

Gruß
Ulrich

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


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

von Peter Z. (flexopete)


Lesenswert?

@ henning
also mich würde es interessieren
gruss flexopete

von Sucher (Gast)


Lesenswert?

Hallo

@Henning ich habe auf jedenfall Interesse, super wäre ne 
Sammelbestellung.

MfG
Achim

von Steffen (Gast)


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.

von Thomas H. (pcexperte) Benutzerseite


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 ;)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Steffen wrote:
> - gibt es mit Java-Script einfache Möglichkeiten?

http://www.liquidx.net/plotkit/

von holger (Gast)


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.

von Steffen (Gast)


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.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ja es gibt eine Mindestlänge von etwa 60 Bytes.

Gruß
Ulrich

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)

von Michi (Gast)


Lesenswert?

Ich habe den Thread jetzt so ziemlich durch. Alle Achtung - schönes 
Teil!!!

Was mich noch interessieren würde:
1. Was macht ihr mit Ding - also wofür setzt ihr es ein?
2. Wie sieht es mit dem Stromverbrauch aus - wieviel Leistung zieht das 
Teil?

von Thilo M. (Gast)


Lesenswert?

Bei längerer Abwesenheit soll bei mir das Haus (Alarmkontakte, 
Heizungssystem usw) beobachtet werden können.
Wäre ja dann von jedem Internetcafe aus möglich.
http://hreg.dyndns.org  (Entwicklungsstand, wenn er läuft)

von CrissCross (Gast)


Lesenswert?

@Thilo M.

Wie misst du die Temperatur -> anlog durch NTC / PTC oder direkt mir 
Digitalen-ICs (DS1620 …)?

von Thilo M. (Gast)


Lesenswert?

Die Temperaturmessungen erfolgen mit PT100 in Vierleiterschaltung, Die 
Messschaltung läuft soweit als Prototyp, die Linearisierung erfolgt per 
Software: Beitrag "PT100 Berechnung der Temperatur @ Widerstand"
Bin grade dabei, den Regler zusammenzubauen, darum sind die Wesites auf 
dem Server noch so primitiv.
Wenn das Ganze fertig ist werde ich mich hier melden, da kann der eine 
oder Andere vielleicht auch was mit anfangen. (Geplant: 8 
Temperaturmesstellen, 2 Schaltausgänge 220V, 4 Heizungsmischer => je 2 
Schaltausgänge 220V, 4 PI-Regler => Schaltregler, LC-Display, Webserver 
per I²C oder RS232, Speisung evtl. per Solarpanel und Batterie).

von Thilo M. (Gast)


Lesenswert?

Ach ja: die Temperaturen auf dem Webserver sind Festwerte, da hängt 
logischerweise noch kein Regler dran! ;)

von Niko (Gast)


Lesenswert?

Kurze Zwischenfrage.

Wo bekommt man eigentlich die Buchse für die Stromversorgung her. Bei 
Reichelt und bei Segor ist mit der Suche nach 'SCD-014-A' nichts zu 
finden.
Könnte ich da wohl einen kleinen Tipp bekommen?

Besten Dank im Voraus

von Thilo M. (Gast)


Lesenswert?

Ich habe die 'HEBW 21' von Reichelt benutzt. Bischen gebastel, weiß 
nicht ob Ulrich die im Sinn hatte? Geht aber.

von Rene Z. (renezimmermann)


Lesenswert?

Hi,

vieleicht bei CSD die "DC Printbuchse 2,5mm gewinkelt
Best.Nr.: 015-5602" ? Habe welche bestellt sind aber noch nicht da.

Gruß

von Bernd P. (bertron)


Lesenswert?

Die 015-5602 von CSD habe ich auch. Da muß man allerdings auch etwas 
basteln, ist aber nicht weiter problematisch.
Bernd

von myscha (Gast)


Lesenswert?

Wie sieht es mit dem Stromverbrauch aus?

Und hat evtl. jemand Interesse das Ganze mit einem Mega128 oder CAN128 
aufzubauen? Ich spiele mit dem Gedanken das zu portieren und dann evtl. 
Platinen fertigen zu lassen.

Wie wäre der CP2200 von Silabs als Alternative zum ENC28J60? Der müsste 
etwas schneller sein, denke ich. Klar hat der auch nur 10Mbit/s auf der 
Ethernet-Seite, aber die Kommunikation zum uC sollte durch das parallele 
Interface ne Ecke flotter sein.

von Gerd G. (elektrikser)


Lesenswert?

>Wie sieht es mit dem Stromverbrauch aus?

Braucht bei mir ca. 230 mA. Der ENC28j60 schluckt kräftig.

Mit dem Atmega128 bastle ich schon rum, allerdings noch mit dem RTL8019 
und dem neuen Stack.

Gruß Gerd

von Steffen (Gast)


Lesenswert?

>Klar hat der auch nur 10Mbit/s auf der Ethernet-Seite, aber die >Kommunikation 
zum uC sollte durch das parallele Interface ne Ecke flotter >sein.

Also ich habe das Gefühl, dass der so "langsam" ist weil hier nur ein 
TCP-Ping-Pong gespielt wird (geringe Resourcen der AVRs). Es wird immer 
nur eine Nachricht gesendet, erste wenn die Bestätigung kommt wird die 
nächste Nachricht gesendet.

Problem dabei scheint zu sein, dass sich Windows viel Zeit lässt. Mit 
einem Browser unter Linux geht es deutlich schneller.

Es würde wahrscheinlich mehr bringen den Stack etwas zu optimieren, 
statt den CP einzusetzen. Aber der hat vielleicht noch andere Vorteile 
(Energie, Interruptbeslastung, bei UDP gibt es vielleicht auch einen 
Geschwindigkeitsvorteil...).

steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

@Steffen ein schnelleres IC mit parallel Interface bringt nichts, da 
hast du Recht! Eine andere Software schon. Aber dann nur mit mehr RAM 
also gleich wie das Ethernut Projekt. Selbst µIP ist in unseren Fall 
nicht schneller. Benutzt man Linux geht das ganze auch schneller. Ist 
aber evt. auch gut so, vorallem wenn mehrere Leute (Browser) zugreifen.

Mfg
Ulrich

von Sebastian (Gast)


Lesenswert?

Hallo Thilo,

es bleibt natürlich jedem selbst überlassen was er mit dem WebServer 
macht... IMHO fehlt dem Vorschlag, den WebServer im Internet zu 
betreiben um z.B. Haustechnik damit zu regeln oder auch nur zu 
überwachen, allerdings ein Sicherheitshinweis. Ich würde mir das 2 mal 
überlegen.

Gruß
Sebastian

von Thilo M. (Gast)


Lesenswert?

Hast du natürlich Recht.
Den Türöffner oder Hauptschalter werde ich damit sicher nicht bedienen! 
;)
Soll hauptsächlich zum Ansehen der Parameter sein, Bedienung erfolgt 
dann wohl nur übers LAN daheim.

von Steffen (Gast)


Lesenswert?

@Ulrich:

Das war KEINE Kritik irgendwelche Art an der Software!!! Mit den 
Möglichkeiten der verwendeten AVRs (insbes. der Ram-Beschränkung) geht 
das einfach nicht anders.

Vielleicht noch als Hinweis für Mitleser, die nicht so "tief" in der 
Materie stecken:
Beim TCP wird jede Information (Nachricht) bestätigt. Das heisst wenn 
ich eine bestimmte Anzahl an Bytes sende, bekomme ich dafür die 
Bestätigung, dass sie richtig empfangen wurden - wenn nicht, wird nach 
einer bestimmten Zeit die gleiche(!) Information noch mal gesendet. Um 
die Netzlast nun etwas zu verringern, gibt es die Möglichkeit, dass man 
mehrere Pakete auf einmal sendet und auf eine einzelne Bestätigung 
wartet. Dies wäre die Stelle, an der eine Optimierung 
Geschwindigkeitsvorteile bringen würde. Nachteil daran ist, dass der 
Inhalt jedes gesendeten Paketes zwischengespeichert werden muss, damit 
ein neues Senden möglich ist. An dieser Stelle kommt nun der notwendige 
(von Ulrich erwähnte) RAM ins Spiel. Wenn eine Nachricht etwa 500-Byte 
Nutzdaten enthält und der Controller nur 2kByte insgesamt hat, kann man 
es sich nicht leisten, viele Nachrichten zwischenzuspeichern.

dann bis zur nächsten mail,
steffen.

von myscha (Gast)


Lesenswert?

Kann man das Ganze denn noch sicher(er) machen? Es wäre schon von 
Vorteil, wenn man damit auch Einfluss nehmen, d.h. irgendetwas steuern 
könnte...

Wenn ich damit nur aus dem LAN zuhause schalten kann, kann ich die paar 
Meter gerade noch laufen...

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Was heißt nicht sicher?? Wenn ich die IP und Benutzer und Passwort nicht 
weiter gebe halte ich es für sicher genug um seine Heizung zu steuern. 
Allerdings sollte dieses nicht umbedingt aus einem Internetcaffe 
erfolgen. Wer wirklich sicher Steuern und Schalten will benutzt eine 
vorgeschaltete Firewall und einen VPN Server. Mir hat hier noch niemand 
mein Licht an und ausgeschaltet.

Gruss
Ulrich

von Thilo M. (Gast)


Lesenswert?

Ich denke auch, dass der Passwortschutz ausreicht.
Auf meiner HP habe ich ja auch Passwortgeschützte Ordner, dort waren 
auch noch keine illegalen Aktivitäten oder Zugriffe zu verzeichnen.
Und wenn den Domainnamen keiner kennt, wird gar nicht erst probiert zu 
hacken. Außerdem lohnt der Aufwand nicht, hier eine Brutforce-Attacke zu 
starten, nur um jemandem das Licht auszuschalten, oder?
Aber das Passwort/Username noch zusätzlich zu verschlüsseln, da sind der 
Phantasie kaum Grenzen gesetzt ...

von Sebastian (Gast)


Lesenswert?

Hallo,

also ich sehe das mit der Sicherheit ein bisschen anders. Klar, solange 
es um ein Bastelprojekt geht, kann einem das ziemlich egal sein, aber 
wenn man, wie erwähnt, den AVR webserver ins Internet - oder auch in ein 
Intranet bringt um Messdaten zur verfügung zu stellen oder sogar 
Steuerungsaufgaben davon erledigen lassen will, wäre ich persönlich 
damit ehr vorsichtig.

Username/Passwort:
hält einem "man in the middle attack" nicht stand. Im  Internetcafe oder 
über einen Öffentlichen Hotspot (noch schlimmer) besteht die 
Möglichkeit, dass jemand mithört.

Brutforceattack:
- das rausfinden von passwörtern mittels Wörterbuch - Backtrack CD 
einlegen und los gehts, ist nicht wirklich aufwendig.

Warum sollte jemand bei mir das Licht an und ausschalten wollen:
Im einfachsten Fall aus dem gleichen Grund aus dem Viren geschrieben 
werden und sich der Hund die ... leckt - weil es geht. Und wenn jemand 
erstmal auf den Geschmack gekommen ist, vielleicht schaltet er ja das 
Licht 1000 / Minute an und aus.

SynFlood Attack:
der Webserver ist selbst mit einfachsten mitteln "aus dem Verkehr" zu 
ziehen, steht also nicht mehr zur verfügung.

Keiner kennt meine IP, meinen DNS Namen:
Wenn man sich mal die Logfiles der Firewall ansieht - leider sind die 
meisten billig DSL router nicht gerade gesprächig - kann man 
feststellen, das auch schonmal wahllos drauflos probiert wird. Einem 
Angreifer könnte es ja egal sein bei wem er 1000 mal Lich an und 
ausschaltet, er macht es einfach egal wo.

Mir ist noch nie was passiert:
Ich hatte auch noch nie einen Virus, trotzdem habe ich einen 
Virenscanner im Einsatz.

Firewall & VPN:
yep, das hilft, aber z.B. die Firewall die den AVR vor dem erwähnten 
synflood attack schützt gibt's nicht beim ISP umsonst dazu wenn man 
einen DSL Vertrag abschließt. VPN Geräte bekommt man umsonst garnicht 
(die preiswerteste Variante die ich kenn ist OpenVPN). Um einen 50 EUR 
Webserver zu schützen müßte man dann schon recht tief in die Tasche 
greifen. Außerdem stellt sich dann natürlich die Frage ob ich bei dem 
Aufwand nicht gleich einen "normalen" WebServer installieren sollte.

Ich will das Projekt hier nicht madig machen, sondern lediglich 
aufzeigen welche Probleme sich bei dem "Produktiveinsatz" ergeben 
können. Ob die Sicherheitsrisiken relevant sind oder nicht, muß letzten 
Endes jeder für sich selbst endscheiden.

Gruß
Sebastian

von John-eric K. (mockup)


Lesenswert?

Hi Ulrich.
finde das Projekt sehr interessant!!!
Ich wollte mal fragen ab wann du die enc´s verfügbar hast?

Und ich hab deine LC-Display Platine mal verändert.
Sprich ich hab nur 4x16 LCD´s hier herum liegen.
Werde die Montag ätzen und bestücken
und das Layout dann hier mit Bildern Posten.

MfG
MockUp

von Thilo M. (Gast)


Lesenswert?

@ John-eric:
guck mal bei http://www.embedit.de rein.
Die haben die Teile verfügbar, habe dort auch bestellt.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die sind schon die ganze Zeit verfügbar hatte nur die Bemerkung nicht 
entfernt.

Gruß
Ulrich

von Stefan Peter (Gast)


Lesenswert?

Hallo,

@all
Ich verfolge dieses Projekt schon seit längerem mit großem Interesse.
Seit einiger Zeit hab ich den Webserver in der ein wenig modifizierten 
Version 30 am rennen. Nun wollte ich einmal einen mega8 über RS232 
anbinden und übers Web steuern. Auf dem mega8 läuft im großen und ganzen 
die main usart und cmd von Uli.
Ich habe nun ein Problem mit der Kommunikation. Ich sende vom Webserver 
aus z. B. LED1on und möchte dann, dass am mega 8 die entsprechende LED 
angeht. Übers Terminal funktioniert das ganze schon super, nur der 
Webserver und der mega 8 mögen noch nicht so ganz. Ich hatte das 
Problem, dass der Webserver ständig über USART seinen Status abgibt. Der 
mega8 kennt diese Befehle nicht und antwortet mit Error (der Webserver 
antwortet auf den Error mit einem weiteren Error usw. -> 
Endlosschleife). Das hab ich bereits behoben. Allerdings gibt es ein 
Problem, wenn ich in der main das usart_write("Ready\r\n\r\n");) bzw. 
usart_write("ERROR\r\n\r\n"); auskommentiere (im Webserver und mega8). 
Bekannte Befehle wie HELP und ? oder LED1on funktionieren. Sobald ich 
aber einen unbekannten Befehl sende wird dieser zurückgegeben (Echo) und 
ein z.B. HELP oder andere bekannter Befehle funktionieren nicht mehr, 
erst nach einem Reset.
Ich hab die main - while - Schleife auch schon mal auf
1
  while(1)
2
  {
3
      
4
    if (usart_status.usart_ready)
5
    {
6
7
      cmd_exec(&usart_rx_buffer[0]);
8
      usart_status.usart_ready =0;
9
    }
beschränkt. Dann muss ich aber in der LED1on - Funktion irgendein 
usar_write("blablub"); haben sonst wird die LED1on nur ein einziges mal 
ausgeführt.

Also irgendwie hab ich den Eindruck, dass nach dem Empfang eines Strings 
auch ein String ausgegeben werden muss. Aber warum?? Das ist in meinem 
Fall schädlich, da die beiden Controller sonst in einer USART 
Endlosschleife hängen bleiben.

Ich hoffe mir kann jemand helfen. Dank im Voraus.

Stefan

PS: Ist mein erste uC Projekt in C.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier der Anfang meiner Doku!

Gruß
Ulrich

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hier für alle die gleich den ganzen Bausatz des Webservers Bestellen 
wollen eine kleine Hilfe um die Bauteile etwas schneller in den 
Warenkorb zu legen als das von Hand möglich ist.

Also viel Spass mit der "OneClick in shopping cart" –Methode

P.S.:  evtl. müsst Ihr in euren Browser JavaScript erlauben

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Sorry die aber die andere reichelt.htm hat einen Fehler aber diese 
funktioniert.

von Freakazoid (Gast)


Lesenswert?

@Christian

"Pico 0,5A" gibt es wohl nicht (Sicherung).

Sonst: Geile Idee.

von Christian (Gast)


Lesenswert?

Doch die gibt es! Das ist nur eine Rückfrage von reichelt weil die 
Bestellmenge 0 ist alle anderen Bauteile sind ja schon ordentlich im 
Warenkorb.

von Christian (Gast)


Lesenswert?

Bestellmege 0 bei der Sicherung weil sie in Layout-Version ja noch nicht 
dabei ist.

von Martin (Gast)


Lesenswert?

Hallo,
mein System läuft jetzt auch. Echt tolles Projekt!
Nur wollte ich jetzt das LCD-Display nach der Schaltung von Ulrich 
anschließen. In der config.h habe ich   "#define USE_SER_LCD    1" 
gesetzt. Aber ich erhalte keine Anzeige.
Hatte aber kein 74AC164N da und habe einen 74HCT164 genommen. Kann es 
daran liegen?

Gruß

Martin

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

@Christian super Sache dein Formular!!

@Martin ändere mal das Timing in LCD.H von BUSY_WAIT evt. hast du ein 
langsameres Display! Ich glaube nicht das es am IC liegt. Ich benutze 
übrigens einen 74LS164N.

Gruß
Ulrich

von Martin (Gast)


Lesenswert?

Hallo Ulrich,
vielen Dank für den Hinweis! Das war es. Ich betreibe den 644 mit 20 
Mhz. habe  den Wert von Busy_Wait auf 10000 gesetzt und schon habe ich 
eine Anzeige!
Gruß

Martin

von Martin (Gast)


Lesenswert?

Hallo Ulrich,
da der ATMEGA 644 auch als 20 MHz Version gibt, kann man dann nicht 
statt der festen Busy_Wait Vorgabe folgende Zeile in der lcd.h 
aufnehmen:   #define BUSY_WAIT        0.000375*SYSCLK
?

Gruß
Martin

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hallo Leute!

Ich versuche Websiten zu erzeugen, die grösser als
der Buffer sind. Mein 644 arbeitet mit einem MTU von
1600, reicht aber nicht.

Im Moment arbeite ich an einer Anzeige einer Temperaturkurve,
die möglicht viele Werte abbilden soll. Bei 60 dargestellten
Werten funktioniert das ganze noch, hätte aber gerne mehr, türlich :)

SD-Karte zur Speicherung der Webseiten und somit streamen wäre eine 
Idee, jedoch habe ich mich da noch nicht rangetraut :)

Was kann ich tun?

Ansonsten läuft der Webserver super. Inzwischen mit S65-Display
und LM92.

Gruss,
Micha

Hier zu sehen: Temperaturdiagramm mit Javascript
http://mikrocontroller.homedns.org

von Thomas P. (Gast)


Lesenswert?

Und wo ist dein Problem, Micha?

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
Na irgendwann ist der Buffer übervoll und dann stürzt der arme ab...

Gruss,
Micha

von Rene Z. (renezimmermann)


Lesenswert?

Hi,

wo wird eigentlich var_array[x] deklariert ?

Gruß Rene

von Micha .. (micha68) Benutzerseite


Lesenswert?

Hi!
On the fly, direkt über y

Gruss,
Micha

von Rene Z. (renezimmermann)


Lesenswert?

...in yxz.h ? ;-)

von Micha .. (micha68) Benutzerseite


Lesenswert?

Ups :D

Dachte, Du siehst Dir den Javascriptcode an.
X ist ja einfach ne fortlaufende Position, x wird
durch javascript erzeigt.
y wird vom Webserver übertragen.

Gruss,
Micha

von Rene Z. (renezimmermann)


Lesenswert?

habs gefunden, var_array[] wird in httpd.d deklariert.

@Michael V.: so weit wie du bin ich leider noch nicht, passe gerade den 
"1wire" ein.

gruß

von Micha .. (micha68) Benutzerseite


Lesenswert?

OHA :D

Ich war so in mein Problem verstrickt, habe garnicht
bemerkt, dass Du was völlig anderes meinst ;)

Habe mein Problem nun so gelöst:

Bevor ich den Buffer mit meinen Werten fülle, füge
ich ein Steuerzeichen ein, das einfach den Buffer mit Spaces
voll macht.
Danach habe ich einen fast leeren Buffer, den ich mit Werten füllen 
kann.

Danach wieder füllen mit Spaces bis Anschlag und danach kommt der Rest 
der Seite...


Nicht schön, aber geht :)

gruss,
Micha

von Micha .. (micha68) Benutzerseite


Lesenswert?

Ach ja, nochwas:

Da mein Server nicht richtig startet, wenn er per NTP keine Zeit
empfangen hat, habe ich folgendes eingebaut:
1
  NTP_DEBUG("Kein NTP Server gefunden!!\r\n");
2
  
3
  ntp_error++;
4
  if (ntp_error>=10)
5
    {
6
    command_reset();
7
    }
8
  ntp_request();
9
  return;

Dh, er macht nach 10 vergeblichen Versuchen einen automatischen Reset
und versucht es neu.

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe das Protokoll der Philips DC-3840 Kamera entschlüsselt. Dafür werde 
ich jetzt einen neuen Thread öffnen.

Gruß
Ulrich

von sascha (Gast)


Lesenswert?

Hallo Micha,

wenn die Daten nicht in ein Packet passen wird der Rest doch eigentlich 
automatisch ins nächste Packet gepackt! Wie fügst du denn die aktuellen 
Daten in das Packet ein ? Wenn du die Variablen %VA... in die Seite 
packst, die dann beim kopieren der Daten vom Flash in den Puffer durch 
aktuelle Werte ersetzt werden sollte es eigentlich keine Probleme geben.

Gruss Sascha
_________________________________________________________________
http://sw-penig.dnydns.org:8080/wetter.htm

von T. S. (trse)


Lesenswert?

Ist ein echt toller Webserver.Laeuft bei mir schon 5 Monate one 
Probleme!!

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Habe gestern meine Reichelt Bestellung erhalten.

@Ulrich
Bei der Erstellung von „reichelt.htm“ habe ich mich an deine liste, aus 
dem Worddokument, in deiner Layout-zip gehalten.
1.  R8 ist in eagle aber 2K und in der Liste 2,7K damit auch bei der 
Bestellung
2.  JP1, JP2, JP3 sind laut liste Rastermaß 1,27 -> passen also nicht
 Ist es egal bei R8 ob der Wert 2K oder 2,7K ist?
Bei den JP`s habe ich bei reichelt nur SL 1X36G 2,54 als kleinste 
alternative gefunden mit 0,17€ sogar günstiger als in deiner Liste ;-)

Im Anhang habe ich die geänderte reichelt.htm.
Wenn R8 doch 2K sein soll einfach die  Bestellnummer in 1/4W 2,0K 
ändern.

PS.: kann man die alten reichelt.htm löschen damit nicht neue Leser die 
alten Versionen Verwenden?

von Uli (Gast)


Lesenswert?

Hallo,

R8 mit 2,7K ist richtig ich werde die Liste sofort aktualisieren.

Gruß
Ulrich

von Marco S. (masterof)


Lesenswert?

Mein Webserver läuft jetzt auch.

Es gibt aber ein Fehler auf der Webseite da wird gesagt das die 
IP-Adresse 192.168.0.98 ist aber mit dem Hex-File von der Webseite hat 
er die IP-Adresse 192.168.0.99. Könntest du das noch beheben.

Schöne Feiertage.

Gruß Marco

von Simon K. (simon) Benutzerseite


Lesenswert?

Ts T. wrote:
> Ist ein echt toller Webserver.Laeuft bei mir schon 5 Monate one
> Probleme!!

Dann bist du aber der Zeit mächtig voraus ;)

@Ulrich: Im Datenblatt wird R8 mit 2,32k und 1% Toleranz angegeben. Was 
spricht denn dagegen einen 2,2k Widerstand zu nehmen? Hattest du nicht 
anfangs einen solchen?
2,7k ist weiter weg von 2,32k, als 2,2k. Oder gab es Probleme mit dem 
kleineren Widerstand?

Das einzige "Problem" was ich beobachten kann ist, dass der Strom durch 
den Übertrager steigt und der ENC28j60 ein wenig wärmer wird. Aber 
ansonsten funktioniert mein kleiner Webserver hier ohne Probleme.

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Sascha
Die Variablen %VA enthält im original 10 Integer, wenn man alle
nutzt, und in ein HTML einsetzt, hat man max. 10x3=30bytes.
Da reicht der Buffer.

Da ich aber viel mehr Daten darstellen will,
im Moment bin ich bei 2x 120 Messwerten, wären das 2x120x4 = 960 Bytes.
Zusammen mit dem Rest sind das über 1500Bytes, die im Moment der Buffer 
hergibt.

Im Moment probiere ich, eine SD-Karte anzubinden. Dann gibt es das 
Problem
nicht mehr, da dann der Buffer gefüllt wird, wie im Moment die
html-Seiten aus dem Flash.

Schau Dir den Code der Seite mal an, dann siehst Du was ich meine:
http://mikrocontroller.homedns.org/

Gruss,
Micha

von Sucher (Gast)


Lesenswert?

Hallo

ich möchte mir für die Einbaubuchse (HEBW 21) einen passenden 
Hohlstecker mitbestellen welcher ist da der Richtige (Reichelt).
HS 21-9 oder
HS 21-14
oder passen beide?

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Michael V.

Du nutzt Java-Script zur Darstellung der Kurven, sieht sehr gut aus, ist
der Code frei verfügbar so das ich ihn auch nutzen kann?

von Christian (Gast)


Lesenswert?

Kann mir bitte mal einer die Fuse-Einstellungen in HEX für einen 
ATmega644 geben.
Im orginal hat der
EXT: FF
HIGH:  99
LOW: 62

mit AVR-OSPII (547) ausgelesen

von Christian (Gast)


Lesenswert?

oder kann ich die aus dem makefile so verwenden
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

EXT: FF
HIGH:  df
LOW: ff

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


Lesenswert?

@ Sucher,
ja passen beide, der eine ist halt 9mm lang und der andere 14mm

Grüß Henning

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Thomas
Hi!

Der Code ist frei verfügbar. Wie Du vielleicht
gesehen hast, lade ich die library von einem externen
Webserver nach. Sobald meine MMC-Karte läuft, hole
ich sie dann von dort.

Ziel ist es, 8 Sensoren mit hoher Auflösung darzustellen.

Hierher habe ich das ganze:
http://www.walterzorn.de/jsgraphics/jsgraphics.htm#download


Gruss,
Micha

von Marco S. (masterof)


Lesenswert?

Ja diese einstellung(Makefile) der Fuses kannst du verwenden.
Die habe ich auch verwendet.

von Simon K. (simon) Benutzerseite


Lesenswert?

Michael V. wrote:
> @Thomas
> Hi!
>
> Der Code ist frei verfügbar. Wie Du vielleicht
> gesehen hast, lade ich die library von einem externen
> Webserver nach. Sobald meine MMC-Karte läuft, hole
> ich sie dann von dort.

Naja, so super ist das jetzt auch nicht. Das belegt massig Speicher und 
wenn ich mit meinem Firebug mir das Document-Object-Model anschaue 
brauchts erstmal ne Zeit bis der alle <div>s identifiziert hat ;)

Ich hab aber mit DIVs und Ajax (missbraucht um eine .csv Datei zu laden) 
bereits Balkendiagramme erzeugt.

http://klinkerstein.m-faq.de/JsBarDia/

von Micha .. (micha68) Benutzerseite


Lesenswert?

@Simon

Kennst Du ne bessere Möglichkeit, die Grafik zu erzeugen?
Ich merke hier bei 2 Verläufen, dass der PC arg dran knappert.
Bei 8 wirds nicht besser :)

Gruss,
Micha

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

der Kamera Philips DC-3840 Treiber für einen Mega32/644 ist fertig! 
Dieser ist in meinem Kamera Thread zu finden. Leider kann ich euch kein 
Weihnachtsgeschenk mehr machen. Das heißt Webserver mit Kameratreiber. 
Dieses werde ich erst nach den Feiertagen schaffen (ich hoffe bis 
Freitag).

Gruß
Uli

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Habe es doch noch geschaft nun mein Webserver mit Kamera!!

Frohes Fest!
Uli

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von Micha .. (micha68) Benutzerseite


Lesenswert?

@Andreas

Guter Link, Danke. Werde das die Tage mal probieren.

Leider ist die Nutzung der API auf 50.000 Aurufe pro Tag begrenzt :)

Gruss,
Micha

von Michael B. (gm8816)


Lesenswert?

Hallo,
mit welchem Compiler und mit welchen Einstellungen wurde das kompiliert. 
Ich habe bei avr-gcc folgende Fehlermeldung bekommen:

rm -rf test.o enc28j60.o httpd.o main.o stack.o timer.o usart.o cmd.o 
test.elf dep/* test.hex test.eep test.lss test.map
Build succeeded with 0 Warnings...
avr-gcc.exe -I"C:\Users\user\Desktop\test\..\..\..\..\Program 
Files\Atmel\AVR Tools\include"  -mmcu=atmega32 -Wall -gdwarf-2 
-mmcu=atmega32 -O0 -fsigned-char  -MD -MP -MT test.o -MF dep/test.o.d 
-c  ../test.c
avr-gcc.exe -I"C:\Users\user\Desktop\test\..\..\..\..\Program 
Files\Atmel\AVR Tools\include"  -mmcu=atmega32 -Wall -gdwarf-2 
-mmcu=atmega32 -O0 -fsigned-char  -MD -MP -MT enc28j60.o -MF 
dep/enc28j60.o.d  -c  ../enc28j60.c
../enc28j60.c: In function 'enc28j60Init':
../enc28j60.c:222: error: 'for' loop initial declaration used outside 
C99 mode
make: *** [enc28j60.o] Error 1
Build failed with 1 errors and 0 warnings...

von Christian (Gast)


Lesenswert?

mit WinAVR Version 20070525 oder der neuen 20071221

http://sourceforge.net/project/showfiles.php?group_id=68108

von Simon K. (simon) Benutzerseite


Lesenswert?

Der Fehler bezeichnet das nur C99-Konforme, aber nicht gnu99 Konforme 
Deklarieren der Iterationsvariable innerhalb des for-statements.
1
for (int i=0; i<10; i++)
2
...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

gnu99 ist eine Erweiterung von C99 und hat kein Problem damit, 
allerdings muss man dem Compiler schon sagen dass man gnu99 verwenden 
möchte:
-std=gnu99

von Simon K. (simon) Benutzerseite


Lesenswert?

Hab ich gnu99 gesagt? ;) Ach, alles Mist. Ich meine natürlich den Modus, 
der ohne die Angabe eines Standards verwendet wird.

von Michael B. (gm8816)


Lesenswert?

gnu99 hat aber funktioniert

von Simon K. (simon) Benutzerseite


Lesenswert?

Ja, im gnu99, sowie im C99 Standard ist das erlaubt (entgegen meiner 
Falschaussage)

von eProfi (Gast)


Lesenswert?

Hallo Ulrich und alle,
ich habe die Ansteuerung des ENC überarbeitet, dürfte deutlich schneller 
sein, da die Bankumschaltung wirklich nur wenn nötig geschieht, also 
nicht bei den gespiegelten Registern:
Beitrag "Re: I/O über Ethernet mit einem ENC28J60"
Beitrag "ENC28J60 correct value of PHLCON and mirrored registers"
Vielleicht will das jemand in dieses Projekt mit einarbeiten.

z.B.
  //config NIC LEDs
  enc28j60PhyWrite(0x14,0x047A);

besser:
  enc28j60_write_phy(ENC28J60_PHY_PHLCON, 0x3472);
//cave: Table3-3: reset value is 0x3422, do not modify the reserved 
"3"!!
//RevA Datasheet page 9: write as '0000', see RevB Datasheet: write 
0011!

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo @eProfi,

Habe ich schon übernommen, werde ich morgen Online stellen.

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

So die neue Software V1.0.40 ist online.

Gruß
Ulrich

von Nik B. (nikbamert)


Angehängte Dateien:

Lesenswert?

Hallo Ulrich,

vielleicht kann ich auch noch etwas zu deinem Projekt beitragen :)

Ich bin gerade auch an einem Projekt mit enc28j60 dran und habe ein paar 
Tricks ausgenutzt um die Datenübertragung schneller hin zu kriegen.
Im Anhang befinden sich die relevanten Codeabschnitte, die ich im 
enc28j60 Treiber geändert habe, damits schneller läuft. Ich bin jetzt 
nicht mehr sicher, wieviel diese Änderung gebracht hat, da ich noch 
einiges anderes am Treiber geschraubt habe. Jedenfalls erreiche ich nun 
bei 20 Mips 420Kb/sek

PC (UDP) --> ENC --> mega644 --> Harddisk

Bei kleinen Paketen(ARP/ICMP) wird der Unterschied warscheinlich nicht 
all zu gross sein, bei grösseren (ab etwa 300 Byte) Frames hingegen 
schon.
Der "originale" Treiber von Pascal Stang macht nach jedem Byte das vom 
Buffer gelesen / geschrieben wird, einen 16bit Vergleich, was das ganze 
ordentlich ausbremst. Ich teile die Daten sozusagen in 256 Byte grosse 
blöcke ein und muss daher nur noch 8bit vergleiche machen...

Gruss
Nik

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Hier mal ein kleines Video meine Person beim zusammenbau der Platine ;-)

http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex/zusammenbau

Gruß
Ulrich

von holger (Gast)


Lesenswert?

Hi Ulrich,

kleine Kritik :(

In enc28j60.c wird _delay_ms() verwendet. An sich ja nicht
schlimm, aber man muss da höllisch aufpassen.

The maximal possible delay is 262.14 ms / F_CPU in MHz.

Bei 16MHz z.B. darf das delay also maximal 16ms sein.
Sonst gibt es falsche delays. Ich empfehle das Kapitel
zu _delay_ms() in der avrlibc Doku mal zu lesen. Da gibt
es noch ein paar andere Fallen bei _delay_ms().

So könnte man das Problem erstmal entschärfen:

void Delay_ms(unsigned int time)
{
 while(time--) { _delay_ms(1); }
}

Gruß
 Holger

von Simon K. (simon) Benutzerseite


Lesenswert?

Nik Bamert wrote:
> Hallo Ulrich,
>
> vielleicht kann ich auch noch etwas zu deinem Projekt beitragen :)
>
> Ich bin gerade auch an einem Projekt mit enc28j60 dran und habe ein paar
> Tricks ausgenutzt um die Datenübertragung schneller hin zu kriegen.
> Im Anhang befinden sich die relevanten Codeabschnitte, die ich im
> enc28j60 Treiber geändert habe, damits schneller läuft.

Leider hast du die Errata-Workarounds nicht drin, die eProfi vorschlug

von Steffen (Gast)


Lesenswert?

@ulrich:

Tolles Video :-)

Weiter so.

Steffen.

von Thilo M. (Gast)


Lesenswert?

Hi Ulrich, klasse Video!

[Kritik] habe gelernt, die Drähte der Bauteile VOR dem Löten 
abzukneifen, um Spannungen und die daraus folgende Whiskerbildung zu 
vermeiden [/Kritik]

Für Bastler nicht unbedingt notwendig, da die Projekte meist nicht für 
Langzeiteinsatz gedacht sind.

Trotzdem: geniales Teil, wird demnächst in meinem Heizungsregler platz 
finden! ;-)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich benutze noch bleihaltiges Lötzinn. Da ist die Whiskerbildung nicht 
so hoch ;-)

Gruß
Uli

von Thilo M. (Gast)


Lesenswert?

Ist auch bei bleihaltigem Zinn schlimm genug, mit Bleifreiem gibt's ja 
noch keine Langzeiterfahrung.
Wie gesagt, bei Bastlern nicht so tragisch.

Wir haben sehr viele Ausfälle deswegen auf Karten, die so zwischen 20 
und 30 Jahren alt sind.

Das Bleifreie kennen ich noch gar nicht, bin auch nicht besonders scharf 
drauf! ;)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Was mich interressieren würde, sind die Platinen auch doppelseitig? 
Konsumergeräte haben schon wesentlich eher Probleme mit kalten 
Lötstellen so nach 5 Jahren. Allerdings sind hier haufig die Platinen 
nur einseitig.

von Thilo M. (Gast)


Lesenswert?

Die Platinen sind meistens doppelseitig. Die meisten Probleme gibt's bei 
dichter Bestückung und unter den Bauteilen (bevorzugt ICs mit 
Keramik-Gehäuse).
Oft sind auch die Drähte umgebogen (maschinelle Bestückung) und berühren 
bei höheren Temperaturen (Wärmeausdehnung) die benachbarte Leiterbahn.

Die kalten Lötstellen gibt's eher bei Produktionsfehlern wie Vibrationen 
bei der Verzinnung oder schlechtenm (billigem) Platinen- und 
Bauteilmaterial. Also nicht zittern beim Löten, vorher 'nen Kurzen 
kippen! ;)

von eProfi (Gast)


Lesenswert?

Holla,
@Nik: Du hast Dir zwar viel gedacht, aber ich denke mal, dass Deine Idee 
wenig bringt, denn der Mega kann auch ein paar 16-Bit-Befehle:
addw
cmpw

Man müsste das mal im Assembler-Text anschauen.
und beim  Herabzählen auf 0  braucht man gar keinen expliziten 
Vergleich, denn da wird nur das Z-Flag abgefragt (z.B. bne  branch if 
not equal).

Im Übrigen könnte man Deine Idee auch für Zahlen über 256 realisieren, 
denn die oberen 8 Bits bleiben ja jeweils 256 mal gleich. Aber das 
bringt nur was auf Kernen, die wirklich nur 8-Bit-Befehle haben.

Der Code ist schon ziemlich kompakt, man könnte nur etwas eleganter 
schreiben:
while(len--){
  // write data
  SPDR = *data++
  while(!(SPSR & (1<<SPIF))){};
}

Aber genau so steht es ja in meinem File!

Ich bezweifle jetzt mal, dass Dein Code hier schneller ist.


@Simon K.:
Ich habe überhaupt nichts von den Erratas erwähnt oder vorgeschlagen. 
Aber Du hast recht, so weit ich mich erinnere, sind in Pascals Code die 
Errata noch nicht eingeflossen.


@Ulrich
Aha, Du hast Das .c-File komplett übernommen und nur das .h-File 
angepasst, sehr gut!

Das Video erinnert mich an eine Serie in meiner Kindheit, in der viel 
Handwerkliches gezeigt wurde,  ohne Worte, nur mit Hintergrundmusik.
Was das im WDR? Kennt das noch jemand?



Ich habe gestern mal die ASM-Outputs des Simon-Codes angeschaut, da gibt 
es noch deutliches Optimierungspotential bei den höheren Ebenen.

Oft werden 32-Bit-Variablen mühsam aus Bytes montiert, um dann wieder in 
Bytes zerlegt zu werden. Eigentlich müssten nur 4 Bytes kopiert 
werden...

von Simon K. (simon) Benutzerseite


Lesenswert?

eProfi wrote:
> Holla,
> @Nik: Du hast Dir zwar viel gedacht, aber ich denke mal, dass Deine Idee
> wenig bringt, denn der Mega kann auch ein paar 16-Bit-Befehle:
> addw
> cmpw
>
> Man müsste das mal im Assembler-Text anschauen.
> und beim  Herabzählen auf 0  braucht man gar keinen expliziten
> Vergleich, denn da wird nur das Z-Flag abgefragt (z.B. bne  branch if
> not equal).

Jau, ich glaube ehrlich gesagt auch nicht, dass das arg viel bringt 
(Außer Code-Unübersichtlichkeit ;))

> @Simon K.:
> Ich habe überhaupt nichts von den Erratas erwähnt oder vorgeschlagen.
> Aber Du hast recht, so weit ich mich erinnere, sind in Pascals Code die
> Errata noch nicht eingeflossen.

Nanu, ich beziehe mich auf den von dir verlinkten Thread:
Beitrag "ENC28J60 correct value of PHLCON and mirrored registers"

Und da sind sehrwohl Errata-Workarounds eingearbeitet:
1
  //bad silicon workaround:
2
  //reset tx logic:
3
  enc28j60_spi_write_word(ENC28J60_OP_BFS | ENC28J60_REG_ECON1, (1<<ENC28J60_BIT_TXRST));
4
  enc28j60_spi_write_word(ENC28J60_OP_BFC | ENC28J60_REG_ECON1, (1<<ENC28J60_BIT_TXRST));
(Als Beispiel)

Schaut mal auf der Microchip Homepage, wie riesig das Erratasheet ist...

> Ich habe gestern mal die ASM-Outputs des Simon-Codes angeschaut, da gibt
> es noch deutliches Optimierungspotential bei den höheren Ebenen.

Simon Schulz ist aber gemeint in diesem Falle. Meinen Code dürftest du 
nicht vorliegen haben ;)

> Oft werden 32-Bit-Variablen mühsam aus Bytes montiert, um dann wieder in
> Bytes zerlegt zu werden. Eigentlich müssten nur 4 Bytes kopiert
> werden...

Sicher, dass das überhaupt etwas an Rechenleistung braucht? Ich bin mir 
ziemlich sicher, dass der Compiler hier nur noch die Zugriffsreihenfolge 
in den Speicher beachtet, wenn er Variablen in oder aus Register/n holt.

Wenn Interesse besteht, hänge ich mal meinen Code an. Habe bisher nicht 
viel optimiert muss ich aber auch dazu sagen. Lediglich alle 
(relevanten) Errata-Workarounds sind bisher eingeflossen.

von Frank B. (Gast)


Lesenswert?

Supi, mein Server läuft auch. Respekt und Dank an dieser Stelle!

Ein Problem nur mit dyndns:

dynamic-DNS-Account mit Router-IP eingerichtet, im Router DDNS und 
Portforwarding (Port 80 TCP&UDP) aktiviert. Wenn ich nun meine 
dyndns-URL aufrufe, meldet in stack.c die Funktion check_packet() 
"Erzeuge ARP Reply" über die DEBUG-Ausgabe - mehr passiert nicht.
Provider ist Kabel-Deutschland.

Was mach ich falsch oder wieso klappt es nur im lokalen Netz?

von Frank B. (Gast)


Lesenswert?

Nachtrag:
Mit Router-IP meinte ich die mir vom ISP vergebene IP ;-)

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Es wird aber die IP vom lokalen Netz benötigt.

von ghosty203 (Gast)


Lesenswert?

@ eProfi und Simon K.

Ich hab die Idee von Nik Bamert mal in meinen Code einfliessen lassen 
(leicht geaendert , da man den code von nik auch noch optimieren 
koennte) und habe es getestet.

100 Byte Udp Echo x 1000 wiederholungen

-> ca 8,5 % schneller bei mir

von holger (Gast)


Lesenswert?

Ich hätte da auch einen Vorschlag zur Optimierung.
Hier mal für enc28j60_write_buffer()

Die Originalschleife ergibt folgenden Code

   while(len--){
  SPDR = *buffer++;
  while(!(SPSR & (1<<SPIF)));
    }

Das ASM Listing:

  while(len--){
    //send data
    SPDR = *buffer++;
    4e90:  80 81         ld  r24, Z
    4e92:  8e bd         out  0x2e, r24  ; 46
    while(!(SPSR & (1<<SPIF)));
    4e94:  0d b4         in  r0, 0x2d  ; 45
    4e96:  07 fe         sbrs  r0, 7
    4e98:  fd cf         rjmp  .-6        ;
    4e9a:  31 96         adiw  r30, 0x01  ; 1
    4e9c:  61 50         subi  r22, 0x01  ; 1
    4e9e:  70 40         sbci  r23, 0x00  ; 0
    4ea0:  8f ef         ldi  r24, 0xFF  ; 255
    4ea2:  6f 3f         cpi  r22, 0xFF  ; 255
    4ea4:  78 07         cpc  r23, r24
    4ea6:  a1 f7         brne  .-24       ; 0x4e90


Eine do Schleife ergibt viel besseren Code:

  do{
    SPDR = *buffer++;
    len--;
    while(!(SPSR & (1<<SPIF)));
  }while(len);


Das ASM Listing:

  do{
    //send data
    SPDR = *buffer++;
    4e8e:  81 91         ld  r24, Z+
    4e90:  8e bd         out  0x2e, r24  ; 46
    len--;
    4e92:  61 50         subi  r22, 0x01  ; 1
    4e94:  70 40         sbci  r23, 0x00  ; 0
    while(!(SPSR & (1<<SPIF)));
    4e96:  0d b4         in  r0, 0x2d  ; 45
    4e98:  07 fe         sbrs  r0, 7
    4e9a:  fd cf         rjmp  .-6        ; 0x4e96
          } while(len);
    4e9c:  61 15         cp  r22, r1
    4e9e:  71 05         cpc  r23, r1
    4ea0:  b1 f7         brne  .-20       ; 0x4e8e


Die Schleife enthält schon mal zwei Befehle weniger.
Das beste ist aber, das zwei Befehle schon ausgeführt werden
während das SPI Modul noch am shiften ist.

Gruß
 Holger

von Frank B. (Gast)


Lesenswert?

Nochmal zu dyndns von 4 Postings weiter oben:

Ich habe IP 91.65.221.64 genommen, die dyndns ermittelt hat, die 
gleiche, wie sie auch z.B. www.myip.ch anzeigt. Ist doch die Richtige, 
oder? Oder was ist die IP vom lokalen Netz?
Hier ein Auszug aus der Status-Page des Routers:

Geräteinformation:

LAN
MAC-Adresse  00-15-E9-E3-56-5F
IP-Adresse  192.168.0.1
Subnetzmaske  255.255.255.0
DHCP-Server  Aktiviert

WAN
MAC-Adresse  00-15-E9-E3-56-5E
Verbindung    DHCP Verbundener Client.

Verbleibende Lease-Time  00:50:05
IP-Adresse  91.65.221.64
Subnetzmaske  255.255.254.0
Gateway  91.65.221.254
Domain Name Server  83.169.184.33, 83.169.184.97

Danke & Gruß Frank

von Stefanie B. (sbs)


Angehängte Dateien:

Lesenswert?

Wofür ist eigentlich die markierte Stelle im Anhang da?
-stef

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

deine Router IP ist also 192.168.0.1!

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Stefan B.

Da kann ein Relai drauf oder was anderes oder aussägen ;-)
Ich habe dort ein RFM 12 Module drauf!

Gruß
Ulrich

von Frank B. (Gast)


Lesenswert?

Sorry für die vielleicht naive Fragerei! Was ich aber nicht verstehe: 
192.168.0.1 ist doch praktisch die Standard-IP jedes Routers, wie soll 
xyz.dyndns.org dann ausgerechnet meinen finden?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Der Webserver erhält die lokale Router IP also die lokale Adresse vom 
Router. Dyndns erhält die Internet Adresse vom Router. Ein Router hat 
somit zumindest hier min. 2 Adressen. Damit man vom Internet auf dem 
Webserver zugreifen kann benötigt man IP/Portforwarding.

von sascha (Gast)


Lesenswert?

@ Frank

für die Beantwortung externe Anfragen braucht dein WEB-Server die IP des 
Router's nicht zu wissen, denn der Router fragt ja per ARP in dein 
lokales Netz wo sich das Gerät mit der im Portforwarding eingerichteten 
lokalen Adresse befindet.
Bei mir funktioniert allerdings auch keine Anfrage aus dem lokalen Netz 
an meine öffentliche IP - irgendwas scheint der Router (T631) da nicht 
richtig zu händeln!?

Wenn ich den externen Seitenabruf meines WEB-Servers testen will, gehe 
ich immer über einen externen Proxy (z.B. über JAP).

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

von holger (Gast)


Lesenswert?

Hi,

hier könnte man noch etwas Zeit schinden:

void enc28j60_send_packet(unsigned int len, unsigned char *buffer)
{
  unsigned int tmp;
  //still sending ?
  //wait max 50*10 = 500ms:
  for(tmp=0; tmp<500; tmp++){
    if (!(enc28j60_read_address(ENC28J60_REG_ECON1) & 
(1<<ENC28J60_BIT_TXRTS))){
      //send finished -> tx packet
      break;
    }
    //tx not finished yet, wait 10ms
    _delay_ms(1);
  }

Warum 10ms warten wenn man auch nur 1ms warten kann ;)

Und hier mal eine Senderoutine zum nachdenken:

 SPDR = *buffer++;
 len--;

 unsigned char by;

 do
  {
   by = *buffer++;
   len--;
   while(!(SPSR & (1<<SPIF)));
   SPDR = by;
  }while(len);

 while(!(SPSR & (1<<SPIF)));

Schneller dürfte es kaum noch gehen. Der größte
Teil der Schleife wird ausgeführt während das
SPI Modul noch am schieben ist.

Gruß
 Holger

von sascha (Gast)


Lesenswert?

@ Holger

    warum nicht gleich in ASM

    hier mal mit den Registern aus deinem Posting weiter oben ...

//    len = r22,r23
//    *buffer = Z



    subi    r22,0x01
    suci    r23,0x00    ;len--   //wg. Abruchbedingung
loop:
    ld      r24,Z+      ;temp=*buffer++
wait:
    in      r0, 0x2d
    sbrs    r0, 7
    rjmp    wait        ;while(!(SPSR & (1<<SPIF)))
    out     0x2e, r24   ;SPDR = temp
    subi    r22, 0x01
    sbci    r23, 0x00
    brcc    loop        ;while(len--) //!Abruch der Schleife bei -1

-> erledigt alles innerhalb der der SPI-Ausführungszeit

Gruss
Sascha

von STK500-Besitzer (Gast)


Lesenswert?

>Bei mir funktioniert allerdings auch keine Anfrage aus dem lokalen Netz
>an meine öffentliche IP - irgendwas scheint der Router (T631) da nicht
>richtig zu händeln!?

Das hatten wir mal in einem anderen Thread. Das Thema war das gleiche.
Damals war es aber AFAIR ein AVM-Router.
Vielleicht liegt es an der DYNDNS-Freigabe im Router...

von holger (Gast)


Lesenswert?

@ sascha

>    warum nicht gleich in ASM

Wozu ?
Das hat der Compiler draus gemacht:

 SPDR = *buffer++;
    4e8c:  f9 01         movw  r30, r18
    4e8e:  81 91         ld  r24, Z+
    4e90:  8e bd         out  0x2e, r24  ; 46
    4e92:  62 0f         add  r22, r18
    4e94:  73 1f         adc  r23, r19
 len--;

 unsigned char by;

 do
  {
   by = *buffer++;
    4e96:  21 91         ld  r18, Z+
   len--;
   while(!(SPSR & (1<<SPIF)));
    4e98:  0d b4         in  r0, 0x2d  ; 45
    4e9a:  07 fe         sbrs  r0, 7
    4e9c:  fd cf         rjmp  .-6        ; 0x4e98
    SPDR = by;
    4e9e:  2e bd         out  0x2e, r18  ; 46
  }while(len);
    4ea0:  e6 17         cp  r30, r22
    4ea2:  f7 07         cpc  r31, r23
    4ea4:  c1 f7         brne  .-16       ; 0x4e96



while(!(SPSR & (1<<SPIF)));
    4ea6:  0d b4         in  r0, 0x2d  ; 45
    4ea8:  07 fe         sbrs  r0, 7
    4eaa:  fd cf         rjmp  .-6        ; 0x4ea6

Sieht doch perfekt aus.
 Holger

von sascha (Gast)


Lesenswert?

@ Holger

Ja den buffer-Pointer als Abbruchbedingung zu verwenden ist auch ne 
Möglichkeit. Kürzer u. schneller wird's nun auf keinen Fall mehr - 
ausser bei den keineren ATMega-Typen, da ist das SPSR noch im Bereich wo 
ein direktes prüfen des Bit's im IO-Reg. möglich ist - aber das weiß der 
Compiler auch!



@ STK500-Besitzer

im T631 steckt auch Hardware von AVM - am DYNDNS kann's nicht liegen, 
denn der T631 hat keine DYNDNS-Client.

Gruss
Sascha

von Simon K. (simon) Benutzerseite


Lesenswert?

Es ist aber problematisch, wenn man erst auf das Interruptbit wartet und 
dann ne SPI-Sendung losschickt.

Das Interruptbit setzt sich nämlich erst nachdem eine SPI-Sendung fertig 
ist...

von Frank B. (Gast)


Lesenswert?

dyndns-klappt jetzt:

Zumindest bei mir (Router D-Link DI-524) hing es einfach am MAC-Filter 
"Nur Computern mit den aufgelisteten MAC-Adressen ist der Zugriff 
erlaubt", in dem musste ich den AVR-Server noch eintragen....

von holger (Gast)


Lesenswert?

@ Simon K.

>Es ist aber problematisch, wenn man erst auf das Interruptbit wartet und
>dann ne SPI-Sendung losschickt.

Stimmt, aber ich denke du hast das

 SPDR = *buffer++;

oben über der Schleife übersehen. Das ist die erste Sendung
bevor das Interruptbit abgefragt wird. Nur deshalb funktioniert
die Schleife überhaupt.

Ich sagte ja: Man muss ein wenig drüber nachdenken ;)

Gruß
 Holger

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> @ Simon K.
>
>>Es ist aber problematisch, wenn man erst auf das Interruptbit wartet und
>>dann ne SPI-Sendung losschickt.
>
> Stimmt, aber ich denke du hast das
>
>  SPDR = *buffer++;
>
> oben über der Schleife übersehen. Das ist die erste Sendung
> bevor das Interruptbit abgefragt wird. Nur deshalb funktioniert
> die Schleife überhaupt.

In dem Post mit dem Assembler-Listing? Habs gerade gesehen :D

von holger (Gast)


Lesenswert?

Moin,

hier noch eine optimale Leseschleife für enc28j60_read_buffer()

  //read data & store in buffer:
   unsigned char by;

  SPDR = 0x00;
        len--;

   do
    {
    while(!(SPSR & (1<<SPIF)));
       by=SPDR;
    SPDR = 0x00;
       *buffer++ = by;
       len--;
    }while(len);

  while(!(SPSR & (1<<SPIF)));
        *buffer = SPDR;


Prinzip genau wie bei der Schreibschleife aus meinem obigen Posting.
Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"

Der größte Teil der Schleife wird abgearbeitet während das SPI
Modul noch am schieben ist.

Schluß mit dem trödeln ;)
 Holger

von Dirk B. (sharandac)


Lesenswert?

Hallo,

die diskussion zum SPI-Speed hatten wir 2006 schon mal gehabt und hatten 
auch Code entwickelt. Interessant ist auch der Link im Beitrag selbst, 
wo der Code analysiert wird, an realen übertragungen.

Beitrag "SPI Codetuning"

CA Dirk

von holger (Gast)


Lesenswert?

@ Dirk
>die diskussion zum SPI-Speed hatten wir 2006 schon mal gehabt und hatten
>auch Code entwickelt. Interessant ist auch der Link im Beitrag selbst,
>wo der Code analysiert wird, an realen übertragungen.

Hi Dirk,

ich teste meine Codes an realen Übertragungen ;)

Hier mal ein paar Messergebnisse für enc28j60_write_buffer();
Gemessen bei 16MHz CPU Takt und ungefähr 1300 Bytes pro buffer.

Die Originalroutine mit while(len--)
     3.0ms

Meine erste verbesserte Version mit do{}while(len);
     2.4ms

Meine letzte optimierte Version
     2.0ms

Deine Codes sehen meinen schon recht ähnlich.
Da waren wohl die gleichen Gedankengänge am Werk.
Beim WinAVR ist es oft besser fußgesteuerte do{}while();
Schleifen zu verwenden wenn es geht. Der Schleifenzähler
sollte dabei auch runterzählen.

Das bringt aber nicht immer was. Da muss man ein bißchen
rumprobieren und öfter mal ins ASM-Listing schauen.

Ich hab auch schon mit Schleifen rumprobiert die
SPIF gar nicht mehr abfragen. Einfach mit genügend
NOP auffüllen. Da tritt einem aber der Compiler
oft in den Hintern weil er an den Schleifen
rumoptimiert. Am sinvollsten wäre wohl irgendwas mit
Inline Assembler. Aber dazu bin ich zu faul :(


Gruß
 holger

von Torsten K. (avr_fan)


Lesenswert?

Hallo an alle,

in verfolge den Thread schon von anfang an und habe schon mehrere 
Softwareversionen erfolgreich ausprobiert. Respekt, es ist ein 
supergeiles Project und genau das, was ich schon die ganze Zeit gesucht 
habe. Mein erster Webserver auf Basis des ENC28J60 war der von 
tuxgraphics, hat auch funktioniert, aber der Stack kann ja nur ein 
Packet zurücksenden und das war dann für meine Website etwas zu wenig.

Nun zu meiner Frage. Ich möchte den Webserver dazu verwenden, um 
Schaltfunktionen auf anderen Controllern auszuführen und dann den Status 
der entsprechenden Ports auch zurücklesen zu können. Das heißt, das der 
Mega32 mit der Webserverapplication quasi der Master ist, der die 
Anbindung an das Ethernet ermöglicht und an ihm hängen dann die anderen 
Controller als Slave für die entsprechenden Schaltfunktionen.
Nun ergibt sich allerdings das Problem, wie die Kommmunikation der 
Controller untereinander am besten zu realisieren ist. Mein erster 
Gedanke wahr natürlich die SPI, aber die spricht ja schon mit dem ENC 
und ich bin mir nicht sicher, ob ich da ohne Probleme noch weitere 
Controller mit ranhängen kann (EMV, Leitungslängen u.s.w.). Zu welchen 
Kommunikationssystem würdet ihr mir raten?

Viele Grüße
Torsten

von gast (Gast)


Lesenswert?

Hallo,

I2C wäre da noch frei! Ich komuniziere mit anderen Prozessoren über ein 
RFM12 Module dabei wird das SP-Interface über Software emuliert.

Gruß
Ulrich

von Steffen (Gast)


Lesenswert?

Wenn du die serielle Schnittstelle nicht für printf o. ä. benötigst, 
kannst du auch diese verwenden. Sollte schnell und einfach zu machen 
sein. Wenn du eine strenge Master-Client Kommunikation aufbaust, können 
dann auch mehrere Teilnehmer kommunizieren.

Steffen.

von Andreas W. (theslow)


Lesenswert?

Falls du den ATmega644 nutzt kannst du auch den USART als SPI nutzen. 
Der ATmega32 hat diese Funktion aber glaube ich nicht.
Dann müsste allerdings der MAX232 raus. RX und TX werden dann zu MISO 
und MOSI, Clock liegt am bis jetzt ungenutzten, auf Ulrichs Platine aber 
nicht rausgeführten PB0(?).

von Rene Z. (renezimmermann)


Lesenswert?

Hi

sehr einfach gehts mit dem Multi-processor Communication Mode der USART.

Gruß Rene

von sascha (Gast)


Lesenswert?

Hallo,

für größere Leitungslängen ist auf alle Fälle eine serielle Übertragung 
mit RS485 Schnittstelle sinnvoll, da gibt's am wenigsten Probleme. Ich 
habe an meinem Webserver per RS485 über ca. 30m 2-Draht-Leitung (nur 
Halbduplex) noch 2 weitere AVR-Controller dran hängen.

Gruss

Sascha

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

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


Lesenswert?

Moin,
ist das eigentlich normal ,dass der Bildaufbau der Kamera bei 320x240 
pixeln
etwa 40 Sekunden dauert?? Oder kann man da irgendwo noch was an der 
Baudrate rumschrauben? Ich verwende den Atmega 644. Natürlich erwarte 
ich keine 10 Frames/s. Mir ist klar, dass der Avr daran ganz schön zu 
knabbern hat, aber dass er solange braucht hätte ich nicht gedacht.

Grüße Henning

von gast (Gast)


Lesenswert?

Hallo,

In meinem Forum auf meiner HP habe ich schon das Problem gelöst max. 
10sek

Gruß
Ulrich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Bildaufbau dauert unter Windows 50Sek. unter Linux 10Sek das ist 
schon richtig! Das liegt daran das auf ein ACK vom Rechner gewartet 
wird. Bei Windows kann das gute 500ms dauern. Wie man es beschleunigen 
kann? Einfach einen Mega644 nehmen und in Stack.h die Packetsize von 600 
auf 1400 setzen (Zeile76). Desweiteren in cam.h DAT_BUFFER_SIZE auf 1400 
(Zeile22). Schon wird das Bild in 10Sek unter Windows geladen  (Linux 
noch schneller).

Gruß
Uli

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


Lesenswert?

Habe es in Deinem Forum schon gefunden und eben ausprobiert.
hat super geklappt...
Danke


Grüße Henning

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Achso bevor ich es vergesse, die Kamera hat auch einen Tag/Nacht-Mode!
Wenn die Bilder zu dunkel sind :-)

Gruß
Uli

von Gast (Gast)


Lesenswert?

Hallo!
Kann mir vielleicht einer sagen wie ich diese Fehlermeldung wegbekomme ?
1
httpd.o: In function `httpd_header_check':
2
httpd.c:158: undefined reference to `strcasestr_P'
3
httpd.c:159: undefined reference to `strcasestr_P'
4
httpd.c:160: undefined reference to `strcasestr_P'
5
httpd.c:183: undefined reference to `strcasestr'
6
httpd.c:189: undefined reference to `strcasestr'
7
httpd.c:200: undefined reference to `strcasestr'
8
\newStack1_0_43/httpd.c:204: undefined reference to `strcasestr'

Schonmal vielen Dank!

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


Lesenswert?

Moin
Ohne Deinen Code kann Dir hier wohl kaum einer weiterhelfen.
Häng ihn mal als Anlage mit dran

Grüße Henning

von Gast (Gast)


Lesenswert?

Hallo
Der Fehler trat beim compilieren von Ulrich Radigs neuem Source Code 
auf.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Welche Compiler Version hast du denn da?? Also ich konnte keinen Fehler 
feststellen.

Gruß
Uli

von Sascha D. (saschad)


Lesenswert?

Hallo Gast,

das Problem hatte ich zu Anfang auch mal. Ich würde sagen es liegt nur
an deiner Compiler-Version. Lade Dir die aktuellste Version runter.
http://sourceforge.net/project/showfiles.php?group_id=68108

Gruß
Sascha

von Gast (Gast)


Lesenswert?

Funktioniert mit der neuen Compiler-Version.
Vielen Dank für die Hilfe.

von Henning (Gast)


Lesenswert?

Hallo
habe aus einem alten Projekt nen Code, der sich meineserachtens sehr 
einfach in den des Webservers integrieren lässt. Hierbei handelt es sich 
um das Auslesen des ds1621 Temperatursensors.
Ich hab ihn jetzt auf das Mindeste gekürzt. Nur weiß ich jetzt nicht, 
wie ich das mit den Timern machen soll, da ich mich mit denen nicht so 
richtig auskenne. Im Prinzip muss das I2C_delay auf den Timer vom 
Webserver angepasst werden.

Hat einer ne Idee


Grüße Henning

von Henning (Gast)


Angehängte Dateien:

Lesenswert?

sry, Hier der Anhang, etwas verspätet

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

man kann erstmal einfach das I2C_Delay durch _delay_ms oder einfach 
durch eine kleine Warteschleife ersetzen.

Gruß
Ulrich

von Martin (Gast)


Lesenswert?

Hallo,
ich habe Probleme mit der neuen Version 1.0.43. Ich betreibe das System 
mit dem 644 und mit der Taktfrequenz 14.7456MHz. Ohne LCD Display 
erhalte ich über die RS232 folgende Ausgabe:
System Ready
NIC init:
danach nichts mehr. Selbst über ein Ping ist er nicht erreichbar!
Wenn ich das LCD-Display aktiviere erhalte ich weder eine Anzeige noch 
eine Ausgabe über die RS232:
Mit den alten Version 1.0.40 klappt alles. Muss ich noch etwas 
zusätzlich ändern?

Gruß
Martin

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Martin

Das Board hängt sich bei der Initialisierung der Netzwerkkarte (ENC) 
auf. Welches Board benutzt du?

Nach der Version 1.0.40 habe ich einen neuen Ethernettreiber benutzt!

Ändere den Wert von delay_us(100000) in enc28j60Init nach 
delay_us(500000)!

Gruß
Uli

von Martin (Gast)


Lesenswert?

Hallo Uli,
leider finde ich die angeführten Stellen nicht im Quelltext. Du meinst 
doch die "enc28j60_Init" in der enc28j60.c! Aber da und auch wo anders 
finde kein delay_us.
Ich benutze das Layout von Henning mit dem Magjack!
Gruß
Martin

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


Lesenswert?

Hallo Martin,
eigentlich müsste das funktionieren, hab 3 meiner Boards mit der neusten 
Version am laufen. Hast du nochmal den Aufbau und die Lötstellen 
überbrüft?  (Drahtbrücken für die Spannungsversorgung vom ENC drin???)
oder in der config.h richtige Taktfrequenz??


Grüße Henning

von Martin (Gast)


Lesenswert?

Hallo Henning,
ja alle Brücken sind drinnen. Das Board klappt ja mit der Version 
1.0.40! Auch die Taktfrequenz ist richtig eingestellt.
Sind mit der neuen Version evtl. die Bauteil Toleranzen bei bestimmten 
Teilen kritischer?

Gruß
Martin

von Martin (Gast)


Lesenswert?

Hallo,
vielen Dank für die Hilfen. Konnte den Fehler nicht finden. Nach dem bei 
meinen Board von Ulrich die Version auch nicht funktionierte habe ich 
noch einmal den Quellcode geladen und auf die IP-Adressen angepasst. 
Jetzt klappt es! Bei der ersten Anpassung muss mir irgendwo ein Fehler 
unterlaufen sein.
So jetzt werde ich versuchen die Kamera anzusteuern.

Gruß
Martin

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


Lesenswert?

Hallo Martin,
gut, dass Du das eben nochmal geschrieben hast, dass es läuft. Wollte 
grad mal exakt Deinen Aufbau testen. Sprich 14,7456Mhz ohne Kamera und 
ohne Display mit jungfräulichem Code. Weil meine Aufbauten laufen ja 
fast alle mit 16Mhz und mega 32, bis auf den einen mit nem 644 und 
Kamera

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


Lesenswert?

Hallo Ulrich,
ich hab da eine kleine Anregung für die nächste Version des Layouts.
Man könnte per Jumper Versorgungsspannung auf den D-Sub geben. Dann muss 
nur an der Max232 Fassung gebrückt werden (oder hier auch Jumper) und 
man könnte die Kamera an den D-Sub anschließen. Oder man führt RX/TX 
noch hinten mit auf dem Wannenstecker raus.

Grüße Henning

von Günni (Gast)


Lesenswert?

Hallo,

habe das mit dem Wertebereich der Variable für die Servoposition noch 
nicht ganz begriffen

volatile unsigned char servo_pos;// min = 28/1ms max = 56/2ms


was ist hiermit gemeint?:
// min = 28/1ms max = 56/2ms

Kann mir da jemand genaueres zu sagen?
evntl. mit Beispiel

danke schonmal

Günni

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

28 ist der min Wert rechter Anschlag und 56 max Wert linker Anschlag.
Somit gibt es nur 28 Werte (Stellungen) für den Servo. Sollte aber 
ausreichen.

Gruß
Ulrich

von Günni (Gast)


Lesenswert?

Also heisst, wenn er bis zum rechten Anschlag drehen soll

servo_pos = 28;
servo_go_pos();

und wenn er bis zum bis zum linken Anschlag drehen soll:

servo_pos = 56;
servo_go_pos();

????

und was ist dann mit servo_pos = 0; ?? das soll doch eigentlich die 
mittelstellung sein, oder?

von holger (Gast)


Lesenswert?

>und was ist dann mit servo_pos = 0; ?? das soll doch eigentlich die
>mittelstellung sein, oder?

Wie wärs mit 42 ?

von Günni (Gast)


Lesenswert?

Naja, wundere mich halt, weil Ulrich in der servo_init die servo_pos 0 
gesetzt hat und das liegt ja anscheinend nicht im zulässigem Bereich

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

jo ;-)

von Günni (Gast)


Lesenswert?

Hallo, habe das Servo nur zum Test ganz Primitiv eingebunden:
1
if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED3=3"))!=0){tmp |=(1<<PA2);}
2
          if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED4=4"))!=0){tmp |=(1<<PA3);}
3
          if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED5=5"))!=0){tmp |=(1<<PA4);}
4
          if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED6=6"))!=0){tmp |=(1<<PA5);}
5
          if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED7=7"))!=0)
6
                    {
7
                    tmp |=(1<<PA6);
8
                    servo_pos = 29;
9
                    servo_go_pos();
10
                    }

Nun passiert folgendes: Sobals man die Checkbox markiert hat und auf 
Senden klickt, bewegt sich das Servo um 2-3° und dann stürzt der ganze 
Server ab.

Woran kann das liegen??

Grüße

von holger (Gast)


Lesenswert?

>Nun passiert folgendes: Sobals man die Checkbox markiert hat und auf
>Senden klickt, bewegt sich das Servo um 2-3° und dann stürzt der ganze
>Server ab.
>Woran kann das liegen??

Netzteil zu schlapp ?

von holger (Gast)


Lesenswert?

Hi Ulrich,

ich hab da eine unschöne Stelle im httpd gefunden.
In http_data_send()

 b = ((*http_entry[index].new_page_pointer+3)-48)*10;

oder genauer nur dies hier

 *http_entry[index].new_page_pointer+3

Da scheint es nicht eindeutig zu sein was der Compiler
zuerst machen soll. Erst den Pointer + 3 und dann
den Wert aus dem Speicher holen, oder erst den Wert
aus dem Speicher holen und DIESEN dann + 3.
WinAVR macht es so wie geplant. WinARM bevorzugt
Methode 2 und prompt geht es schief.

Zwei Klammern mehr und alles ist eindeutig:

 b = ((*(http_entry[index].new_page_pointer+3))-48)*10;


Achso, und das hier ist auch nicht schön.
Auch in http_data_send()

char var_conversion_buffer[10];

str_len = strnlen(var_conversion_buffer,MAX_VAR_ARRAY);

MAX_VAR_ARRAY ist glaub ich für was anderes gedacht ;)


Gruß
 Holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Holger,

Die Stelle konnte ich nicht finden:
b = ((*http_entry[index].new_page_pointer+3)-48)*10;

sondern nur:
b = (pgm_read_byte(http_entry[index].new_page_pointer+3)-48)*10;

Gruß
Uli

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> Hi Ulrich,
>
> ich hab da eine unschöne Stelle im httpd gefunden.
> In http_data_send()
>
>  b = ((*http_entry[index].new_page_pointer+3)-48)*10;
>
> oder genauer nur dies hier
>
>  *http_entry[index].new_page_pointer+3
>
> Zwei Klammern mehr und alles ist eindeutig:
>
>  b = ((*(http_entry[index].new_page_pointer+3))-48)*10;

Also ich versteh euch nicht. Wenn ich so eine Funktionalität ausdrücken 
will in einer Code-Zeile, dann setze ich doch erstmal überall da 
klammern, wo es beim hinsehen  nicht eindeutig lesbar ist, was zuerst 
ausgeführt wird. So geht man auch sicher, dass der Compiler genau das 
macht, was man selber meint.

Wieso macht ihr sowas ohne Klammern? Probiert ihr das aus? Macht ihr das 
erst mit Klammern und probiert anschließend aus, obs auch ohne klappt? 
Oder guckt ihr jedes mal in das Compilerhandbuch, welche Operation 
zuerst ausgeführt wird und überlegt euch dann wo (keine) Klammern 
hinsollen?

Also ich wähle ganz klar erstere Variante, die ist 1. sicherer und 2. 
besser lesbarer.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Simon,

Schade das du nicht Windows geschrieben hast ;-)

Gruß
Ulrich

von holger (Gast)


Lesenswert?

>Die Stelle konnte ich nicht finden:
>b = ((*http_entry[index].new_page_pointer+3)-48)*10;

Upps, kannst du ja auch nicht. Ist ja nicht dein Originalcode.
Den Fehler hab ich mir selber eingebrockt.

Entschuldigung bitte für die Falschmeldung :(

Beim nächsten mal pass Ich besser auf.
Holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Aber die andere Stelle konnte ich finden DANKE!!

Gruß
Uli

von Simon K. (simon) Benutzerseite


Lesenswert?

Ulrich Radig wrote:
> Hallo Simon,
>
> Schade das du nicht Windows geschrieben hast ;-)

:-)

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


Lesenswert?

Hallo,
kann es sein, dass irgendwas mit dem Servo-Timer noch nicht stimmt??
Mein Servo bewegt sich nur in einem ganz kleinem Winkel (~5°) von 28 
nach 56
Die Zeit zwischen den beiden Befehlen ist aber ausreichend.
Habe Atmega644 @ 14,7456Mhz und benutze Version 46
Grüße Henning

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Habe mir die Funktion gerade nochmal angeschaut! Ich hatte erst nur mit 
dem OCR Register gearbeitet hier sind Werte von 28-56 zulässig. Hatte es 
danach geändert, nun sind Werte von 0 - 255 zulässig 128 Mittelstellung.

Gruß
Uli

von Gast (Gast)


Lesenswert?

Hallo, ich weiß nichtmehr weiter, es scheitert immer an den einfachsten 
Sachen.
Folgendes: Die If Anweisung wird durchgeführt, aber Hinterher führt er 
auch noch die Else Anweisung durch . Ist doch irgendwie komisch, oder? 
Macht der Compiler da irgendwas komisches draus?
1
          if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED7=7"))!=0){tmp |=(1<<PA6);}
2
                    if(strcasestr_P((char*)&eth_buffer[a],PSTR("LED8=8"))!=0)
3
                    {
4
                    tmp |=(1<<PA7);
5
                    servo_pos = 255;
6
                    servo_go_pos();
7
                    }
8
                    else
9
                    {
10
                    servo_pos = 0;
11
                    servo_go_pos();
12
                    }

Kann mir jemand weiterhelfen??

Grüße

von Gast (Gast)


Lesenswert?

Hat sicher erledigt...

Grüße

von holger (Gast)


Lesenswert?

Hi Ulrich,

ich hätte da mal wieder einen Vorschlag :(

arp_timer_call(); verbrät unnötig Rechenzeit im Timerint.
Außerdem besteht die Gefahr das ein ARP Eintrag gelöscht
wird obwohl er eigentlich noch gebraucht wird !

Ich würde es einfach hier mit eintragen:

void eth_get_data (void)
{
  if(eth.timer)
  {
    tcp_timer_call();
    arp_timer_call();
    eth.timer = 0;
  }


Gruß
 holger

von Steffen (Gast)


Lesenswert?

Hallo,

da ich in der letzten Zeit kaum etwas µC-artiges gemacht habe, war ich 
doch etwas überrascht, dass nun schon Version 53(?) aktuell ist. Zuletzt 
habe ich irgendwas um die 40 verwendet.

Da ich recht viel Aufwand in meine httpd gesteckt habe, die Frage, ob 
ich die stack.c/h und enc28j60.c/h einfach so austauschen kann oder hat 
sich auch an den Schnittstellen zwischen den Modulen was geändert?

Gruß
Steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Es hat sich da einiges geändert!! Welche Änderungen vorgenommen wurden 
kann man bei mir im Forum erkennen, hier Logge ich die Änderungen mit!

Gruß
Uli

von sven s. (Gast)


Lesenswert?

Funktioniert der aktuelle Code von Ulrich (7.1.2008) noch mit einem 
atmega32?

Ich hab folgendes Problem ich habe mit der fertigen hex von Ulrich einen 
erfolgreichen test gemacht das geht wunderbar. Wenn ich dann versuch 
noch mal selbst zu kompilieren (makefile MCU = atmega32) geht nix mehr.

Bin ich nur zu blöd oder hab ich was übersehen oder geht das einfach 
nicht?

Gruss Sven

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Source Code funktioniert immernoch mit einem Mega32. Versuche mal 
ein Make Clean und dan den SourceCode neu zu erstellen.

Gruß
Uli

von sven s. (Gast)


Lesenswert?

Hey danke für die schnelle Hilfe, das war genau mein Problem.
Ich find das Projekt echt super ok die Hardware von dir benutz ich nicht 
ich hatte da noch was eigenes rumfahren. Aber die Software ist super, 
Hut ab Ulrich.

Mit freundlichen Grüßen Sven

von Simon Hufnagel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

so jetzt hab ichs endlich geschafft den Server mit AVR Studio zum Laufen 
zu bringen...
Falls jemand so wie ich lieber mit dem AVR Studio arbeitet, kann er das 
Projekt im Anhang verwenden (ist die momentan aktuelle Version 1.0.54).

Schöne Grüße und macht weiter so!

von eProfi (Gast)


Lesenswert?

Ich war einige Zeit offline.

"Sicher, dass das überhaupt etwas an Rechenleistung braucht? Ich bin mir
ziemlich sicher, dass der Compiler hier nur noch die Zugriffsreihenfolge
in den Speicher beachtet, wenn er Variablen in oder aus Register/n 
holt."

Dann schau Dir mal das Assemblerlisting an, es werden etliche unnötige 
'clr' und 'or' verbraten.

Ich mache solche Zugriffe immer mit Unions, da weiß der Compiler gleich, 
was ich meine:

#define lo 0
#define hi 1
union {unsigned long l;unsigned int i[2];unsigned char c[4]} test;
oder mittels typedef
und die Zugriffe dann mit test.l=0x12345678  test.i[hi] oder test.i[lo] 
oder test.c[0]



@Holger, @Sascha
Überraschung:
while((len--))
ist für WinAVR nicht gleich mit dem viel schneller ausgeführten
while((len=len-1)),
hier verwendet er das vom sbic gesetzte Z-Flag für den Branch!

Ich sehe überall noch Optimierungspotential.

Versuchsweise mal das versucht:
while((len.c[hi]--))
  while((len.c[lo]--)){
    send...
  }
Das habe ich schreiben können, wie ich wollte (auch mit do..while), er 
hat nie das Zero-Flag direkt ausgewertet. Trotzdem es so noch schneller 
ginge, hat der Compiler es immer langsamer gemacht.

Übrigens ist empfohlen (für bessere Lesbarkeit), doppelt zu klammern, 
wenn man ein non-bool-Wert als bool verwendet.

von eProfi (Gast)


Lesenswert?

Noch was:
Es lohnt sich einfach nicht, wegen 10 Bytes Code eine Sub zu callen.
Zuerst versuchte ich, Zeit zu sparen, indem ich die untersten Level mit
inline
in die nächst höheren Ebenen einzubinden.
Das macht er zwar, aber anders als ich mir das vorgestellt hatte.
Er verwendet für die Übergabe die std-Register (r24 & co), lediglich der 
Call und der Ret werden eingespart.

Wesentlich besser ist es, die unteren Level z.B. als
#define enc28j60_read_address( ....
anzugeben, dann werden sie wirklich eingebunden und die Register 
individuell und optimal verwendet.

von Simon K. (simon) Benutzerseite


Lesenswert?

http://gcc.gnu.org/onlinedocs/gcc/Inline.html


Achja und deine Union-Methode ist oft diskutiert und nicht garantiert zu 
funktionieren.

von Steffen (Gast)


Lesenswert?

>Übrigens ist empfohlen (für bessere Lesbarkeit), doppelt zu klammern,
>wenn man ein non-bool-Wert als bool verwendet.

Was heisst "ist empfohlen"? Wer empfiehlt das?  Hast du einen Link, in 
dem solche Tipps gegeben werden? Gibt es da einen Standard? Würde mich 
mal interessieren, was sonst noch so gibt.

Gruß
Steffen.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Hi Ulrich,

Ich hätte da (wieder :( mal einen Vorschlag.
Es geht um das %END was da bei den Arrays im Flash
immer abgefragt wird. Man kann das umgehen.

Beim NTP habe ich es mal rausgenommen und
über sizeof(NTP_Request) einfach die Länge mit
dem Compiler abgefragt. Funktioniert.
Siehe geänderter Code für ntp.c im Anhang.

Beim httpd dürfte es etwas schwieriger werden
da man mit dem Pointer auf das Objekt nicht
mit sizeof() die Länge abfragen kann.
Da müsste wohl noch die Längenangabe in die
struct http_table mit rein. Diese müsste man
in httpd_header_check() eintragen lassen.

Oder gleich in webpage.h machen

  typedef struct
  {
    const char *filename;    //Dateiname der Seite
    PGM_P page_pointer;      //Zeiger auf Speicherinhalt
                unsigned int size;              //Größe des Objektes
  } WEBPAGE_ITEM;

WEBPAGE_ITEM WEBPAGE_TABLE[] = // Befehls-Tabelle
{
  {"index.htm",Page1,sizeof(Page1)},
  {"Status.htm",Page4,sizeof(Page4)},

Der Vorteil wäre das Grafiken aus dem Flash
schneller geladen werden könnten weil nicht
bei jedem Byte auch gleich noch auf %END gecheckt wird.

Über http_entry[index].http_header_type könnte man dann
entscheiden: Ist das ne HTM die geparst werden muss oder
kann ich die Grafik einfach so in den Puffer kopieren ?
Ein weiteres Problem ist dann natürlich: Passt die Grafik
komplett in den Puffer, oder müssen mehrere Stückchen
gesendet werden.

Hört sich kompliziert an und ist auch nur mal was
zum nachdenken.

PS: Ändere in der Status.htm doch mal "Sart" auf "Start" ;)

Gruß
 Holger

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
> Beim httpd dürfte es etwas schwieriger werden
> da man mit dem Pointer auf das Objekt nicht
> mit sizeof() die Länge abfragen kann.
> Da müsste wohl noch die Längenangabe in die
> struct http_table mit rein. Diese müsste man
> in httpd_header_check() eintragen lassen.

Ähem, wofür gibt es in C eigentlich den String-Ende-Terminator?

von holger (Gast)


Lesenswert?

>Ähem, wofür gibt es in C eigentlich den String-Ende-Terminator?

Ein Bild ist kein String. Da kommen Nullen an allen möglichen
Stellen vor ;)

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
>>Ähem, wofür gibt es in C eigentlich den String-Ende-Terminator?
>
> Ein Bild ist kein String. Da kommen Nullen an allen möglichen
> Stellen vor ;)

Nein, aber für eine Webseite würde das funktionieren.

von holger (Gast)


Lesenswert?

>Nein, aber für eine Webseite würde das funktionieren.

Da hast du recht.

von Simon K. (simon) Benutzerseite


Lesenswert?

holger wrote:
>>Nein, aber für eine Webseite würde das funktionieren.
>
> Da hast du recht.


Ich wusste ja nicht, dass ihr auch Bilder sendet ;) ;)

Bei meiner kleinen Webserverapplikation enthält das Socket-Struct (Also 
das Struct, was die Daten für jeden TCP-Socket von einem Webserveraufruf 
zum anderen mitführt) einen Zeiger auf die Daten und einen Zähler, der 
anzeigt, wieviele Bytes noch versendet werden müssen, bis die Seite/Bild 
fertig ist. Das hat den Vorteil, dass man bei Retransmissions leichter 
die Position im Speicher wiederfindet, die man erneut senden muss.

von gast (Gast)


Lesenswert?

Hallo,

Das mit der Endmakierung ist wie schon gesagt auf die Bilder 
zurückzuführen. Da diese ja keine Strings sind aber in der gleichen 
Routine verarbeitet werden. Da ich sowieso immer das % Abfrage für 
dynamische Inhalte ist dahingestellt ob ein anderes verfahren viel mehr 
bringt.

Gruß
Uli

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Schon wieder nicht eingeloggt gewesen :-(

Simon K.

>Ich wusste ja nicht, dass ihr auch Bilder sendet ;) ;)

Sogar Livebilder einer Kamera ;-)

Gruß
Uli

von Simon K. (simon) Benutzerseite


Lesenswert?

Ulrich Radig wrote:
> Schon wieder nicht eingeloggt gewesen :-(
>
> Simon K.
>
>>Ich wusste ja nicht, dass ihr auch Bilder sendet ;) ;)
>
> Sogar Livebilder einer Kamera ;-)
>
> Gruß
> Uli

Stimmt, da war was.

Sag mal, du sagtest, dass du das "%" für dynamische Inhalte benutzt. Das 
heißt beim Kopieren in den Ethernet-Buffer ersetzt du die %-Variablen 
on-the-fly durch den dynamischen Inhalt, richtig? Wie hast du das 
Problem umgangen, dass nach dem "expandieren" also ersetzen der 
%-Variable ein so langer String herauskommt, dass er nicht mehr in das 
aktuelle Paket passt, sondern im nächsten versand werden muss (bzw. 
aufgeteilt werden muss).

Hast du da einen Check eingebaut? Oder versendest du dynamischen Inhalt 
jeweils in einem eigenen Ethernet-Paket? Oder wie machst du dit.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Das Ethernetpaket wird nicht komplett vollgeschrieben sondern immer 
etwas Platz für diesen Fall abgezogen. Da es sich hier um nur einen 
kleinen Inhalt handelt der meisten so groß ist wie der Platzhalter 
selbst gibt es hier normal keine Probleme. Übrigens Positive 
Acknowledgement with Retransmission unterstütze ich auch.

von Mike Winter (Gast)


Lesenswert?

@Ulrich Radig

Sind die Versandkosten für die Serverplatine statisch oder lassen sie 
sich noch nach unten korrigieren?
Eine Warensendung würde es doch auch tun oder?

thnx

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Bisher hatte keiner geklagt. So wie sie sind und nicht anders. Oder 
Logistikpartner nach wunsch auch noch!
Falscher Thread!!


Gruß
Ulrich

von holger (Gast)


Lesenswert?

Hi Ulrich,

hab das mit der Abfrage von %END jetzt viel einfacher gelöst:

//Müssen Variablen ins Packet eingesetzt werden? ===> %VA@00 bis %VA@09
if (b == '%')
{
  //wurde das Ende des Packetes erreicht?
  //Verbindung TCP Port kann beim nächsten ACK geschlossen werden
  //Schleife wird abgebrochen keine Daten mehr!!
  if (strncasecmp_P("END",http_entry[index].new_page_pointer,3)==0)
      {
        tcp_entry[index].app_status = 0xFFFD;
        //a++;
        break;
      }

  if (strncasecmp_P("VA@",http_entry[index].new_page_pointer,3)==0)

So wird bei den Grafiken nicht bei JEDEM Byte komplett auf %END 
gecheckt.

Gruß
 holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Holger,

Jo, so dachte ich es mir auch.
Habe es aber nicht gemacht ;-)


Gruß
Ulrich

von Steffen (Gast)


Lesenswert?

Diese Methode mit der Untersuchung auf "%" ist besonders sinnvoll, wenn 
man mehrere Abfragen hat (%END, %VA@xx, %VI@xx, ...). Vielleicht ist es 
auch sinnvoll, unterschiedliche Methoden für Daten mit und ohne "%" zu 
implementieren. So spart man sich die Abfragen und die Pakete können 
komplett ausgenutzt werden.

Steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Steffen,

Ich hatte auch schon mal daran gedacht dieses aber verworfen da ich 
Probleme mit Retransmission hatte. Hier wusste ich nie ob das letzte 
Packet 1 oder 2Packete waren. Da sich ja der Inhalt der Variablen und 
somit die Anzahl der Packete ändern kann. Das meine Methode nicht die 
beste ist ist mir klar, aber ich habe immer die gleiche Packetanzahl 
bezüglich Retransmission.

Gruß
Uli

von Steffen (Gast)


Lesenswert?

Hallo,

da ich momentan Hardwareprobleme habe und noch auf Teile warte, habe ich 
mich mal um was anderes gekümmert.

Wie entwickelt ihr euren HTML, CSS, JavaScript,... Code?
1. In einem normalen (Web) Editor die Dateien fertig machen (Die Dateien 
können sofort im Browser angeschaut werden)
2. Ersetzen von " durch  \"
3. Jede Zeile in "..." einfassen
4. "%END" ans Ende einfügen
5. kopieren des ganzen Codes und einfügen in eine PROGMEM-Variable in 
der webpage.h

????

So mache ich es momentan. Um den Vorgang ein wenig zu beschleunigen 
wollte ich mir ein Tool schreiben, welches (per Kommandozeile --> in 
makefile einzubinden?) aus einer ausgewählten Datei das Zielformat 
erstellt. Die Datei kann dann z.B. durch
1
#include "webseiten\home.html.h"
in die webpage.h eingebunden werden.

Fällt euch etwas ein, was dagegen spricht? Muss ich noch irgendwelche 
Sonderfälle beachten, die mir gerade nicht einfallen? Für Hinweise wäre 
ich dankbar. Falls ich es dann hinbekomme, könnt ihr das Programm auch 
gerne nutzen.

Hat jemand von euch ähnliche Tools geschrieben, die die Entwicklung 
mit/für den Webserver vereinfachen?

Gruß
Steffen.

von Gerd (Gast)


Lesenswert?

Hallo Steffen,

ich verwende dazu unter Linux (unter Windows geht auch cygwin) ein 
kleines
Script das die ganze Arbeit erledigt:

$ sed 's/"/\\"/g' < page1.html | awk 'BEGIN { print "PROGMEM char 
Page1[] = {" } { print "\"" $0 "\\r\\n\"" } END { print "\"%END\"\n};"}' 
> page1.html.h

Mein HTML Code steht dabei in der Datei page1.html und wird in die
Header-Datei page1.html.h geschrieben.

Der sed Teil erledigt das Ersetzen von " durch \" und der awk Teil 
erledigt
den ganzen Rest.


Gruß
Gerd.

von Compilierer (Gast)


Lesenswert?

Hallo

ich habe mir den 1.0.56 stack heruntergeladen und wollte das alles mit 
winavr kompillieren.
leider kommt folgender fehler:

networkcard/enc28j60.c:117: error: `SPIE' undeclared (first use in this 
function)
networkcard/enc28j60.c:117: error: (Each undeclared identifier is 
reported only once
networkcard/enc28j60.c:117: error: for each function it appears in.)
networkcard/enc28j60.c:117: error: `CPHA' undeclared (first use in this 
function)

ich weiß auch nicht so recht wo ich das alles deklarieren soll. kann mir 
da jemand weiterhelfen?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Compilierer

Hast du die neuste Version von WinAVR???

Gruß
Uli

von Wolfgang M. (Firma: Friatec AG) (wolli78)


Lesenswert?

Hi Leute,

ich hätte da mal ein Problen:
Wie kann ich die Meldung "Start Telnet Server:" komplett deaktivieren, 
beim start einer Telnetverbindung?

Gruß Wolfgang

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

In Telnet.c Zeile 27 - 36 auskommentieren und in Zeile Zeile 38 
tcp_entry[index].app_status > 1 ändern nach tcp_entry[index].app_status 
>= 1

Gruß
Uli

von Steffen (Gast)


Lesenswert?

Hallo Ulrich,

in einem anderes Thread schreibst du von neuen Platinen. Sind diese 
identisch zu den ersten, oder hast du Änderungen einfließen lassen?

Steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich habe einen komplett neuen Webserver auf SMD Basis! Mit einigen neuen 
Funktionen. Aber die alte Software ist und bleibt kompatibel. Die 
Platine kommt am 23.1. bei mir an und wird getestet. Danach wird das 
Projekt wieder wie gewohnt auf meiner Webseite veröffentlicht. Da nur 
SMD Bauteile zum Einsatz kommen ist dieser Webserver nicht unbedingt für 
Anfänger geeignet.

Gruß
Uli

von Richard B. (Gast)


Lesenswert?

Ich habe die Platine komplett bestückt und wollte die testen, aber 
leider passiert nichts. Am AVR sind 0V.
Beim ersten Start Leuchtete die LED1 kurz auf. Jetzt aber nicht mehr.

Wie gehe ich am besten vor? Wo muss ich Messen um das Problem 
einzugrenzen?
Am Eingang liegen 12V an.


Vielen Dank für Eure hilfe.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Der Webserver ist nicht für 12V ausgelegt sondern für 9V! Die Sicherung 
ist defekt!

Auf meiner HP habe ich dazu geschrieben:
"Zur Stromversorgung empfehle ich ein kleines 500mA Netzteil mit einer 
Spannung um die 7,5V bis 9V."

Gruß
Uli

von Richard B. (Gast)


Lesenswert?

Aso ^^ ... nicht gut. Wo stand es von 9V? habs Überlesen. Ich dachte ein 
7805 wird benutzt und man kann mehr als 12V benutzen ;-).

Kann ich die Sicherung überbrücken?`Hab nämlich keine mehr ... und will 
nicht auf Reichelt warten.

Habe ein Stabilisiertes 9V Netzteil.

Ist die Sicherung auf 9V begrenzt?

von Simon K. (simon) Benutzerseite


Lesenswert?

Also eine spannungsabhängige Sicherung habe ich auch noch nie gesehen ;)

Warum bist du dir so sicher, dass diese kaputt ist?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich habe laut Plan eine 12V-Z Diode diese bricht bei 12V durch! 
Natürlich kann die Sicherung überbrückt werden :-)

Gruß
Uli

von STK500-Besitzer (Gast)


Lesenswert?

>Ist die Sicherung auf 9V begrenzt?
Sicherungen begrenzten den Strom... im Allgemeinen ist dieser Wert 
Spannungsunabhängig (naja, eine gewisse Leistung muß schon an der 
Sicherung abfallen, damit sie durchbrennt...).

von Simon K. (simon) Benutzerseite


Lesenswert?

Achso, Ulrich. Na das ist ja getrickst ;) Wär mir aber um den Platz zu 
schade, hehe.

von Richard B. (Gast)


Lesenswert?

Aso die 12V-Z Diode ist die Sicherung. Also D4.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Ich habe mit D... gerechnet eine Schutzdiode gegen Verpolung und eine 
Z-Diode gegen Überspannung. Ich weiß auch, das die 7805er eine 
Temperaturüberwachung haben aber sicher ist Sicher.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Nicht die Z Diode ist die Sicherung!!!!!!
F1 ist die Sicherung!!! D4 hat sie nur ausgelöst!!!

von Thilo M. (Gast)


Lesenswert?

>Ich weiß auch, das die 7805er eine Temperaturüberwachung haben aber sicher ist 
Sicher.

Da tust du auch gut dran. wenn die Teile mit Kühlkörper betrieben wrden, 
dann fließen ziemliche Ströme bis die Temperatursicherung kommt. Da kann 
der Regler oder Anderes schon mal dran glauben. ;)

von Richard B. (Gast)


Lesenswert?

Aso ok. Dann ist D4 heile. Ich Überbrücke dann F1. Danke.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Aber nicht mit 12V oder nur ohne die Diode, sonst tut sie der Sicherung 
bald gleich ;)

von holger (Gast)


Lesenswert?

>Aso ok. Dann ist D4 heile. Ich Überbrücke dann F1. Danke.

Brenn meine Schaltung, brenn ;)

Sicherungen überbrückt man nicht einfach so.
Es gibt einen Grund wieso sie durchbrennen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Sicherungen sind bei defekt meist hochohmig die Z-Dioden sind meist dann 
niederohmig ;-)

von Richard B. (Gast)


Lesenswert?

Ja der Grund war weil ich 12V benutzt habe. Hab jetzt aber 9V. Hab die 
PICOFUSE ausgebaut. Kann ich Sie irgendwie testen um sicher zu sein das 
die durchgebrannt ist?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

versuche es mal mit einem Multimeter!

von Richard B. (Gast)


Lesenswert?

Jop die Sicherung ist durch. Ulrich deine Glasskugel funktioniert ;-). 
Die PICOFUSE lässt nichts mehr durch.

von Richard B. (Gast)


Lesenswert?

ES BRENNT ES BRENNT ... die LED leuchtet ;-)

Am Terminal kriege ich auch folgendes raus:

<\n><\r>System Ready<\n><\r><\n><\r>NIC init:READY!<\r><\n>My IP: 
192.168.1.18<\r><\n><\r><\n>Kein NTP Server gefunden!!<\r><\n>"

Aber lässt sich nicht pingen oder Aufrufen :-( Die beiden LEDs blinken 
auch nicht.

PC EinstellungenPER DHCP:

        Verbindungsspezifisches DNS-Suffix:
        IP-Adresse. . . . . . . . . . . . : 192.168.1.48
        Subnetzmaske. . . . . . . . . . . : 255.255.255.0
        Standardgateway . . . . . . . . . : 192.168.1.1


AVR Einstellungen:

  //Umrechnung von IP zu unsigned long
  #define IP(a,b,c,d) ((unsigned long)(d)<<24)+((unsigned 
long)(c)<<16)+((unsigned long)(b)<<8)+a

  //IP des Webservers
  #define MYIP    IP(192,168,1,18)

  //Netzwerkmaske
  #define NETMASK    IP(255,255,255,0)

  //IP des Routers
  #define ROUTER_IP  IP(192,168,1,1)

  //IP des NTP-Servers z.B. Server 1.de.pool.ntp.org
  #define USE_NTP    1 //1 = NTP Client on
  #define NTP_IP    IP(77,37,6,59)

  //MAC Adresse des Webservers
  #define MYMAC1  0x00
  #define MYMAC2  0x20
  #define MYMAC3  0x18
  #define MYMAC4  0xB1
  #define MYMAC5  0x15
  #define MYMAC6  0x6F

  //Taktfrequenz
  //#define F_CPU 16000000UL
  #define F_CPU 14745600UL
  //#define F_CPU 11059200UL


Wie suche ich am besten nach dem Problem?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Die beiden LEDs blinken nicht, nicht gut! LED2 muß bei einer Verbindung 
zum Router leuchten. LED3 zeigt RX/TX Daten an.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Auch wenn der Prozessor nicht funktionieren würde, zeigt LED2 einen Link 
normalerweise an. Es kann sein das der 25MHz Quarz vom ENC28J60 nicht 
schwingt. Fehler in der Bestückung Ethernet Seite. Das Programm im 
Prozessor spielt jetzt noch keine Rolle.

von Richard B. (Gast)


Lesenswert?

Ok habe ein neues LAN-Kabel genommen. Jetzt blinkt LED3 ab und zu. Aber 
auf die Weboberfläche oder Ping funktioniert nicht.

LED2 leuchtet nur kurz beim Einschalten auf und leuchten dann nicht 
mehr.

LED3 blink paar mal kurz ... dann etwas länger schneller and wieder kurz 
... es blink so zu sagen fast immer.

von Richard B. (Gast)


Lesenswert?

Achja das Board hängt an einem Netzwerk Switch.
Beim Switch gibt es 3 LEDs. 1. Speed, 2. Link/Ack, 3. FDX.
Im Port von Board leuchtet nur LED 2. Bei allen anderen Geräten lechten 
immer 3.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Das kann gut möglich sein. Ich mache mir gedanken warum LED2 auf dem 
Webboard nicht leuchtet! FB2022 richtig herrum eingebaut?

von Richard B. (Gast)


Lesenswert?

Ja der FB2022 muss richtig drin sein. Habe es von deinem Video 
abgeguckt.
Ich kann die Schrift lesen wenn der Netzwerk Anschluss und RS232 oben 
sind.

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier mal ein Bild mit allen wichtigen Stellen!

von Richard B. (Gast)


Lesenswert?

Wieso soll sich der Webservice bein Router anmelden? Ping er den Router 
oder was?

von Richard B. (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Bild von dem Board. Sollte alles stimmen.

von Richard B. (Gast)


Lesenswert?

Kann ich im Quellcode an den wichtigen Zeilen Debug ausgaben einbauen 
die das Problem eingrenzen?

von Simon K. (simon) Benutzerseite


Lesenswert?

Das Problem ist ja eben nicht der Quellcode...

von Richard B. (Gast)


Lesenswert?

Hallo,

ich habe davor den Quellcode von Simon Hufnagel benutzt 
Webserver_f_r_AVR_Studio.ZIP.

Hab jetzt die letze Version von der Seite runtergeladen, also V1.0.56 
(12.01.08). Jetzt leuchten LED1, LED2 und LED3 blink manchmal.

Aber kann auf die Webseite nicht Zugreifen und Ping geht auch nicht.


Liegt es vielleicht an den FUSES-bits?

Programmiere per AVR DRAGON und AVR Studio und habe folgende 
Einstellungen:

Brown-out detection disabled; [BODLEVEL=111]

JTAG Interface Enabled; [JTAGEN=0]

Boot Flash section size=4096 wors Boot start address=$0000;[BOOTRST=0]

Ext. Crystal Osc.; Frequency 8.0-  MHz; Start-up time: 16K CK + 65 ms; 
[CKSEL=1111 SUT=11]

Die einstellungen sind angeklickt.

von Simon Hufnagel (Gast)


Lesenswert?

Hallo

@Richard B.: Welchen Prozessor verwendest du? MEGA32 oder MEGA644? 
Konnte ich auf deinem Bild leider nicht erkennen.
Meinen Code habe ich leider nur mit dem MEGA32 getestet, da ich noch 
keinen MEGA644 zur Hand hatte.

Bei mmeinem Code habe ich außerdem die Funktion der LEDs 
umprogrammiert!!!!

!!!!!!!!LED2 zeigt TX und LED3 zeigt RX!!!!!!!!!!

Wenn du meinen Code verwendest, ist es normal, dass die LEDs nur kurz 
blinken (eben genau dann, wenn was gesendet/empfangen wird)!

Mit einem MEGA32 funktionert der Code bei mir, ich kann ihn anpingen und 
die Seite läd auch. Über den MEGA644 kann ich wie gesagt leider noch 
nichts sagen...

MfG Simon

von Richard B. (Gast)


Lesenswert?

Ich benutze einen MEGA644.
Ich bin ratlos wieso ich das Ding nicht anpingen kann:-(

von ingo_s (Gast)


Lesenswert?

Hallo Ullrich,

gestern hab ich grad den bedrahteten Webserver bestellt, und nun kommt 
eine neue Version in SMD, genau das was ich eigentlich gesucht habe.
Verrate uns doch mal was da an neuen Hardware Features drauf ist.

Gruss
Ingo_s

von dann_mal_los (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Ihr!
Ich hab mal das Programm (newStack1_0_56) von Ulrich Radig auf einen 
AT90CAN128 überspielt!
Hab natürlich einen ENC28J60 genommen.
Die Hardware funktioniert, die habe ich schon mit anderer einfacher 
Software getestet!

Beim Programm von Ulrich zeigt der Hyper Terminal folgendes:
///////////////////////////////////////////////
System Ready

NIC init:
System Ready

NIC init:READY!
My IP: 192.168.10.22

Kein NTP Server gefunden!!
Kein NTP Server gefunden!!
Kein NTP Server gefunden!!
///////////////////////////////////////////////

Ich kann das Gerät aber nicht anpingen und die Server-Seite kann ich 
somit auch nicht aufrufen!
Kann mir da jemand helfen! Ich hab den Quellcode für den AT90CAN128 mit 
drangehängt!

Danke Euch!
Gruß,
     Thorsten

von Richard B. (Gast)


Lesenswert?

Das gleiche Problem habe ich auch ... nur ich benutze den Mega644.

von Gerd G. (elektrikser)


Lesenswert?

Ich habe zur Zeit einen Webserver mit Kamera und ATMega644 am Laufen. 
SW-Version 1.0.56.
Läuft seit 4 Stunden ohne Hänger.
Die Auflösung der Kamera umstellen, funktioniert allerdings noch nicht. 
Zur Zeit läuft die Kamera auf 160x120.
Ich habe in der main.c die Zeile 79 so abgeändert:
  >max_bytes = cam_picture_store(2);
Muss noch etwas geändert werden?

Gruß Gerd

von dann_mal_los (Gast)


Lesenswert?

Mit anderen Programmen funktioniert das Ganze! Ich kann den ENC 
anpingen, usw.
Leider aber nicht mit dem Programm von Ulrich Radig.
Schade, da mich die NTP-Geschichte sehr interressiert.

von Steffen (Gast)


Lesenswert?

hmm...

dann einfach mal die initroutinen vergleichen.

Steffen.

von holger (Gast)


Lesenswert?

Moin allerseits,

also Ulrichs 1.056 läuft auf meinem ATMega644 perfekt.

>Beim Programm von Ulrich zeigt der Hyper Terminal folgendes:
>///////////////////////////////////////////////
>System Ready

>NIC init:
>System Ready

>NIC init:READY!
>My IP: 192.168.10.22

Wirklich zweimal "System Ready" ? Dann hätte der zwischen den beiden
NIC init einen Reset machen müssen. Das hat der bei mir noch nie 
gemacht.
Da könnte irgend was faul sein. Hängt da noch mehr am SPI ?

>Kein NTP Server gefunden!!
>Kein NTP Server gefunden!!

Das könnte mehrere Gründe haben: NTP Server nicht erreichbar,
Router IP falsch, oder der Router lässt die IP des Webservers
nicht durch (weil nicht freigegeben im Router).



Gruß
 holger

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerd,

änder mal die Einstellung cam_picture_store in httpd.c!!

Desweiteren den den cam_dat_buffer auf 1000 setzen in cam.h!

Gruß
Uli

von dann_mal_los (Gast)


Lesenswert?

Hallo Holger!

Danke für den Tip!

Werde die nächsten Tage das Ganze mal überprüfen!

Schönen Dank nochmal und Gruß,

    Thorsten

von dann_mal_los (Gast)


Lesenswert?

...ach ja, danke natürlich auch an Steffen !!!!!!!!!!

von dann_mal_los (Gast)


Lesenswert?

Nochmal ne Frage!
Muß bei der Router-IP der Gateway oder wirklich die IP des Routers, mit 
der ich auch auf die Konfigurationsseite komme, eingefügt werden???

Thorsten

von Gerd G. (elektrikser)


Angehängte Dateien:

Lesenswert?

Hallo Uli,

hat einwandfrei funktioniert. Erkennst du die Platinen auf dem Bild?
;-P
Jetzt lasse ich ihn mal laufen.
Gruß Gerd

von Gerd G. (elektrikser)


Lesenswert?

dann_mal_los wrote:
> Nochmal ne Frage!
> Muß bei der Router-IP der Gateway oder wirklich die IP des Routers, mit
> der ich auch auf die Konfigurationsseite komme, eingefügt werden???
>
> Thorsten

Hat Ulrich schon mal beantwortet. Du brauchst die lokale Adresse deines 
Routers im Netzwerk, z.b. 192.168.0.1.
Beitrag "Re: Webserver ATmega32/644DIP ENC28J60"

von Richard B. (Gast)


Lesenswert?

Wie kann ich HTTPC_DEBUG(""); ausgeben lassen?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Richard B.
Wenn Ping funktioniert!

@all
es gibt nun Version 1.0.57 Änderungen betreffen nur den Kamarabetrieb!

z.B. Einstellung der Auflösung in der config.h ;-)

Gruß
Uli

von Richard B. (Gast)


Lesenswert?

OK hab debug Ausgaben aktiviert.

Das wird nur ausgegeben:

System Ready

NIC init:READY!
My IP: 192.168.1.25

TCP Anwendung wird in Liste eingetragen: Eintrag 0
TCP Anwendung wird in Liste eingetragen: Eintrag 1

Ping und Zugriff auch webpage geht nicht.

Jemand eine Idee woran es liegen könnte?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

@Richard B.

Wenn ein Ping ausgeführt wurde, wie sieht der ARP-Cache vom Webserver 
aus? Schon mal mit einem Crossover-Kabel direkt am Rechner getestet?

von Richard B. (Gast)


Lesenswert?

Per Crossover-Kabel direkt an PC geht auch nicht :-(.

ARP-Cache? Wo sehe ich den? Wie gebe ich ihn aus?

von Frank (Gast)


Lesenswert?

Mit dem Befehl ARP über die Console.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Sind wirklich die Kodensatoren alle richtig??

von Torsten K. (avr_fan)


Lesenswert?

@Richard B.

Meiner Meinung nach hast Du ein Problem mit deiner Hardware. Wenn die 
Link-LED am Switch nicht angeht, dann kann das Problem eigentlich nur 
zwischen dem ENC, Übertrager und der RJ45-Buchse liegen. Und das für RX 
& TX getrennt von einander. Sobald der ENC mit Spannung versorgt wird 
und der Quarz korrekt angeschlossen ist leuchten nach kurzer Zeit die 
Link_LED am Switch und am Webserver (Bei mir am MagJack). Das ganze 
funktioniert normalerweise auch ohne Prozessor. Die physikalische Ebene 
übernimmt der ENC allein.

@Alle

Ich hatte vor ein paar Tagen die Frage nach der Vernetzung von mehreren 
AVR gestellt. Aus den vielen Vorschlägen (Danke an alle) habe ich mir 
nach langen Überlegen und nach viel lesen den Vorschlag von Ulrich 
ausgewählt, das mittels I2C zu machen. Nachdem ich nun die Kommunikation 
von 2 AVR mittels I2C hinbekommen habe, bin ich gerade dabei, das ganze 
etwas abzurunden und in die Software vom Webserver mit einzubinden.

@Ulrich

Aus welchem Grund hast Du eigentlich den ENC-Treiber gewechselt? Hat der 
alte zu viele Probleme gemacht? Bei meinem Webserver konnte ich keinen 
Unterschied feststellen. Er läuft bis heute problemlos mit allen 
Softwareversionen ab 1.0.20. Und das mit einer handgestrickten Platine 
auf Lochrasterbasis.

Viele Grüße
Torsten

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Im Alten waren noch nicht alle Erratas eingearbeitet ;-) desweiteren 
wollte ich sehen ob ein anderer Treiber besser läuft. Meiner Meinung 
nach ist der neue Treiber besser.

Gruß
Uli

von Richard B. (Gast)


Lesenswert?

@Torsten Keil

Die Link-LED am Switch und die Link-LED am Board leuchten ja. Das ist ja 
das Problem. Und die LED für TX und RX blinkt auch.

von Gerd G. (elektrikser)


Lesenswert?

So, wieder mal eine Meldung von mir.
Ich habe heute, ähh gestern, die Platine für Ser_LCD geätzt, gebohrt und 
bestückt.
Mit dem Test-Programm auf der Homepage von Ulrich läuft das einwandfrei.
Beim Webserver bekomme ich nicht einmal das LCD initialisiert, obwohl 
ich in der config.h USE_SER_LCD auf 1 gesetzt habe.
Also ist wieder Fehlersuche angesagt...

HW-Version 1.1
Atmega644
DC-3840 an
ADC aus
SW-Version 1.0.57

Ansonsten läuft der Server ohne Abstürze oder ähnliches. Die Kamera 
braucht bei 640x480 relativ lange. Aber das ist bei der MCa25 auch nicht 
besser. Und ab und zu wird das Laden der Webseite nicht fertig!?!(Win 
XP)

@Richard
Wie sieht es bei dir aus? Hast du deine HW nochmal gecheckt? Am 
Atmega644 sollte es nicht liegen, da er sich seriell meldet. Außer du 
hast den falschen Treiber angewählt.

Gruß Gerd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerd,

Nachdem ich lange mein Display nicht getestet habe, musste ich dieses 
erstmal an der aktuellen Version 1.0.58 testen (ATmega32 + ATmega644)!
Aber wie erwartet funktionierte es ;-)

Die Display Testroutine ist die gleiche Routine die ich auch im 
Webserver verwende! Anderer Quarz?? Evt. Display Busy Wait in lcd.h 
etwas vergrößern.

In der Version 1.0.58 wurde noch ein Fehler in der cam.c entfernt. Hier 
gab es noch einen Fehler in der längenbyte Berechnung.

Gruß
Uli

von Gerd G. (elektrikser)


Lesenswert?

Hallo Ulrich,

die Testroutine lief auf dem Pollin-Board mit einem Atmega32 und 16MHz. 
Auf dem Server ist ein Atmega644 mit 14,74576 MHz (wegen Cam). Also 
sollten die Timings nicht so schlecht sein. Ich probiere noch einmal und 
melde mich dann.

Gruß Gerd

von Gerd G. (elektrikser)


Lesenswert?

O.K. Display läuft. War mein Fehler. Einen neuen ATmega644 genommen, 
weil der alte in meinem zweiten Server gewandert ist und den 
Standardfehler gemacht: JTAG!

Folgende Kombis durchgespielt:
Kamera an, Servo an, Display an -> o.k.
Kamera an, ADC an, Display an -> kein Bild von der Kamera mehr.

SW: 1.0.58
Die Suche geht weiter...
Mal sehen, was ich da wieder verbockt habe...

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerd,

Hast du die neue Httpd.c benutzt? Beim laden des Kamerabildes wird der 
ADC dort nun kurz abgeschaltet! Wenn nicht funktioniert die Kamera 
Routine nicht.

Gruß
Uli

von Gerd G. (elektrikser)


Lesenswert?

Die httpd.c, die bei 1.0.58 dabei war?
Oder hast du in deinem Forum eine spezielle?
Ich verwende das Projekt so, wie es auf deiner Homepage gezippt ist. 
Eigene Sachen sind in diesem Server noch nicht drin.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Dann ist alles OK!

Gruß
Uli

von Gerd G. (elektrikser)


Lesenswert?

Bei mir leider nicht. Ich habe gesehen, dass in der httpd.c der ADC kurz 
aus und wieder eingeschaltet wird. Allerdings bekomme ich trotzdem kein 
Kamerabild auf die Webseite wenn ADC an ist.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Gerd,

versuche mal Version 1.0.59 jetzt kannst du Kamera und ADC benutzen!

Gruß
Uli

von elektrikser (nicht angemeldet) (Gast)


Lesenswert?

Hallo Ulrich,

bis ich nachgesehen hatte, warst du schon bei 1.0.60 ;-P
Habe es gerade auf dem Server geladen und es funktioniert.
Danke!

Werde mir jetzt den Code vornehmen und spionieren, was du geändert hast.
Bin weiter am Testen!

Gruß Gerd

von Gerd G. (elektrikser)


Lesenswert?

Zwischenstand:
Die ADC-Geschichte läuft bei mir noch nicht richtig. Die meiste Zeit 
liefern die Kanäle 0 zurück, obwohl 2,5V anliegen. Werde morgen eine 
neuen Atmega einsetzen, falls die AD-Kanäle defekt wären. Auch muss ich 
die Kamera umverdrahten, damit die serielle Schnittstelle zum Debuggen 
frei ist.

von Gerd G. (elektrikser)


Lesenswert?

Tja, habe mir eine Poti-Platine gebastelt und da defekte Potis erwischt. 
Waren ausgeschlachtet. 40 ausgebaut und zwei waren defekt. Die habe ich 
natürlich sofort genommen...*grmpfl* Hätte doch früher ins Bett gehen 
sollen.

Jetzt suche ich nach einer Möglichkeit die Balkenanzeige in der 
Vertikalen zu machen. Bei einer Füllstandsanzeige sähe das besser aus.

von dann_mal_los (Gast)


Lesenswert?

Hallo!
Wollt mal eben bescheid geben!
Die Software von Urich Radig läuft nun auf dem AT90CAN128.

Ich habe folgenden Fehler gemacht:

In der stack.c musste ich noch die while-schleife an den AT90CAN128 
anpassen. PINB musste in PIND geändert werden, usw......
///////////////////////////////////////////////////////////////
void eth_get_data (void)
{
  if(eth.timer)
  {
    tcp_timer_call();
    arp_timer_call();
    eth.timer = 0;
  }
  if(eth.data_present)
  {
  #if USE_ENC28J60
    while( (PIND &(1<<PD2)) == 0)
    {
  #endif
///////////////////////////////////////////////////////////////
Desweiteren hat sich das Programm gern mal resetet. Das lag wohl am
delay(200000);
in der void enc28j60_init(void).
Habe den delay gesplittet und ein paar watchdogs integriert und seitdem 
läuft alles super!!

Danke nochmal für die Tips!!!!

Hat eigentlich schonmal jemand versucht einen FTP-Server anzusprechen 
über TCP oder ähnliches??
Versuche das gerade, aber dat haut irgendwie nicht so richtig hin!
Kann mir da jemand weiterhelfen??
Gruß,
        Thorsten

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier mal ein kleines ADD_ON evt. kann das jemand gebrauchen ;-)

Gruß
Uli

von Manuel K. (mkauf)


Lesenswert?

Hi Ulrich,

wie sieht es den mit deinem Neuen Webserver aus ?
:)

schon gespannt bin

von holger (Gast)


Lesenswert?

>Hier mal ein kleines ADD_ON evt. kann das jemand gebrauchen ;-)

Nicht schon wieder die Spannungsteiler an der MMC/SD ;)
Was sagt denn die ISP Programmierung dazu wenn CS der
MMC/SD beim Reset in der Luft hängt ?

von holger (Gast)


Lesenswert?

>Was sagt denn die ISP Programmierung dazu wenn CS der
>MMC/SD beim Reset in der Luft hängt ?

Oh Gott, CS hängt ja gar nicht in der Luft, sondern
ist aktiv auf low. Da muss man die Karte beim ISP prommen
ja rausziehen :(

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo Holger,

einfach ein 10K Pullup und das Problem sollte beseitigt sein.

@Manuel Kauf
Der neue Webserver wird am Donnerstag von mir zusammen gebaut. Dann gibt 
es hier das erste Foto ;-)

Gruß
Uli

von Manuel K. (mkauf)


Lesenswert?

Na dann bin ich mal Gespannt ;)

hatte gehofft das du ihn schon gelötet hast ;) will doch wissen was du 
wieder "gezaubert" hast

von holger (Gast)


Lesenswert?

>einfach ein 10K Pullup und das Problem sollte beseitigt sein.

Da bin ich ja mal gespannt wie du den anschliesst ;)

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Naja 10K sind es nicht gerade sondern nur 1k. Portpin PA0 mit einen 1k 
Widerstand gegen VCC. Im Anhang die Bilder von meinem Webserver mit 
MMC/SD-Karte ;-)

Gruß
Uli

von sascha (Gast)


Lesenswert?

jaaa besser nicht die Karte beim Flashen drin lassen - beim xx? mal hab' 
ich's vergessen, und promt geht sie nicht mehr :( . Lässt sich zwar 
initialisieren, aber mehr auch nicht!


Sascha

_______________________________________
http://sw-penig.dyndns.org:8080

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier wie versprochen die neuen Fotos vom Webserver ;-)

Gruß
Uli

von Michael S. (snickers)


Lesenswert?

Hallo Uli,

Dein Projekt ist einsame Spitze. Seit langen hatte ich nicht so was 
interessantes zu Basteln.
Nachdem ich nun, fernab der Arbeit etwas Zeit hatte, habe ich heute 
Nacht den Webserver endlich aufbauen können und er klappte auf Anhieb.
Echt prima Sache ! Jetzt gehts dann weiter, sich durchs Programm wühlen 
;-)

Die neue SMD-Platine sieht auch super aus, ich glaube ich werde mir die 
auch noch bestellen ...

von Steffen (Gast)


Lesenswert?

Hallo uli,

ich habe in deinem Forum gelesen, dass du mit der aktuellen Version auch 
WOL implementiert hast.

Kannst du noch ein paar Worte zu der Funktion sagen? Kann ich damit den 
Controller aufwecken? Oder kann ich damit einen weiteren Rechner 
aufwecken (wenn z. B. die Temperatur zu hoch ist...)?

Gruß
Steffen.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Es kann ein Rechner z.B. der PC gestartet werden.

Gruß
Uli

von Tarek K. (strog)


Lesenswert?

Hi leute ich habe vor einigen Tagen eine alte Netzwerkkarte gefunden wo 
ein Takarack TC30911JL und ein TC3296N auf der Platiene aufgeloetet ist. 
Habe das Internet durchgesucht aber bin nur auf Seiten gestossen die die 
Datenblaetter freigeben gegen einen gewissen preis.
Wenn jemand die datenblaetter oder den link wo ich sie finden kann, hier 
im thread posten kann wuerde es toll. :)

von Ulrich R. (radiguli) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Hier ein neues Foto fertig eingebaut.

Gruß
Uli

von Sucher (Gast)


Lesenswert?

Hallo

@Ulrich auf so ein Webmodul habe ich schon lange gewartet, als Ersatz 
für meine C_Control. Hast Du auch noch vor eine universelle Basisplatine 
mit IO-Klemmen für das Hutschienengehäuse zu bauen mit 
AnalogEingangen,TasterInput,Relausausgang(e),etc.....eventuell mit nem 
eigenen Prozessor via SPI/I2C an den Webserver angebunden um Regelungen 
zu implementieren unabhängig vom Webservertrafik?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Ich erstelle gerade eine Basisplatine. Mit DC-DC Wandler für die 24V 
Versorgung. 4 Relais für die Ausgänge und 4 Optokopler für Eingänge 
sowie 8 Analogeingänge. Ein eigenen Prozessor für I/O ist nicht 
vorgesehen. Für Regelungsaufgaben kann ein Timerinterrupt verwendet 
werden dieser ist Netzlast unabhängig.

Gruß
Uli

von Simon Hufnagel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe hier eine Version mit DS1631 (Temperaturfühler mit I2C 
Anschluss) basierend auf der Version 1.0.65. auf der Webseite des 
Servers wird die aktuelle und die maximale und minimale Temperatur seit 
Serverstart angezeigt.

Schöne Grüße

Simon Hufnagel

von Harald P. (haraldp)


Lesenswert?

Hallo,
das Projekt ist wirklich super. Hier noch ein Paar Anregungen dazu. Da 
RAM-Speicher knapp ist, gibt es noch folgende Optimierungsmöglichkeiten.
1) In base64.c kann die Variable BASE64CODE im Flash hinterlegt werden. 
Das ergibt 65 Bytes mehr Ram. Dann muß es ganz hinten im Programm 
heißen:
*strp = pgm_read_byte(&BASE64CODE[(*strp) & 0x3F]);
Oder man berechnet das Authentikationswort gleich offline (nochmals 20 
Byte mehr).
2) Die Kamera kann direkt in eth_buffer schreiben. Man braucht also 
keinen eigenen Puffer. Die Änderungen dazu sind minimal: Man muß nur 
einen Zeiger definieren, der auf den Puffer zeigt. Z.B.
volatile unsigned int max_bytes;
volatile unsigned int cmd_buffercounter = 0;
volatile unsigned int dat_buffercounter = 0;
volatile unsigned int cam_dat_start = CAM_HEADER;
volatile unsigned int cam_dat_stop = CAM_HEADER + DAT_BUFFER_SIZE;
volatile unsigned int dat_buffer_size = DAT_BUFFER_SIZE;
volatile unsigned char cam_cmd_buffer[CMD_BUFFER_SIZE];
volatile unsigned char cam_dat_buffer[DAT_BUFFER_SIZE];
volatile unsigned char * cam_dat_ptr = cam_dat_buffer; // Zeiger auf 
Datenpuffer
In der ISR-Routine heißt es dann:
SIGNAL (SIG_USART_RECV)
{
  char tmp = UDR;
  if(cmd_buffercounter < CMD_BUFFER_SIZE) 
cam_cmd_buffer[cmd_buffercounter] = tmp;
//  if(cmd_buffercounter >= cam_dat_start && cmd_buffercounter < 
cam_dat_stop) cam_dat_buffer[dat_buffercounter++] = UDR;
   if(cmd_buffercounter >= cam_dat_start && cmd_buffercounter < 
cam_dat_stop) cam_dat_ptr[dat_buffercounter++] = UDR;
  cmd_buffercounter++;
}
Die Voreinstellung ist hier, daß der Zeiger auf den 1Byte großen 
cam_dat_buffer zeigt. Später muß er in httpd.c auf den entspechenden 
Platz im eth_buffer umgeleitet werden.

Das ganze Programm möchte ich hier nicht reinstellen, da ich doch vom 
Original sehr abgewichen bin.

Harald

von gonzo (Gast)


Lesenswert?

Hallo Uli (und Forum),

vielen Dank für dieses Projekt.

Ich habe die altuelle Version für den ATMEGA644 (1.0.65) geflasht,
es geht auch alles, nur über die serielle Schnittstelle kann ich nichts 
konfigurieren.
Er gibt mir alles als Echo zurück (lokales Echo ist aus), aber "help", 
"IP 192.168.3.1" etc. haben keinerlei Wirkung.
An der Hardware kann es ja eigentlich nicht liegen ??????

Hat jemand eine Idee???

Viele Grüße,

Gonzo

von gonzo (Gast)


Lesenswert?

**nach oben bring**

keiner eine Idee ?? (ich komme nicht so richtig weiter und das 
Wochenende ist auch bald vorüber..)

von Dr. House (Gast)


Lesenswert?

Hört sich ja fast so an, als ob der Telnetserver an ist.
Hast Du denn an der Software was verändert oder hast Du das Original 
Hex-File genommen ? Ist alles richtig konfiguriert ? comport einstellung 
und so ? Handshake aus ?

von gonzo (Gast)


Lesenswert?

Ich habe das originale hex-File geflashed.

Die Com-Porteinstellingen sind richtig, ich bekomme ja ordentlichen Text 
vom uC bzw. meine Eingaben kommen als Echo richtig vom uC zurück - meine 
Befehle ignoriert er aber.

Viele Grüße,

gonzo

von John S. (linux_80)


Lesenswert?

Wenn scheinbar alles richtig ist, bekommst Du die paar Zeilen nach dem 
Reset beim Init zu sehen ?
Hast Du ein fertiges Board, oder selbstgebaut, dann evtl. RX/TX prüfen.

von gonzo (Gast)


Lesenswert?

Ja klar kommt der Init -Text vom uC (bei RESET),

dann kann ich etwas eintippen z.B. help - kommt auch korrekt als Echo 
zurück - nur es passiert halt nix.

Platine hab ich selbst gemacht, Webserver läuft auch (mit der 
Standard-IP).

Wie gesagt, Hardware scheint ok.

Grüße,

Gonzo

von Ralf H. (heschdy)


Lesenswert?

Kurzschluss RX-TX?! Wäre in diesem Fall meine Idee.

von gonzo (Gast)


Lesenswert?

ist natürlich eine Idee...... habe ich schon kontrolliert.

Weiter oben war die Rede vom Telnet-Server - blockiert dieser die 
serielle Schnittstelle ?

Grüße,

Gonzo

von Marco S. (masterof)


Lesenswert?

Welches Terminal-Programm verwendest du?

von gonzo (Gast)


Lesenswert?

Hyperterm oder Hterm - kein Unterschied.

Grüße,

Gonzo

von Dr. House (Gast)


Lesenswert?

>Telnet-Server - blockiert dieser die serielle Schnittstelle

Dafür muß er aktiviert werden, was Du bestimmt nicht gemacht hast.
Ich würde nochmal die Hardware überprüfen.

von gonzo (Gast)


Lesenswert?

Ok, ich versuche es mal andersrum -
Bei euch funktioniert die Konfiguration über serielle Schnittstelle 
einwandfrei - ihr habt auch einen ATMEGA644 mit dem Hexfile 1.0.65 von 
Ulis Webseite geflashed und nichts verändert ?!

Ich weis mir keinen Rat mehr, wie oben schon erwähnt scheint die 
Schnittstelle zu funktioniern, TX und RX sind lt. Multimeter auch nicht 
kurzgeschlossen.

Grüße,

Gonzo

von Michi Müller (Gast)


Lesenswert?

Hi, habe gerade mal das Original Hexfile für Dich auf meinem System 
geflasht.
Ergebnis : Es funktioniert.
Was hast Du für einen Quarz ? Default im Hex ist 16 MHz.

von gonzo (Gast)


Lesenswert?

Danke für die Mühe,

habe einen 16 MHz Quarz drin (wie im Bauplan - ist auch kein 
Oberwellenquarz (zumindest hatte ich keinen bestellt).

Ok, das hilft erst mal weiter - es ist also an der Harware definitiv was 
faul.

Da werde ich mal mit der Methode des "scharfen Ansehens" weiter den 
Fehler suchen müssen.

Viele Grüße,

Gonzo

von gonzo (Gast)


Lesenswert?

Ach ja,

ich hab die Fuses nach Low/High Byte im Makefile gesetzt - gibt es auch 
eine Auflistung welche Fuses gesetzt(geändert) werden müssen? Eventuell 
sollte ich auch an dieser Stelle noch mal schauen.....

Grüße,

gonzo

von Michi Müller (Gast)


Angehängte Dateien:

Lesenswert?

Meine Fuses sind so eingestellt (Mit dem STK500)

Bin jetzt erstmal zu "Zoch" ;-)

von gonzo (Gast)


Lesenswert?

Habs gefunden.... der Leiterzug von PIN 3 des Proz. zum ENC28J60 INT war 
unterbrochen - das muss den uC wohl aus dem Tritt gebracht haben.

Vielen Dank für alle Ratschläge,

Gonzo

von Michi Müller (Gast)


Lesenswert?

>An der Hardware kann es ja eigentlich nicht liegen

>Wie gesagt, Hardware scheint ok.

>Habs gefunden.... der Leiterzug von PIN 3 zum ENC28J60 INT war unterbrochen


Jaja, und wir hatten wieder die Mühe ;-)

Freut mich für Dich, das es jetzt klappt !

von gonzo (Gast)


Lesenswert?

Ok, du mußt aber auch zugeben, das das (bezogen auf Probleme mit der 
seriellen Schnittstelle) ein nicht sooo leicht zu findender Fehler war.

Aber wozu hat man euch ;-))..........

Viele Grüße,

Gonzo

von Martin (Gast)


Lesenswert?

Hallo,
ich hatte im Bereich "Protokoll DC-3840 Handycam" gelesen, dass diese 
Handycam die Daten über die serielle Schnittstelle schon als jpg-Datei 
ausgibt und für die Verwendung als Webserver nur noch der TCP-Header 
hinzugefügt werden muss. Nun zu meiner Frage. Ist dies auch bei der 
MCA25 der Fall? Ich möchte diese nämlich auch gerne in diesem Projekt 
verwenden. Mir ist klar das hierzu eine andere Initialisierung notwendig 
ist.

Gruß

Martin

von Herman Monster (Gast)


Lesenswert?

Schon mal überlegt warum es die Funktion "Suchen" gibt ?

In diesem Thread Beitrag "Handykamera MCA-25 ansteuern"

steht : "Die Kamera liefert einen reinen JPG Stream "

Für mehr Details mußt Du Dich da mal selbst Durchlesen ;-)

von Martin (Gast)


Lesenswert?

Trotzdem danke für den Hinweis!!!!

von Michael U. (amiga)


Lesenswert?

Hallo,

ich hatte ja Ulrichs Webserver schon voriges Jahr auf Lochraster 
verdrahtet und damit rumgespielt.
Heute habe ich nun endlich die Leiterplatte von Ulrich fertig bestückt 
und die Kamera mit einem Stecker versehen.

Jetzt zu meinem Problem: C ist (immernoch ;-) nicht mein Ding, 
programmiere in ASM...

Ich habe die aktuelle Version der Sourcen, habe erstmal den Mega644P 
"nachgerüstet", also alle 644er Definitionen nochmal als 644P 
reinkopiert.
Damit compiliert er jetzt fehlerfrei für den 644P und läuft auch darauf.

Die Absicht dahinter ist einfach: der 644P hat einen 2. USART, den ich 
für die Kamera nehmen will. Also erstmal in cam.h und cam.c alle 
Definitionen des USART um den Präfix CAM_ erweitert und die 
Registernummern von 0 auf 1 geändert, um den UART unabhängig von USART0 
als Debug-Ausgabe zu bekommen.

In der usart.c die CAM-Abfragen im Moment noch auskommentiert, damit die 
Ausgaben auch mit eingebundenem CAM-Modul laufen.
Da muß ich noch Abfragen für den 644P nachrüsten, damit USART0 beim 644P 
aktiv bleibt, auch wenn CAM eingebunden ist.

cam_init in main.c ist erstmal auskommentiert, die Kamera hängt noch 
nicht dran, meine Kiste hatte keinen passenden Quarz auf Lager...

Evetuelle Abweichungen des USART1 habe ich noch nicht überprüft, das 
mache ich wohl morgen mit passendem Quaz und Kamera dran.

Meine Frage ist nur: habe ich bis hier was wesentliches übersehen oder 
sollte es so dann erstmal mit der CAM an USART1 laufen?

Er compiliert mit CAM ohne Fehler und läuft bis jetzt auch noch.

Gruß aus Berlin
Michael

von Horst Hegen (Gast)


Lesenswert?

>Jetzt zu meinem Problem: C ist (immernoch ;-) nicht mein Ding

Hi, ich wollte früher auch nie µC in C programmieren. War auch immer ein 
ASM Narr. Aber ich persönlich kann sagen, der Umstieg hat sich gelohnt, 
so sehr, das ich eigentlich gar nicht mehr in assembler programmiere.
Also : Trau Dich ;-)

>habe erstmal den Mega644P "nachgerüstet"

Genau das selbe hatte ich auch mal vor. Aus den selben Gründen wie 
Deine.

>sollte es so dann erstmal mit der CAM an USART1 laufen?

Probiere es doch aus, viel kaputt gehen kann ja nicht. Wenn doch weitere 
Probleme auftreten, kannst Du ja noch mal nachfragen.

von Michael U. (amiga)


Lesenswert?

Hallo,

da mein Quarz jetzt da ist...

Die Kamera hat sich auf Anhieb am USART1 gemeldet, USART0 zum PC geht 
auch.
Ich räume die geänderten Files noch auf und stelle die dann mal hier 
rein, falls noch jemand den 644P nehmen will.

Gruß aus Berlin
Michael

von Horst (Gast)


Lesenswert?

Super das es klappt.
Über den Code würden sich bestimmt einige Leute freuen.
Schreib doch bitte auch einen Beitrag in Ulrichs Forum, vielleicht nimmt 
er den Code dann sogar beim nächsten Bugfix mit auf.

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

hier mal die geänderten Files für den Mega644P mit Camera an USART1 und
serieller Verbindung weiterhin an USART0.

Wäre nett, wenn mal jemand drüberschaut, ob das so richtig ist, bin
immernoch ASM-Programmierer. ;)

Bei mir spielt es zumindest so und ein paar schnelle Tests mit/ohne
Camera mit dem 644P klappten auch.

Mega644, Mega644P und Mega32 compilieren ohne Fehler, bei den anderen
(Mega128/Mega8/Mega88) fehlten ohnehin ein paar Definitionen, hat wohl
auch keiner in Benutzung.

Gruß aus Berlin
Michael

von Gerd G. (elektrikser)


Lesenswert?

Mega128 + RTL8019AS (alter Webserver, neuer Stack 1.0.65) habe ich im 
Einsatz. War meine Lösung um die Cam und serielle Schnittstelle 
gleichzeitig arbeiten zu lassen. Welche Fehler hattest du?

Wo hast du den Atmega644P gekauft? Ich habe ihn jetzt bei CSD und 
Kessler-Electronic gefunden.

Gruß Gerd

von Michael U. (amiga)


Lesenswert?

Hallo,

ich hatte nur mal mit Einstellung Mega128 compiliert, da her er 
irgendwelche UASRT-Register angemault, habe ich nicht weiter verfolgt...

Da ich in Berlin wohne und ein Bekannter dort arbeitet:
www.segor.de

Bitte keine Preisdebatte, wenn ich mir den einzeln schicken lasse, ist 
er vermutlich woanders auch nicht billiger und so habe ich ihn sofort. 
;-))

Ich habe jetzt mal ein Timeout und eine Meldung eingebaut, wenn sich die 
Cam nicht meldet, meine wollte vorhin irgendwie nicht mit mir reden, ich 
muß mir den angelöteten Stecker wohl nochmal anschauen.

Ist im Moment alles mehr C-Übung, wie schon öfter erwähnt, programmiere 
ich sonst nur ASM.

Ich habe hier eigentlich noch einen ASM-Treiber für den ENC rumliegen 
und einen angefangenen TCP-Stack. Bisher ARP, ICMP-Ping und der Anfang 
von IP.
Vielleicht mache ich den auch nochmal weiter und leihe mir ein paar 
Ideen aus den C-Sourcen...

Ist ohnehin nur Zeitvertreib, man will ja auf seine "alten" Tage nicht 
dumm sterben. ;-)

Gruß aus Berlin
Michael

von Gerd G. (elektrikser)


Lesenswert?

Habe es mir beinahe gedacht, dass da Segor im Spiel ist, wenn du schon 
aus Berlin kommst.;-P
Ich habe leider so was hier nicht in der Nähe, also werde ich ihn 
woanders bestellen. Vielleicht habe ich ihn nächste Woche.

>Bitte keine Preisdebatte, wenn ich mir den einzeln schicken lasse, ist
>er vermutlich woanders auch nicht billiger und so habe ich ihn sofort.
>;-))
Wird es mit mir nicht geben, da ich die Elektronik als Hobby betrachte. 
Da gab es doch jemanden, der behauptete, dass ein Hobby Geld kosten 
muss, sonst wäre es kein Hobby.

>Ist ohnehin nur Zeitvertreib, man will ja auf seine "alten" Tage nicht
>dumm sterben. ;-)
Alter ist relativ. Erst dann, wenn man nicht mehr dazu lernen will, ist 
man alt. Bis dahin hat man ja einen gewissen Spieltrieb.

Gruß Gerd

von Marius B. (majus)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Auch ich habe einen kleinen Webserver gebaut.
Dabei habe ich den Schaltplan von Ulrich als Referenzdesign verwendet. 
Deshalb ist seine Software zu 100% mit meiner Hardware kompatibel.

Funktion:
Der Server soll primär als Gateway für ein Home-Automation-Projekt 
dienen. Über die Webside lassen sich bei mir zu Hause zahlreiche 
Steckdosen An-und Ausschalten. Dazu steuert der Mega32 einen 
reverse-engineered 433Mhz Funksender aus einer dieser 
China-Funksteckdosen-Sets an.

Features:
- Bis zu 12 Steckdosen in bis zu 50m Reichweite schaltbar
- Pro Steckdose Leistung bis 3,5kW
- Geringe Leistungsaufnahme P < 2W. (Einsatz eines 
Step-Down-Schaltreglers)
- Sehr einfaches Boarddesign (1 Brücke)
- Layout optimiert auf Ätzbarkeit, Brückenlosigkeit und auf Bauteile die 
jeder in der Bastelkiste haben sollte
- Low Cost (Alles zusammen inkl. 3 Steckdosen ca. 35€)
- Debugging über Rs232
- Verpolungsschutz

Adresse:
Der Server ist unter http://www.majus.homeip.net/ erreichbar.
Name ist "Marius" und Passwort ist "test"
(Bitte nicht Nachts missbrauchen, an Steckdose1 hängt eine Lampe 
(A=Ein,B=AUs)

Im Anhang findet ihr ein paar Fotos und ein Video.
Im Video sieht man:
Grüne Led - Betriebsspannung
Gelbe Led - Link (leuchtet)
Gelbe Led - Transmit(blinkt bei Zugriff)
Rote Led - Leuchtet bei aktivem Funk

Vielleicht hab ich ja jemanden angeregt das Projekt nachzubauen.
Jetz wo die Harware funktioniert, werde ich die Webside noch was schöner 
machen und ein visuelles Feedback über den Zustand der Steckdosen 
einbauen.
Gruß,
Majus


Bilder:
http://img218.imageshack.us/my.php?image=img5952sr4.jpg
http://img218.imageshack.us/my.php?image=img5954ll7.jpg
http://img218.imageshack.us/my.php?image=img5962eo0.jpg
http://img218.imageshack.us/my.php?image=img5964qg2.jpg
http://img175.imageshack.us/my.php?image=img5966qx6.jpg
http://img176.imageshack.us/my.php?image=img5970mg1.jpg

von Anschluss verpasst (Gast)


Lesenswert?

Hallo,

ich habe da ein Problem. Und zwar suche ich das MAGJACK SI-60024-F das 
für den Webserver in SMD benötigt wird. Nur hat den kein Händler im 
Angebot :(

Bei csd-electronics.de ist er auch nicht auffindbar.
Hat die Buchse noch jemand vorrätig und würde sie mir verkaufen oder hat 
jemand einen Ersatztyp parrat der auf die Platiene passt?

von ted (Gast)


Lesenswert?

@ Majus
ich würde gern das Projekt (Platine auch), speziell mit den 
Funksteckdosen, nachbauen.
Da gehst du scheinbar auf den FB-Chip.
Visuelles Feedback wäre natürlich auch schön.
Würdest du die Dateien hier reinstellen? Da ich nicht so der 
C-Programmierer bin, neben den C-Files auch ein fertiges Hex?
Vielen dank im Vorraus

von Nik B. (nikbamert)


Lesenswert?

@Anschluss verpasst

CSD hat ihn, nur im Moment nicht an Lager(ArtikelNr. 015-54085).
Als Ersatz könnte man laut CSD auch den SI-60062 nehmen(ArtikelNr. 
015-54084)

von Thomas H. (pcexperte) Benutzerseite


Lesenswert?

@Anschluss verpasst

Beim SI-60062-F aber aufpassen da er nur 2 LED hat funktioniert ohne
Änderungen an der Platine/am MagJack(TM) nur eine LED.

von Anschluss verpasst (Gast)


Lesenswert?

Danke für die Hilfe, ich werde mir den Ersatztyp bestellen.
Das die eine LED nicht funktioniert ist mir eigentlich ziemlich egal.

von Marius B. (majus)


Angehängte Dateien:

Lesenswert?

@ted

Im Anhang befindet sich die Eagle Datei mit Layout und Board.
Den Code möchte ich momentan nicht veröffentlichen, da
a) Der Code zu 95% dem von Ulrich R. entspricht und dort downgeloadet
werden kann.
b) Die Webside momentan auf keinen Fall ausgereift ist.

Ich habe das Interface zum Chip möglichst offen gehalten. So sollte es
mit vielen verschiedenen Modellen dieser Funk-Fernbedienungen
funktionieren(Optokoppler überbrücken einfach die Tasten der
Fernbedienung).
Meins ist von "Rev" und gekauft bei Real
Beim Kauf darauf achten das man keins nimmt was abbrennen kann. (Da gibt
Rückrufaktionen, Google hilft)


@alle
Schön das in den letzen Tagen so viele Leute auf der Homepage waren. 
Vormittags geht meine Zimmerlampe im 15 Minuten Rhytmus An und Aus.
In der Nacht von Freitag auf Samstag hat um halb 4 Nachts jemand das 
Licht angemacht. Dann musste ich erstmal den Rechner hochfahren um es 
wieder aus zu machen...

Gruß,
Majus

von Jürgen A. (jaja)


Lesenswert?

Cool, Rechner hochfahren um das Licht auszuschalten...
Man könnte auch den Stecker ziehen, oder zur Not im Garten einen Stein 
holen und damit das Licht ausknipsen ;-)

Jürgen

von Klaus Becker (Gast)


Lesenswert?

Hallo Marius,

gibt es auch einen Link zu deiner Software ?

von gerdme (Gast)


Lesenswert?

Hallo Uli

habe mir dieses kleine geniale Teil die Tage mal zusammengebaut und mit 
Software bestückt. Obwohl eher DAU auf dem SW-Gebiet, gelang es mir auf 
Anhieb, die nötigen Änderungen in Deinem gut dokumentierten Code 
vorzunehmen und das Ergebnis einzuspielen. Funktioniet auch alles.

Nun habe ich mich mit der Funktion der übers Netz geleiteten RS232 
befasst. Wenn ich ein Terminal (Als Stand-Alone-Gerät) an den Webserver 
anschliesse, an meinem PC die entsprechende Software (com0com, com2tcp) 
installiere, bekomme ich eine saubere Verbindung, d.h. alle Eingaben 
landen jeweils auf dem Terminal bzw Terminal-Programm am PC. Getestet 
mit 9600 baud.

Als nächsten Schritt wollte ich eine micro-SPS (www.microsps.com) über 
Deinen Webserver ansprechen. Baudrate ist auf 57600 eingestellt.
Konkret starte ich zB ein Terminal-Programm am PC und schliese die SPS 
an die COM1 an. Wenn ich die SPS resete, werden die Statusmeldungen 
einwandfrei ausgegeben (Ähnlich wie bei dem SPS-eigenen Download-Tool).
Betreibe ich das Ganze aber über den Webserver und die virtuelle 
Schnittstelle am PC, kommt nur Datenmüll am Terminal-Programm an. Und 
mit dem Download-Toll geht natürlich gar nix.

Hast Du bereits Erfahrung mit der SPS? Wäre halt unheimlich praktisch, 
die SPS-Steuerungen über Deinen Webserver irgendwo ins Netz zu hängen 
und von jedem PC aus zu warten.

Danke und Gruss, Gerd

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Für die microSPS muß der Datenbuffer vergrößert werden. Selbst an der 
microSPS habe ich den Webserver noch nicht getestet.

Gruß
Uli

von gerdme (Gast)


Lesenswert?

Hallo Uli,

danke für die turboschnelle Antwort :-)

Die Vorgabe ist ja: #define BUFFER_SIZE 50

Frage: Welche Grösse würdest Du empfehlen (So aus'm Bauch heraus).
Oder anders formuliert: welche Änderung hat welchen Effekt?

Werde die Tage dann mal testen und berichten...


Gruss, Gerd

von gerdme (Gast)


Lesenswert?

Hallo,

so, habe nochmal einwenig experimentiert...

Der Zeichensalat im Terminalprogramm ist beseitigt - hatte dummerweise 
vergessen, die Baudrate in der "config.h" auf 57600 umzustellen.
Also, die Startmeldungen der SPS kommen nun an, laufen im 
Terminalprogramm (fast immer) einwandfrei auf.
Das Download-Tool funktioniert dagegen nur sehr zäh bis gar nicht. Wenn 
was ankommt, dann ist es idR vollständig. Ich kann die SPS auch vom Tool 
aus reseten, dann kommen aber meist keine Startmeldungen mehr.
Beim Starten des Debug-Tools geht dann gar nichts mehr.

Die Einstellungen des com2tcp sind wie folgt:
com2tcp --baud 57600 --ignore-dsr \\.\CNCB0 192.168.xxx.xx telnet
Ohne das "--ignore-dsr" geht's nicht.

Ich habe die BUFFER_SIZE stufenweise auf bis zu 1500 angehoben, ohne 
nennenswerten Erfolg.
Ich benutze derzeit die Version mit dem AtMega644.

Kann es sein, dass der Webserver mit den 57600 baud grundsätzlich 
überfordert ist?
Oder fällt wem noch was ein?

Gruss, Gerd

von Wolfgang M. (Firma: Friatec AG) (wolli78)


Lesenswert?

Habe das Problem bei einem MC-Board mit einem C166, bei dem das 
Ladeprogramm den Com-Port öffnet und erst beim 2ten Byte das über 
com2tcp gesendet wird, gibt der Webserver die Daten weiter. das ganze 
habe ich auch mit einem Agelent-Datenlogger probiert, bei der er dann 
auch keine Verbindung aufbaut, weil ein Teil des Protokolls verloren 
geht. Dieses war auch bei nur 9600 baud.

Gruß

Wolfgang Metz

von gerdme (Gast)


Lesenswert?

Hallo,

den Eindruck habe ich auch, dass einfach einige Daten verloren gehen.

Inzwischen habe ich das Teil allerdings wieder etwas stabiler 
hinbekommen:
Statt 16 MHz einen 14,745600 MHz Quarz. Der bringt einen besseren 
Teilungsfaktor für die Serielle.
Grundsätzlich hilft auch im Setup-Tool des "com0com" der Zusatz 
"EmuOverrun=yes"
Nun habe ich im Terminal am PC eine saubere Datenübertragung. Auch im 
Fenster des SPS-Downloaders erscheinen nun alle Zeichen. Das Hochladen 
einer Konfig-Datei oder gar der Start des Debugers verursachen aber 
wieder Datenmüll, der u.U. auch den Webserver zum Einfrieren nötigen. 
Habe nochmal am BUFFER_SIZE rumgeschraubt, leider ohne Erfolg.

Nun gehen mir wirklich die Ideen aus... ;-)

Gruss, Gerd

von uli (Gast)


Lesenswert?

Hallo Gerd,

und schon mal den TX/RX Buffer vergrößert ich rede hier nicht von 
BUFFERSIZE! USART.H Zeile 29

Gruß
Uli

von gerdme (Gast)


Lesenswert?

Hallo Uli,

helf' einem Software-DAU doch bitte noch ein wenig auf die Sprünge ;-)

Ich gehe mal von der aktuellen Version (1_0_75) aus.
Welchen "TX/RX Buffer" meinst Du? An dem BUFFER_SIZE in Zeile 29 habe 
ich ja schon rumgeschraubt.


Zur Übersicht (vielleicht auch für andere Intetressierte), meine 
bisherigen Änderungen an einem frischen SW-Paket von Dir:

config.h
IP-Adressen angepasst, Taktfrequenz auf 14,7456Mhz, Baudrate auf 57600 
eingestellt,
(Und selbstverständlich auch 'nen 14,7456 Quarz ins Board gesteckt)

makefile
atmega644 ausgewählt

usart.h
Zeile 15: BUFFER_SIZE versch. Werte (50 - 1500)
Zeile 46: #define SYSCLK 16000000UL nach 14745600UL (ist das OK so?)


Das Programm com0com installiert,
Im Setup-Tool: "change CNCA0 PortName=COM4"
und: "change CNCA0 EmuOverrun=yes"
ein list ergibt:
CNCA0 PortName=COM4,EmuOverrun=yes
CNCB0 PortName=-


Das Tool com2tcp mit folgendem Parameter aufgerufen:
com2tcp --baud 57600 --ignore-dsr \\.\CNCB0 192.168.xxx.xx telnet
(natürlich mit sinnvoller IP-Adresse...)


Vor allem die Zeile 46 in der usart.h kam mir noch verdächtig vor, ist 
doch richtig, dass ich hier auch die 14,7456MHz eintragen muss, oder?


Vielleicht hast Du noch ne Anregung?

Danke und Gruss, Gerd

von gerdme (Gast)


Lesenswert?

Sorry, kleine Korrektur für die ganz aktuelle Version (1_0_75):

usart.h
Zeile 29: BUFFER_SIZE versch. Werte (50 - 1500)
Zeile 60: #define SYSCLK 16000000UL nach 14745600UL (ist das OK so?)

von Marius B. (majus)


Lesenswert?

Hallo!
Ich habe die Software meines Webservers noch etwas erweitert.
Zum einen wurde die Software auf den aktuellen Stand gebracht.
Außerdem wird der Zustand der einzelnen Funksteckdosen jetzt auch online 
angezeigt.
Des weiteren habe ich noch einen Bug beim Laden der Seite entfernt.
Die Benutzerführung ist noch etwas komisch, aber das bekomme ich die 
auch noch hin. (Ausschaltdominant)

Vielleicht lässt sich ja auch ein kleiner Event-Manager realisieren. Wo 
ich online die Ein- und Ausschaltzeit in einer Liste eintragen kann...
Dank Ulrich's NTP wäre das dann auch Sekundengenau!

Der Server ist unter http://www.majus.homeip.net/ erreichbar.
Name ist "Marius" und Passwort ist "test"
Bitte nicht Nachts missbrauchen!
Steckdose A1,A2 und A3 steuern 3 kleine Lampen in meinem Schlafzimmer.

Gruß,
Majus

von Thomas (Gast)


Lesenswert?

Um mehr als Port A 0-2 steuern zu können,
hab ich in webpage.h (ab Zeile 74) und httpd.c (ab Zeile 181)
die Einträge entsprechend ergänzt (newStack1_0_76).
Leider funktionieren nach wie vor nur die ersten 3 Ports.
Wo muss ich jetzt noch etwas ändern?

Danke

von Thomas (Gast)


Lesenswert?

Erldeigt, hab den Eintrag in config.h übersehen ;-)

von Strabe (Gast)


Lesenswert?

Hallo ,

ich hab' mich entschlossen den Bausatz auch aufzubauen.

Ich  habe die Platine schon bekommen ( danke an Uli, ging sehr schnell 
).

Was Reichelt nicht hatte war der Quarz und die 10uH-Ferritspule, den 
Quarz habe ich mittlerweile dank der Netzwerkkarten-Idee bei Conrad 
bekommen, aber die Spule fehlt mir noch. Spricht was dagegen, die selbst 
als Luftspule zu wickeln ( würde eben gerne loslegen...)oder hat der 
Ferritkern eine besondere Bewandnis ?

Gruß Strabe

von uli (Gast)


Lesenswert?

Hallo,

zur Not geht auch eine Brücke, als alternative geht auch SMC 10.

Gruß
Uli

von Strabe (Gast)


Lesenswert?

ok - danke für die Info ! Gruß Strabe

von Arwed R. (arwedo)


Lesenswert?

Hallo,

ich habe auch einen ETH_EX_M32 von Ulrich am Laufen. Ich verwende einen
ATMega644. Ueber die serielle Schnittstelle sehe ich auch, dass er was
tut; NTP klappt und anpingen kann ich ihn auch. Nur eine Webseite sehe
ich nicht (Seitenladefehler).

Es sollte doch eigentlich reichen, "http://<myip>";; aufzurufen, oder? 
Mit
"telnet <myip> 80" stuerzt der ATMega leider ab. Auch HTTP_DEBUG (in
httpd.h) zu aktivieren hilft scheinbar nix.

Hat jemand 'ne Idee, was ich noch checken kann?

Danke und viele Gruesse von Arwed

p.s.: Ich benutze die newStack1_0_77 Firmware.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Wie immer sind die FuseBits richtig eingestellt?? Wurde was am 
SourceCode geändert? Wurde das File selbst erstellt oder ein fertiges 
HexFile verwendet?

Gruß
uli

von Arwed R. (arwedo)


Lesenswert?

Hallo Ulrich,

die Fuses habe ich so gesetzt, wie ich Deinem Makefile entnommenm habe: 
LF=0xff; HF=0xdf; EF=0xFF.

Habe selber compiliert. Unter Linux mit avr-gcc (4.1.0-1); avr-libc 
(1.4.4-2); binutils (2.16.1-1). Die Vorversionen, die ich bisher benutzt 
habe, hatten noch keinen Support fuer den ATMega644 drin.

Der Code ist noch original; nur HTTP_DEBUG hatte ich versucht zu 
aktivieren.

Viele Gruesse von Arwed

von Klaus (Gast)


Lesenswert?

Hallo!

Ich beginne gerade damit ein paar eigene Erweiterungen in den Webserver 
einzubauen.
Der Stack unterstützt ja auch retransmissions. Dazu hab ich eine Frage: 
Wird immer nur ein Packet gesendet, auf die bestätigung gewartet und 
dann das nächste Packet erzeugt? Oder werden mehrere gesendet, so das 
auch retransmissions von früheren Packeten auftreten können?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Die Packete werden immer nur nacheinander gesendet. Habe ja nur 2kB 
SRAM.

Gruß
Uli

von Dalli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal Respekt - Schönes und ausgereiftes Projekt.

Ich hab hier einen Übertrager vom Typ 16PT8515-4.

Allerdings scheint das Pinout vom Empfohlenen abzuweichen,
könnte mir wohl bitte jemand helfen wie die Pins beschaltet werden 
müssen ?

Danke,

Dalli

von Dalli (Gast)


Lesenswert?

Hallo nochmal,

..rein von den Schaltsymbolen her - paßt das Bauteil für den Einsatzweck 
?

Unter "Übertrager" find ich leider kaum Erklärungen,
funktioniert das über Induktion ?
( sehen wie Spulen aus die Schaltzeichen )

.. und wenn ja,
kann ich durch Verpolung die Schaltung schrotten ?

Dank im vorraus

Dalli

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Dein Übertrager ist nicht kompatibel zum FB2022. Wenn dieser richtig 
beschaltet wird sollte es aber funktionieren. Der Übertrager ist nichts 
anderes als ein mini Trafo. Durch Verpolung habe ich noch keinen 
geschrottet. Der Übertrager dient zur galvanischen Trennung und hat in 
unserem Fall ein ü = 1. Desweiteren enthält der Übertrager noch einen 
kleinen Filter bestehend aus Spule und Kondensator bzw. zweimal, einmal 
für RX, und einmal für TX.

Gruß
Uli

von Dalli (Gast)


Lesenswert?

Hallo Uli,

vielen Dank für die Info,
hab mir (blöderweise) nur einen Enc bestellt gehabt,
da wollte ich auf Nummer sicher gehen.

Hatte mal versucht so einen Elektroschocker nachzubauen,
da ging die Schaltung in Rauch auf weil der Trafo falsch rum saß ;)

Also nochmal,
Vielen Dank !

Dalli

von Gilles R. (roodemol)


Lesenswert?

Hallo,

ich habe ein Problem mit dem 25 MHz Quarz, am Anfang habe ich 33pF 
Kapazitäten benutzt aber der Quarz ist nicht angeschwungen. Dann habe 
ich Beide durch 22pF ersetzt, jetzt beobachte ich ab und mal dass der 
Quarz mit 25MHz schwingt, sonst schwingt er mit 8,333MHz. Das Entfernen 
hat auch nichts gebracht.

Woran kann das liegen?

MFG

von Marco S. (masterof)


Lesenswert?

Hallo Gilles R.,

Du hast ein 3.Oberton Quarz gekauft.
Aber du brauchst ein Grundton-Quarz.

von Gilles R. (roodemol)


Lesenswert?

Es ist tatsächlich ein 3 Oberton Quarz, leider hat der Händler um die 
Ecke nur den einen 25MHz Quarz. Weiß jemand ob es sich bei dem 25 MHz 
Quarz (25.00M HC49-S) den TME im Programm hat um den Grundton handelt?

von Christian K. (hasec)


Lesenswert?

Hallo,

ich möchte das Board als Ethernet Brücke zwischen einem PC und einem
Embedded Rechner mit Serieller Verbindung nutzen.
Benutze dafür die Windows Software HW Virtual Serial Port, die
im Internet frei verfügbar ist.
(habe auch schon com0com, com2tcp eingesetzt)
Wenn ich in USART.h die Konstante BUFFER_SIZE von 50 auf
z.B. 1000 ändere, geht die Richtung vom Embedded Rechner zum PC
über das Hyperterminal einwandfrei, vielleicht ein wenig verzögert,
das ist aber soweit ok; es kommen alle Zeichen an.
Wenn ich aber Eingaben am PC im Hyperterminal mache, werden
einige Zeichen bei der Eingabe "verschluckt". Ich glaube weiter
oben habe ich über ein ähnliches Problem gelesen.
Das passiert gerade dann, wenn man zeichen sehr schnell hintereinander
eingibt.

Jemand eine Idee ?? was könnte ich im Quellcode noch verändern ?

Danke im Voraus.

von J. S. (munk)


Lesenswert?

Hallo Ulrich,

ich beziehe mich auf den Fehler in stack.c, den Holger am 21.11.2007
gemeldet hat
1
  //Packeteintrag im TCP Stack finden!
2
  index = tcp_entry_search (ip->IP_Srcaddr,tcp->TCP_SrcPort);
3
4
  if (index >= MAX_TCP_ENTRY) //Eintrag gefunden wenn ungleich
5
  {
6
          // Auweia. Hier wird index für tcp_entry[index] benutzt
7
          // obwohl der Wert so groß ist das er ausserhalb des
8
          // Arrays struct tcp_table tcp_entry[MAX_TCP_ENTRY];
9
          // liegt. Ab hier ist index mindestens MAX_TCP_ENTRY.
10
          // Um index hier benutzen zu können müsste man so deklarieren:
11
          // struct tcp_table tcp_entry[MAX_TCP_ENTRY+1];
12
13
    DEBUG("TCP Eintrag nicht gefunden\r\n");
14
    tcp_entry_add (eth_buffer);
15
    if(tcp->TCP_HdrFlags & FIN_FLAG || tcp->TCP_HdrFlags & RST_FLAG)
16
    {
17
      result32 = LBBL_ENDIAN_LONG(tcp_entry[index].seq_counter) + 1;
18
      tcp_entry[index].seq_counter = LBBL_ENDIAN_LONG(result32);
19
20
      if (tcp_entry[index].status & FIN_FLAG)
21
      {
22
        tcp_entry[index].status = ACK_FLAG;
23
        create_new_tcp_packet(0,index);
24
      }
25
      tcp_index_del(index);
26
      DEBUG("TCP-Stack Eintrag gelöscht! STACK:%i\r\n",index);
27
      return;
28
    }
29
    return;
30
  }

Die Korrektur mit dem +1 - Pflaster in der Array-Definition ist nicht 
ganz wasserdicht.

Falls das tcp_entry-Array nicht vollständig belegt ist, würde 
tcp_entry_add() einen Feldindex != index verwenden.
Eigentlich sollte dann nach tcp_entry_add() ein erneuter Aufruf von 
tcp_entry_search() erfolgen, der den echten Index zurückliefert.

Falls das tcp_entry-Array voll ist, dann tut tcp_entry_add() nichts, 
d.h.
die Felder in tcp_entry[index] sind nicht mit den Daten aus eth_buffer 
befüllt, da tcp_entry_add() die +1 Sonderbehandlung nicht kennt.


Gruß
Jürgen

von butrus (Gast)


Lesenswert?

RTS/CTS (d.h. hardware Flowcontroll) benutzen?

von Ich glaub mein Ponny pfeift (Gast)


Lesenswert?

Hallo,

ich habe mich heute nach langer Zeit mal wieder an den Webserver gesetzt 
und habe festgestellt das er funktioniert :-)
Also zumindest kann ich über Ponyprog auslesen und flashen.

Nur mit WinAVR hapert es, das will mit meinem Billigstprogrammieradapter 
nicht zusammen arbeiten.
Kann ich jetzt einfach das .hex-File hernehmen und mit Ponyprog auf den 
µC flashen? Wars das schon? Oder muss ich noch eine Datei rüberflashen 
(ich denke da an den Inhalt im eeprom). Bei meinen vorherigen Projekten 
habe ich immer nur die .hex-Datei flashen müssen und bin daher etwas 
überfordert mit den ganzen Dateien die mir WinAVR ausspuckt ;)

Wäre schön wenn mir jemand einen Tipp geben kann was ich alles flashen 
soll.

Gruß

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

programmieren des Flash und der Fusebits reicht!

Gruß
Uli

von Ronny (Gast)


Lesenswert?

Ich bin Neuling und habe mit Interesse dieses Forum verfolgt.

Ulrich wie kann ich deine Source-Files im AVR-Studio benutzen ?

MfG

von Ich glaub mein Ponny pfeift (Gast)


Lesenswert?

So, auf Dauer nur 3 LEDs schalten ist langweilig :D
Ich habe mich mal dran gemacht und wollte ein paar Ausgänge mehr 
schalten bzw abfragen, aber ich stehe auf dem Schlauch :( Die Ausgänge 
werden wohl irgendwie in der httpd.c geschaltet aber die genaue 
Vorgehensweise vom Code verstehe ich nicht.

Was muss ich alles ändern um mehrere Ausgänge zu schalten und 
abzufragen? Das Teil hat ja 20+ GPIOs. UART, Kamera, I2C brauch ich 
alles nicht das könnte ich alles als Ausgänge schalten. Wo muss ich 
ansetzen und was muss ich ändern? Vielleicht kann mir da jemand 
behilflich sein.

Gruß

von uli (Gast)


Lesenswert?

Hallo,

schau dir mal Zeile 202 in httpd.c an!

Gruß
Uli

von Ronny (Gast)


Lesenswert?

Das mit dem AVR-Studio hat sich erledigt - klappt jetzt.

Ulrich - wie kann ich denn die ENC-LED's vertauschen.

Link nicht gelb sondern grün ???

MfG Ronny

von Ronny (Gast)


Lesenswert?

Hat sich auch erledigt.

Wenn es jemanden interessiert:

-in enc28j60 Line 150 Wert 0x347A in 0x374A ändern.


MfG

von Ich glaub mein Ponny pfeift (Gast)


Lesenswert?

So, hallo noch einmal!

Ich kann es drehen und wenden wie ich will, ich kann keine Eingänge an 
Port C abrufen :(
Die 6 freien Pins an PortC (PC2-PC7) ändern bei mir einfach nicht das 
Signal, da wird nur "inaktiv" angezeigt.
PC6 und PC7 toggeln wild hin und her ohne das ich etwas anschließe. 
Hängt da etwas dran? Im Schaltplan ist zumindest nichts was an PC6 und 
PC7 hängt.

in config.h habe ich folgendes eingestellt:
#define OUTC     0x00

bei webpage.h das:
"<p><img src=\"%PINC2\" width=\"17\" height=\"17\"> Port C Pin 
2</p>\r\n"
"<p><img src=\"%PINC3\" width=\"17\" height=\"17\"> Port C Pin 
3</p>\r\n"
"<p><img src=\"%PINC4\" width=\"17\" height=\"17\"> Port C Pin 
4</p>\r\n"
"<p><img src=\"%PINC5\" width=\"17\" height=\"17\"> Port C Pin 
5</p>\r\n"
"<p><img src=\"%PINC6\" width=\"17\" height=\"17\"> Port C Pin 
6</p>\r\n"
"<p><img src=\"%PINC7\" width=\"17\" height=\"17\"> Port C Pin 
7</p>\r\n"

Ich probiere jetzt schon seit 2 Tagen rum, weiß aber nicht mehr weiter. 
Was mach ich falsch? Was muss ich ändern?
Villeicht kann mir jemand helfen bevor ich das Teil an die Wand klatsche 
;)

von uli (Gast)


Lesenswert?

Hallo,

das hört sich doch schon gut an ;-)

Port 6 und 7 haben ohne Beschaltung einen nicht definierten Zustand. Bei 
den anderen Ports nehme ich mal an das der Jatag Port deaktiviert wurde.

Gruß
Uli

von uli (Gast)


Lesenswert?

!!nicht deaktiviert wurde!!

Also FuseBit für JTAG deaktivieren.

von Ich glaub mein Ponny pfeift (Gast)


Lesenswert?

na sowas, da soll man mal drauf kommen :D

Aber es funktioniert jetzt! Alles!
Ich brauche nur noch eine Applikation für die ich den Webserver nützlich 
einsetzen kann...

Danke für die Hilfe uli

Gruß

von wolle (Gast)


Lesenswert?

Hallo,

ich versuche bis jetzt vergeblich, die Cam an Ulis Webserver mit Servo
zu steuern. Wenn ich in servo.c einen anderen Wert für servo_pos 
eintrage,
fährt der Servo auch in die neue Position. Wie geht das nun über eine 
Variable in webpage.h und httpd.c ? Muss doch auch andere interessieren,
die Cam "beweglich" zu machen.

Die modifizierten webserver von Wil funktionieren bei mir nicht.

von Hobbyloet (Gast)


Lesenswert?

Warum funktioniert die Kamera nicht?
Ohne Einbindung der Cam in der config.h geht der Server.

von wolle (Gast)


Lesenswert?

Die Camera funktioniert natürlich. Es geht um die Servo Steuerung, damit 
man
die Cameraposition aus der Ferne steuern kann. Das war meiner Frage doch 
deutlich zu entnehmen.

von Hobbyloet (Gast)


Lesenswert?

Bei mir will der Server mit der Kamera nicht funktionieren.
Ohne die Kamera in der config.h funzt er super!

Hat einer ne Idee ob noch mehr umgestellt werden muss?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

Kamera richtig angeschlossen! Wie sieht es mit der Kabellänge aus? Wurde 
der richtige Quarz verwendet? Nur funktioniert nicht hift mir nicht 
weiter. Cam in der Config.h auf 1 ist die einzige Option.

Gruß
Uli

von Hobbyloet (Gast)


Lesenswert?

Hallo Uli,

Quarz ist ok, angeschlossen ist sie nach deiner Beschreibung.
Der Atmel ist ein 644er und im Makefile richtig eingetragen.

Ohne die Cam zu aktivieren, wird der Webserver erkannt und läuft super.
Kompiliere ich die Cam mit, kein Ping und kein Mucks vom Server.
Auch ohne angeschlossener Cam wird der Server nicht erkannt.

Ich habe mir extra WinAvr-20071221 besorgt, aber auch kein Erfolg 
möglich.

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Das liegt nicht an der Version! Wird die Cam nicht richtig initialisiert 
funktioniert der Webserver nicht mehr! Wie lang ist das Kabel?????

Gruß
Uli

von Hobbyloet (Gast)


Lesenswert?

Hallo,

vielen Dank erst einmal für die schnelle Hilfe!

Das Kabel ist 12cm lang, ungeschirmt.

von wolle (Gast)


Lesenswert?

Hallo Uli,

warum gibt eigentlich niemand eine Antwort auf die Frage
"Wie kann man die SERVO STEUERUNG DER CAM erfolgreich einbinden?"

von Hobbyloet (Gast)


Lesenswert?

Ich kann zwar nicht für Uli Antworten, aber Du.

Wie hast Du die Kamera zum laufen gebracht?
Also Bilder über den Webserver.
Wäre für jede Info dankbar.

von Hobbyloet (Gast)


Lesenswert?

Hallo Uli,

ich habe deine heutige Software und ein ganz kurzes Kabel (5cm) benutzt.

Die linke LED blinkt ab und zu, wie immer, aber das wars auch schon.
Ich komme mit der Kamera nicht weiter!

von Hobbyloet (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Uli,

nach langem Suchen und fluchen, habe ich noch an den Fusebits gefummelt.

So funzt es jetzt bei mir.

Super Soft von dir!

von Hobbyloet (Gast)


Lesenswert?

Eine Frage noch.

Geht ein Quarz mit 22,1184 MHz am Mega644 besser und schneller?
Sind die Bilder besser?

von Ulrich R. (radiguli) Benutzerseite


Lesenswert?

Hallo,

mit einen anderen Quarz wird die Cam nicht schneller die ist schon 
schnell genug. Entweder Linux oder mehr Speicher! Die Qualität kann 
durch ändern der Konfiguration verbessert werden Tag/Nachtmode usw. oder 
warte bis es heller wird. Aber die Bilder werden nicht so gut wie bei 
einer 10MPixel Cam.

Gruß
Uli

von wolle (Gast)


Lesenswert?

Toll, wie eine Frage nach Einbindung der SERVO Steuerung hier 
schlichtweg
übergangen wird.
Scheint also keinen zu interessieren. Na, auch gut.

von Hugga Bugga (Gast)


Lesenswert?

>Toll, wie eine Frage nach Einbindung der SERVO Steuerung hier schlichtweg
>übergangen wird. Scheint also keinen zu interessieren. Na, auch gut.

Tja, hart ist das Leben ....

von M. W. (hobbyloet)


Lesenswert?

wolle wrote:
> Toll, wie eine Frage nach Einbindung der SERVO Steuerung hier
> schlichtweg übergangen wird.
> Scheint also keinen zu interessieren. Na, auch gut.

Interessiert mich auch, aber Du bist ja auch nicht 'Der Hilfeleistende'!

Am Wochenende mache ich mal was mit htm, ob deín Servo funzt, musste 
selber Probieren.

Na, auch gut, oder?

von Philipp K. (philippk) Benutzerseite


Lesenswert?

Hallo

wir haben ein Schulprojekt, bei dem wir eine Wetterstation ins Internet 
einbinden wollen. Wir verwenden das Board von Pollin mit der Software 
von Ulrich Radig. Die Webseite läuft auch schon. Mein Problem ist jetzt 
die Firewall. Das Board ist am Internen Stadt-Schulnetz angeschlossen, 
und da kommt man von Aussen nicht rein. Wir möchten jedoch von anderen 
Webseiten die Wetterdaten abfragen. Wenn wir von aussen nicht 
reinkommen, dann muss unser kleiner Server eben die Daten periodisch zu 
einem externen Server bringen (auf dem laufen mehrere Projektseiten der 
Schule). Ich weiss jetzt nur nicht genau wie ich das machen soll. Mir 
ist dazu nur eine Varianten in den Sinn gekommen.

- Kann ich mit der FTP erweiterung von http://www.ganix.de/ eine Datei 
auf einen anderen Webserver hochladen?

Hat jemand noch ne bessere Idee bzw. eine Antwort auf meine Frage?

mfg Philipp

von Bean (Gast)


Lesenswert?

Hallo

Ich habe den Webserver mit dem 644P nachgebaut. Kann mir jemand sagen 
wie ich die Fusebits setzten muss? Ich programmiere mit PonyProg.
Habe weiter oben ja schon die Fusebits gefunden, aber im PonyProg sieht 
das anders aus. Außerdem ist die funktion da ja glaube ich anders. Wenn 
im Pony ein häckchen ist bedeutet das ja glaube ich nicht gesetzt. Will 
keinen Controller verproggen... darum hier noch einmal dei Frage.
Wäre wirklich klasse wenn mir jemand kurz Antwort geben könnte. Danke!

MFG

Bean

von Rud (Gast)


Lesenswert?

@ Bean (Gast)

AVR für wenig Geld im LAN:
http://www.mikrocontroller.net/attachment/42502/FuseBitsMega644.JPG

mfg

Rud

von Alf (Gast)


Lesenswert?

Hallo,
vieleicht kann mir hier jemand helfen.
Ich habe ein AVR-NET-IO von Pollin. Die mitgelieferte SW läuft ohne 
Probleme.
Wenn ich jetzt die Webserver SW von H. Radig, bei der ich nur den 
DHCP-Server aktivert habe, darauf laufen lasse bekomme ich einen Eintrag 
mit der richtigen MAC-Adresse in meinem Router aber der Webserver bleibt 
jetzt hängen. Der Interrupt vom ENC28J60 bleib anstehen. Nach einigen 
Untersuchungen habe ich festgestellt das das EIR "ETHERNET INTERRUPT 
REQUEST" und das EPKTCNT "ETHERNET PACKET COUNT REGISTER" auf 0 stehen, 
aber der Interrupt vom ENC28J60 steht weiter an. Wiso? Mit PKTIE 
"RECEIVE PACKET PENDING INTERRUPT ENABLE" läst sich der Interrupt 
sperren obwohl er ja eigentlich nicht aktive ist "PKTIF=0 und 
EPKTCNT=0". Mit PKTDEC "PACKET DECREMENT" läst sich der Interrupt 
löschen wobei wie gesagt der EPKTCNT=0 ist. Beim nächsten blinken der 
grünen LED von der Ethernet Buchse bleibt der Interrupt wieder stehen 
bis ich PKTDEC aktiviert habe. Ein Paket wird nicht empfangen. Wie oben 
bereits erwähnt läuft die mitgelieferte SW also sollte der ENC28J60 und 
seine Beschaltung in Ordnung sein. Aber was geht hier nicht?

MFG

von Stefan S. (Firma: niemals) (dorstefan)


Lesenswert?

Hallo liebe AVR Freaks.

Habe das Polinboard laufen. Sobald ich WOL in der config.h aktiviere 
geht gar nichts mehr (webserver nicht mehr erreichbar). Hatte jemand 
schonmal das Problem? Oder hat jemand eine Idee was der Fehler ist?
dorstefan

von Charles H. (scientificum)


Lesenswert?

Hallo,

hat jemand den aktuellen newStack1_2_1 Code auf einem ATmega128 laufen? 
Ich bekomme keine ARP Einträge.. Der selbe Code läuft auf dem ATmega644 
nach ein paar Pings zum "anstarten" doch sehr zuverlässig.

Folgendes habe ich geändert:

SPI Schnittstelle auf Port B angepasst
1
    #define SPI_SCK   1
2
    #define SPI_MISO  3
3
    #define SPI_MOSI  2
4
    #define SPI_SS    0

Sonst noch die config.h angepasst und alle features deaktiviert.

Wenn ich versuche über die Console ein Ping zu starten, kommt folgende 
Ausgabe (Debug aktiv):
1
System Ready
2
Compiliert am Jun  8 2009 um 19:18:18
3
Compiliert mit GCC Version 4.3.2
4
5
NIC init:enc revid 4
6
My MAC: 00:22:f9:01:1c:55
7
8
IP   192.168.1.64
9
MASK 255.255.255.0
10
GW   192.168.1.1
11
ping 192.168.1.1.
12
MY NETWORK!
13
ARP Eintrag nicht gefunden*
14
enc_send: 42 bytes
15
enc_receive: EPKTCNT=1
16
enc_receive: status=0080
17
enc_receive: 60 bytes
18
19
**KEINEN ARP EINTRAG GEFUNDEN**
20
**KEINEN ARP EINTRAG GEFUNDEN**
21
**KEINEN ARP EINTRAG GEFUNDEN**
22
**KEINEN ARP EINTRAG GEFUNDEN**
23
**KEINEN ARP EINTRAG GEFUNDEN**
24
**KEINEN ARP EINTRAG GEFUNDEN**
25
**KEINEN ARP EINTRAG GEFUNDEN**
26
**KEINEN ARP EINTRAG GEFUNDEN**
27
**KEINEN ARP EINTRAG GEFUNDEN**
28
**KEINEN ARP EINTRAG GEFUNDEN**
29
**KEINEN ARP EINTRAG GEFUNDEN**
30
**KEINEN ARP EINTRAG GEFUNDEN**
31
**KEINEN ARP EINTRAG GEFUNDEN**
32
**KEINEN ARP EINTRAG GEFUNDEN**
33
**KEINEN ARP EINTRAG GEFUNDEN**
34
**KEINEN ARP EINTRAG GEFUNDEN**
35
**KEINEN ARP EINTRAG GEFUNDEN**
36
**KEINEN ARP EINTRAG GEFUNDEN**
37
**KEINEN ARP EINTRAG GEFUNDEN**
38
**KEINEN ARP EINTRAG GEFUNDEN**
39
ARP Eintrag nicht gefunden*
40
enc_send: 98 bytes
41
Ready
42
43
enc_receive: EPKTCNT=1
44
enc_receive: status=0000
45
enc_receive: 916 bytes
46
enc_receive: EPKTCNT=1
47
enc_receive: status=0302
48
enc_receive: 1200 bytes
49
enc_receive: EPKTCNT=1
50
enc_receive: status=679b
51
enc_receive: 1200 bytes
52
enc_receive: EPKTCNT=1
53
enc_receive: status=5e5e
54
enc_receive: 1200 bytes
55
enc_receive: EPKTCNT=1
56
enc_receive: status=bcc8
57
enc_receive: 1200 bytes
58
enc_receive: EPKTCNT=1
59
enc_receive: status=454f
60
enc_receive: 1200 bytes
61
enc_receive: EPKTCNT=1
62
enc_receive: status=0250
63
enc_receive: 1200 bytes

Hat jemand vielleicht eine Idee?

Vielen Dank,
H.

von Charles H. (scientificum)


Lesenswert?

Ok, habe den Fehler gefunden: Lang an zu langen oder schlechten 
Leitungen zwischen dem ATmega und dem ENC...

Wiederholung: Auch wenn Multimeter und Durchgangsprüfer alles als ok 
melden, trotzdem prüfen und die Leitungen immer so kurz und knapp wie 
möglich halten.

Wieder was gelernt.

Danke Uli für die tolle Software!

H.

von völlig egal (Gast)


Lesenswert?

ich will an dieser stelle einen fehler in der aktuellsten version des 
radig-web-servers erwähnen.

starte ich telnet und stelle eine verbindung zum webserver (80) her und 
habe dabei parallel einen webbrowser geöffnet und öffne ebendort die 
seite des webservers (80) so erhält die telnet anwendung daten ohne 
danach gefragt zu haben.

der webserver bezieht seine ip-adresse mittels dhcp. das nur am rande. 
authorisierung ist deaktiviert.

kann jemand den zuvor erwähnten "fehler" bestätigen? hat den schon 
jemand erwähnt und ich überlese es?

von Radiguli (Gast)


Lesenswert?

beim öffnen erhalte ich immer Daten auch dann wenn kein Webbrowser 
geöffnet wurde. Danach wird der Port geschlossen.

von völlig egal (Gast)


Lesenswert?

Aber das ist doch nicht richtig. Wenn ich den Port öffne und keine 
Anfrage starte, also kein GET bla bla bla angebe, dann darf da doch 
nichts zurückgegeben werden. Und dann komme ich auch direkt auf das was 
da zurückgegeben wird. Das ist willkürlich irgendetwas. Jetzt in diesem 
Augenblick probiere ich es aus, da kommt dann eine GIF-Datei beginnend 
mit END und das ist sicherlich auch nicht richtig. Und jetzt bekomme ich 
nacheinander alle Kopfzeilen die es gibt mit allen Content-Typen ...

200 ... html
401 ... html
200 ... jpg
200 ... gif
200 ... css
401

Bei jeder Verbindung spult der nacheinander die Dateien ab die im ATMega 
hinterlegt sind. Verbinde immer und immer wieder neu, da kommen 
willkürliche Daten raus. Nehme ich meinen eigenen privaten WebServer, so 
reagiert der gar nicht wenn ich den nichts Frage. Stattdesen macht der 
irgendwann dicht ohne irgendetwas zu antworten.

von völlig egal (Gast)


Lesenswert?

Und wo ich schon einmal dabei bin: Der DHCP-Client macht auch nicht so 
ganz das was er soll. Mein Router verteilt IP-Adressen mit einer 
Gültigkeitsdauer von 30 Minuten. Nach dieser Zeit holt der AVR-WebServer 
sich jedoch keine neue Adresse beziehungsweise aktualisiert er diese 
nicht. In der Liste der DHCP-Clienten wird der AVR-Webserver dann nicht 
mehr angezeigt. Erreichbar ist er allerdings weiterhin.

Ganz anders reagieren da andere am Router angeschlossene Clienten. Diese 
holen sich nach Ablauf der 30 Minuten erneut eine IP-Adresse 
beziehungsweise aktualisieren diese, so dass diese weiterhin in der 
Liste der DHCP-Clienten angezeigt werden.

von völlig egal (Gast)


Lesenswert?

Und weil es so schön ist, direkt noch einen hinterher.

Diesmal NTP. Auf der WebOberfläche bekomme ich die richtige Zeit 
angezeigt. Verbinde ich mich mit dem UART, also per Teminal, fehlt eine 
Stunde.

von Horst H. (linuxer)


Lesenswert?

Hallo,

mittlerweile sind die Kameras MCA-25 Und Philips 3860 nur noch sehr 
schwer zu bekommen.
Ich habe eine Siemens IQP-500 ersteigert, doch jetzt fängt mein Problem 
an.

Ich habe einen Gerüstcode von Memed gefunden:

Beitrag "Siemens S55 Kamera"

Leider bin ich noch zusehr C-Anfänger um das Code-Gerüst im Webserver
einzufügen.

Es wäre sehr nett wenn sich einer der "C-Profis" mal ansehen könnte ob 
es
überhaupt möglich ist.

Im voraus schon mal vielen Dank.

Horst

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

Hallo

das Kamera-Problem ist mir auch schon aufgefallen.

es sollte sich mal um eine Alternative umgesehen werden...

ich bin eigentlich auch mehr anfänger als profi und will den server noch 
nachbauen

hab mir schon platine geätzt und alle bauteile bis auf den ejc.... 
besorgt.
diese woche gehts los.



bitte kümmert euch um die kamera wäre sehr schade wenn ich keine mehr 
bekommen könnte.

danke martin!!!!!1

von Mair (Gast)


Lesenswert?

Hallo,
Habe das Net-IO-Board von Pollin, mit dem Atmega 644P.
Werde auch bald die SD-Card dazuhängen.

Nun eine kurze Frage:
ist es möglich diese Flash Diagramme irgendwia auf meine Webserverseite 
einzubinden? http://teethgrinder.co.uk/open-flash-chart-2/tutorial.php
Die Flash Dateien würden ja dann auf der SD Card liegen.

lg

von T. F. (n3ssaja)


Lesenswert?

Hallo zusammen,

ich hoffe dieser Thread ist auch da um Probleme mit dem ENC 28J60 
Ethernet Module zu diskutieren. Ich versuche derzeit das Modul zum 
laufen zu bringen. Folgende Schritte konnte ich bereits erfolgreich 
umsetzen:

1) SPI Conncetion Senden / Empfangen
2) ARP Paket empfangen

Das Problem vor dem ich jetzt stehe ist die Antwort (Transmit Arp 
Packet) meines Moduls auf einen Ping vom PC. Das Arp Paket selber ist 
richtig zusammen gesetzt, da ich es mir über UART aufzeichne.

Leider kommt das Arp Paket im Tool Ethereal nicht an. Ich vermute dass 
es an der Registereinstellung für das Senden liegt.

Ist es möglich das jemand von Euch mir alle wichtigen Konfigurationen 
für das Senden von Messages nochmal zusammenfast?

Ich weiß es gibt Tausend von Beispielcodes aber ich habe Sie alle schon 
mehrmals verglichen.

Schonmal Vielen Dank für Eure Hilfe!!!

von Heinz-Josef G. (heinzjosef_g)


Lesenswert?

Hallo Gerd

ich weiss , der Post ist schon alt. Was ist aus deinem Webserver mit 
RFM12 Temperatur Sensoren geworden?

Gruss

Josef

Gerd G. schrieb:
> Thomas Heldt wrote:
>> @Gerd G.
>>
>> Nimm doch einen SHT11 von Sensirion (evtl. als Sample) und du hast auch
>> die Luftfeuchtigkeit, Code dafür habe ich schon eingebunden und läuft
>> stabil.
>
> Ist schon richtig. Das Teil ist nicht schlecht. Leider habe ich noch
> keinen. Die Dallas verwende ich, weil ich vier Meßstellen habe und nur
> die Temparatur brauche.
>
> Aber eine Wetterstation mit Innen- und Außenmeßwerten wird auf meiner
> Liste sein. Funkübertragung natürlich über RFM12, die bieten sich zur
> Zeit an. Die Werte sollen auf einer Website dargestellt werden und alle
> halbe Stunde auf SD-Karte gespeichert werden. Wäre natürlich toll, wenn
> ich die Werte dann als Diagramm anzeigen könnte (Tageswerte).

von Bo (Gast)


Lesenswert?

Hallo zusammen,
ich habe der Webserver in meine Steuerung für Rasen giessen eingebunden. 
Jetzt bin ich dabei, die Steuerung inbetriebzunehmen. In meiner 
Steuerung verwende ich keine MMC Karte, und deshalb habe ich die 
verschidene Webseiten genau so konfiguriert, wie in dem Webserver von 
Ulrich. Das heist Page1 - Index.htm, Page2 - name1.htm, Page3 - 
name3.htm u.s.w. Um Platz zusparen wollte ich die style Definition in 
einem externem style.css file abspeichern, und von dort könnten dan alle 
Seiten den gleichen Style laden. Das File Style.css wurde als Page10 - 
style.css definiert. Wenn ich aber die Seite mit einem Firefox oder IE 
lade, wird sie ohne dem style.css geladen, und volgende Fehlermeldung 
wird angezeigt: stab.css wurde nicht geladen, weil sein MIME-Typ, 
"text/html", nicht "text/css" ist.

 Wie kann ich das File direkt auf dem AVR abspeichern, daß es von dem 
Firefox oder IE akzeptiert wird? Wenn ich das style.css, mit der Seite 
Index.htm von der Festplate auf dem Rechner lade, funktioniert alles 
problemlos. Hier noch das style.css File:
1
char const name_Page10[] PROGMEM = "style.css";
2
PROGMEM char const Page10[] =
3
{  "HTML {background-color:#eeffee;font-family: Comic Sans MS;}\r\n"
4
  "H1 {letter-spacing:0.1em;font-weight:bold;font-style:italic;color:green;text-align:center;}\r\n"
5
  "H2 {font-size:18px;font-weight:normal;text-align:center;}\r\n"
6
  "hr {height:0px;border:1px solid black;}\r\n"
7
  "#framea{position: relative;width:700px;height:600px;top:50px;border:none;background-color:#DDffAA;overflow:hidden;}\r\n"
8
  "#frameb{width:800px;height:700px;border:none;background-color:#88ffAA;overflow:hidden;}\r\n"
9
  "#szlider{width:300px;height:15px;border:1px solid #000;overflow:hidden;}\r\n"
10
  "#szliderbar{width:0%;height:15px;border-right: 1px solid #000000;background: green;}\r\n"
11
  "#szazalek {color: #000000;font-size: 15px;font-style: italic;font-weight: bold;left: 140px;position: relative;top: -18px;}\r\n"
12
  "a {color:#000080;text-decoration:none;line-height:20px;}\r\n"
13
  "a:visited {color:#400060;font-family:Arial}\r\n"
14
  "a:hover {color:#d00000;font-family:Arial;text-decoration: underline;}\r\n"
15
  "a:active {color:#008000;font-family:Arial}\r\n"
16
"%END"};

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.