>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.
@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?
@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 :(
@ 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 !
>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.
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
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
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...
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
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.
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
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.
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
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
@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.
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 :)
>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.
@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
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
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
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
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.
@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
>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.
@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.
@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.
@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.
@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 ;)
@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
@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.
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
> 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
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
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.
@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.
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"
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
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
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?
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.
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.
Hallo Willivonbienemaya
könntest die mir die eagle libary, die du dort verwendet hast zukommen
lassen?? hast du evntl auch ein eigenes layout gemacht??
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.
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
@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
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.
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?
> 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
@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.
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
@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
@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.
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
@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?
@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
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
:(
@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.
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
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 :(
@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 ?
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
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.
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 ...
Hallo,
Ich hatte bisher noch nie Probleme mit dem MAX232, ich benutze sogar nur
100nF Kondensatoren. Den MAX232 verbaue ich eigentlich immer.
Gruß
Ulrich
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
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
@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.htmhttp://netzmafia.de/skripten/netze/netz8.html
usw. usf.
Gruß Gerd
>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.
@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
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
@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
>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.
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.
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
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
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
@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.
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
@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?
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
@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.
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
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.
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
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
@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.
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.
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
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
@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.
@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
@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 ;)
@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 ;)
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.
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
@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 ;)
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.
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
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?
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
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.
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
@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
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..
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.
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.
@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.
@ 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
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
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!
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
@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.
@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
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?
@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.
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
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
@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.
@ 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
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.
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?
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
@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
@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.
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.
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
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
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
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?
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.
@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 ;)
@ 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.
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.