Hallo nowayback,
ist denn auch UIP_UDP_APPCALL in Deiner uip-conf.h header definiert?
zB.
#define UIP_UDP_APPCALL UdpAppHubCall
Suche mal danach ob der Callback auch definiert ist.
MfG
eisace..
Hallo nowayback,
poste doch mal ein wenig mehr Code. Insbesondere den uip Teil... zB.
uip-conf.h und was Du noch so meinst wäre wichtig.
Vielleicht alles was uip ist.
MfG
eisace
Gerade wollte ich meinen Source hochladen, da sehe ich den NTP-Source
von Tobi. Ein Vergleich zeigte, dass ich einfach die udp-Erweiterung in
der main.c vergessen habe. Habe ich eingefügt und mein bestehender
NTP-Code funktionierte auf Anhieb!
Hello NTP,
Thank you very much for this link! It solved my problem!
Da ich den uIP-Stack auf dem atxmega implementiere und es bisher
anscheinend keinen uIP-Code für xmegas gibt, kann ich gerne mein
komplettes Projekt hier hochladen, sobald es fertig ist.
Ansonsten vielen Dank für eure Hilfe!
Du kannst gerne deine Portierung für den ATxmega veröffentlichen. Wenn
du es mir erlaubst, werde ich auch auf der MicroWebServer-Website darauf
verlinken.
Hallo,
also ich habe gerade ganz aufmerksam den ganzen Beitrag gelesen und find
es toll, was ihr gemeinschaftlich auf die Beine stellt.
Ich verwende gerade das PIC32 Ethernet Starterkit als Hardwareplattform
bei meiner Diplomarbeit. Ich soll eine Testplatine entwickeln, mit der
ich mehrere Steckkarten a 32* 24V-Relais ansteuere. Warum PIC32? Wurde
mir auf den Tisch gelegt. (Jetzt spiele ich mit dem Gedanken auf Atmel
um´zusteigen:-))
Ich habe hier leider nach Tagelangem suchen keine richtigen Beiträge in
Foren gefunden. Heute war ich verzweifelt und habe angefangen nach
Alternativen zu gucken. Und siehe da!! Nach kurzer Recherche finde ich
diesen tollen Beitrag. Vieles von den angesprochenen Dingen könnte ich
in meine Diplomarbeit einfließen lassen.
Die Testplatine von Jörg T., mit der er 8x 24V-Relais anspricht, ist
genau das, was ich entwickeln will. Und auch die fertigen Webinterfaces
sind richtig gut gelungen.
Ich habe auf der Arbeit keine Ansprechpartner für den PIC32,
und komme mit meiner Diplomarbeit deshalb nicht in die Gänge. Frust
statt Erfolg!!
Wenn ich umstelle auf Atmel, könnte ich direkt loslegen und mich mit
euren Projekten beschäftigen!!
Da ich zeitlich sehr eingeschränkt bin, würde das meiner Diplomarbeit zu
gute kommen.
Ich könnte euch dann auch immer wieder mit neue Infos anbieten und würde
meine Arbeit dann auch hier zur Verfügung stellen..
Würdet ihr mir dazu raten??
Lieben Gruß
Ich kenne mich mit PICs nicht aus. Aber PIC32 klingt nach nem 32 Bitter,
wohingegen der hier verwendete AVR nur ein kleiner 8 Bitter ist und von
der Rechenleistung her um einige Potenzen unter den 32 Bittern liegt.
Ansonsten ist der Umfang von dem was du vor hast abhängig davon, wieviel
zu letztendlich selber machen willst.
Willst du einen eigenen TCP/IP Stack schreiben: Nimm dir Zeit! ;-)
Willst du nur den Webserver schreiben, das könnte eventuell hinhauen.
Aber dafür musst du auch erstmal deine Plattform ans laufen bringen.
Ob 32 Bitter oder 8 Bitter hängt schlussendlich von der benötigten
Performance ab. Für ein paar Relais über ein Webinterface (und evtl.
noch UDP) zu schalten reicht ein 8 Bitter mit abgespecktem TCP/IP Stack.
Für komplexere Sachen (Übertragung von großen Dateien z.B.) musst du
beim Speicher und bei der Rechenleistung aufstocken.
@ Simon
Ist in deinem Sourcecode schon die Abfrage auf ein MagicPaket des Wake
on Lan implementiert?
Bzw was muss ich beim ENC und im ATmega ändern das ich einen GPIO
geschaltet bekomme wenn ein MagicPaket kommt?
Thomas schrieb:> Ich verwende gerade das PIC32 Ethernet Starterkit als Hardwareplattform> bei meiner Diplomarbeit. Ich soll eine Testplatine entwickeln, mit der> ich mehrere Steckkarten a 32* 24V-Relais ansteuere. Warum PIC32? Wurde> mir auf den Tisch gelegt. (Jetzt spiele ich mit dem Gedanken auf Atmel> um´zusteigen:-))> Ich habe hier leider nach Tagelangem suchen keine richtigen Beiträge in> Foren gefunden.
Brauchst Du eigentlich auch nicht. Bei Microchip gibts alles, was Du
brauchst. Versuche erstmal, die TCP/IP Demo Application zu übersetzen.
Das sollte so auf Anhieb funktionieren. Wenn Du Den C32 1.12 hast, musst
Du irgendwo eine Funktion auskommentieren, die der Compiler in der neuen
Version schon eingebaut hat (ultoa), aber das siehst Du dann schon.
Wenn das läuft, dann kannst Du weitermachen und das Zeugs an Deine
Bedürfnisse anpassen.
Solltest Du Probleme mit dem On-Board JTAG Debugger haben, lass den sein
und klemm einfach extern ein ICD3 oder ein PicKIT3 an.
Und der richtige Ort für Fragen sind die Microchip-Foren. Da lesen auch
Microchip-Leute, und die antworten auch.
> Würdet ihr mir dazu raten??
Nein.
1. Andere Plattform - andere Probleme.
2. Später im Job kannst Du das auch nicht einfach so machen.
3. Die Informationen, die Du brauchst, sind alle auf der Webseite von
Microchip verfügbar. Als fertiger Ing. wird von Dir erwartet, dass Du
Dir eigenständig Informationen besorgen und konsumieren kannst, auch
wenn alls nur auf Englisch ist. Das hast Du zu können, ansonsten hast Du
Dein Diplom nicht verdient.
fchk
OK, Danke.
Ich habe den Code auf einen STM32 mit ENC28J60 portiert. Es fängt auch
an zu funktionieren. Leider nicht stabil. Ich kann mit dem Browser unter
der IP die Seite einige male abrufen, dann hängt sich das System auf.
Manchmal geht es auch nur 1 mal. Dann kommt keine Antwort mehr. Es geht
im Browser überhaupt nur, wenn ich nach der IP noch :8080 anfüge.
Ebenso beim Ping, klappt mal, mal nicht.
Im Prinzip habe ich nur die SPI Routinen an dem STM32 angepasst und
alles was mit der AVR Progmem-Spezifik zu tun hat rausgenommen.
Wo soll ich anfangen zu suchen?
Hmm, hast du mal Wireshark Dumps von dem Moment, wo die Verbindung nicht
mehr funktioniert?
Möglich ist, dass irgendwo ein Pufferüberlauf im Mikrocontroller
stattfindet.
Als Anhang ein Dump. 192.168.2.29 ist der ENC/STM32 Server.
Bis zu Eintrag 55 geht der funktionierende http Abruf unmittelbar nach
Reset der Schaltung. Dann folgt der 2. Aufruf der IP, wo keine
Verbindung mehr zu Stande kommt. Browser meldet nach einer Weile
Zeitüberschreitung. Ping geht dann auch nicht mehr. (Manchmal geht der
Aufruf auch mehremals hintereinander gut.)
Das µC System hängt sich dabei offensichtlich nicht auf. Andere
Funktionen gehen noch. Es gibt auch keinen Hardfault-Error, was auf
einen Zugriff auf ungenehmigten Speicher hindeuten könnte. Ein
Bufferüberlauf könnte es trotzdem sein.
Hier mein main-loop:
Vorab: Funktioniert es denn ohne die ganzen TFT Routinen?
Und könntest du den Dump als Wireshark Dump anhängen? Statt als .txt.
Das ist übersichtlicher.
Simon K. schrieb:> Funktioniert es denn ohne die ganzen TFT Routinen?
Die TFT Anzeigen hatte ich erst später eingebaut, zur Fehleranalyse.
Ohne diese ist das gleiche Fehlerbild.
Ich komme erst im laufe der nächsten Woche wieder dazu weiterzumachen,
dann mache ich das Dump. Danke erstmal.
Simon K. schrieb:> Und könntest du den Dump als Wireshark Dump anhängen?
Ich bin wieder dran. Wie geht das mit dem Dump? Ich konnte keine
diesbezügliche Funktion finden.
Hallo Jürgen,
ich melde Interesse an, Hex-File und Peripherie/Pin/Quarzparameter bzw
Schaltplan wären zum Probieren vorerst genug.
Source ist ja Dein geistiges Eigentum.
Gruß Matze
Hallo!
Die Schaltung ist mit wenigen Worten beschrieben:
- PIC18F4585 oder ähnlich mit internem Takt
- Das Breakout-Board:
http://www.ebay.de/itm/ENC28J60-Ethernet-LAN-Netzwerk-Modul-Arduino-RJ45-SPI-mit-Befestigungsbohrungen-/121158045138
CS auf A3
SI auf C5 (SDO)
SO auf B4 (SDI)
SCK auf C3 (SCK)
RES auf B4
Den ENC28J60 über einen 3,3 V Regler versorgen.
In den Sourcen bitte usb.c (Hab noch einen UM245 zum loggen dran) und
die printf's löschen, ist noch eine Testversion.
Compiler: C18 und MPLAB 8.91. Auf die Sourcen erhebe ich keine
Ansprüche, ich habe es ja nur portiert.
vg
Jürgen
Ich bin zwar erst bei ca 40% des Threads, aber gibt es irgendwo noch den
original Code des Programms das darauf lief ? oder ist das uIP ? Und was
wurde aus klinkerstein.de ?
Dieser Webserver scheint eine alternative zu dem CrumbX1-NET zu sein,
der mir letztens abgeraucht ist. Und vor allem billiger ...
Leider war da das 'OS' schon drauf...
Hallo zusammen
Weiß jemand was ich in der Software ändern muss, dass bei Empfang des
MagicPaket (WoL) ein Port geschaltet wird...an dem ein Relais hängt?
Will damit eine externes Gerät per WoL starten.
Danke, euch.
Hallo,
ich verwende den Uip stack und tcp funktioniert wunderbar, kann neben
http auch noch über andere ports daten senden und empfangen.
Nun möchte ich, da ich mehrere dieser Webserver habe, von meinem Qt
Programm einen UDP Broadcast aussenden, sodass sich die Webserver beim
Qt Programm melden...
soweit sogut udp apphub ist schließlich vorhanden.
Qt Applikation sendet brav UDP Broadcasts aus (Wireshark)..
Leider kommt am Webserver nichts an..
hier mein verwendeter code am Webserver:
1
#define BROADCASTPORT 65535
2
void uip_UdpAppHubCall(void)
3
{
4
printf_P(PSTR("UDP Call!\n"));
5
switch(uip_udp_conn->lport){
6
case HTONS(BROADCASTPORT): printf_P(PSTR("Broadcast received!\n"));
default: printf_P(PSTR("undefined UDP packet on PORT:"));printf("%d",uip_udp_conn->lport);printf_P(PSTR(" received!\n")); break;
11
}
12
printf_P(PSTR("undefined UDP Call!\n"));
13
}
14
15
void uip_UdpAppHubInit(void)
16
{
17
uip_ipaddr_t addr;
18
19
uip_ipaddr(&addr, 10,0,0,230);
20
c = uip_udp_new(&addr, HTONS(BROADCASTPORT));
21
uip_udp_bind(c, HTONS(BROADCASTPORT));
22
23
printf_P(PSTR("UDP init! Listen on Port:65535\n"));
24
}
in der uipopt.h
sind natürlich alle UDP optionen aktiviert:
1
#define UIP_UDP 1
2
3
4
#define UIP_UDP_CHECKSUMS 1
5
6
7
#define UIP_UDP_CONNS 3
8
9
10
#define UIP_ACTIVE_OPEN 1
11
#define UIP_CONNS 4
12
#define UIP_LISTENPORTS 5
abgesehen vom Empfangen von Broadcast Nachrichten, erhalte ich auch
leider keine NichtBroadcast Pakete...
Sieht jemand meinen Fehler, bin mittlerweile etwas ratlos...
Hallo,
C kann ich nicht. Darum die Frage:
An welche IP Adresse schickts Du den Broadcast (also das Ziel) und
welche Netzwerkmaske wird in dem Netzwerk verwendet?
diese funktion rufe ich periodisch auf.
und ipconfig von meinem Notebook:
ip:10.0.0.xx
sub:255.255.255.0
gw:10.0.0.138
Zu deiner Frage:
ich verwende:
1
QHostAddress::Broadcast
lauf QT doku:
QHostAddress::Broadcast 1 The IPv4 broadcast address. Equivalent to
QHostAddress("255.255.255.255").
Btw:
warum kann ich von meinem Notebook unangemeldet hier posten und von
meinem PC aus nur angemeldet, egal welcher browser?^^
Also 2 verschiedene Netze so wie es scheint.
Ein Broadcast bleibt im Normalfall immer in dem eigenen Netz, wo er
losgeschickt wird.
Bei Deinem Notebook mit der Maske 255.255.255.0 geht der also auf die
10.0.0.255 als Ziel.
Findest Du denn bei Deinem NB mit WireShark/tcpdump die Pakete wieder ?
Quelle IP Dein NB und Ziel IP 10.0.0.255 ?
Quelle MAC Adr. Dein NB und Ziel MAC Adresse ff:ff:ff:ff:ff:ff ?
Auch wenn ich kein C kann ... ich finde oben in Deinem Code Schnipseln
nicht die Ziel IP 10.0.0.255 als Broadcast IP Adresse oder macht die
Software das selbst ?
Moin Moin zusammen.
Kann mir jemand nach gut 7 Jahren nochmal auf die Sprünge helfen?
Wo und wie kann ich im Code ansetzen, um die gesetzten Ports nach
Zeit(x) wieder aus zu schalten?
Gruß
Clyde
Hi,
ich habe jetzt in der Main.c die Schleife für das abschalten eingefügt:
1
if (g_nPrescaler == 0)
2
{
3
//Every 10 seconds
4
uip_arp_timer();
5
g_nPrescaler = 100;
6
7
//Automatisches ausschalten der Ports nach 10 Sekunden
8
uint8_t i;
9
for (i=0; i<8; i++)
10
{
11
GpioSetPort(i, 0);
12
}
13
}
Das abschaltet funktioniert wie gewünscht. Nur wie teile ich das der
Webseite nochmal mit? Wenn diese geöffnet ist, üßberträgt sie bei jedem
"window.setInterval" erneut. Das submit() habe ich versuchsweise mal mit
reset() getauscht aber dann lädt die Seite nicht mehr richtig und muss
ebenfalls erneut aufgerufen werden.
Hat jemand ne Idee?
Hallo Liebes Forum,
Hallo Lieber Simon,
soeben bin ich auf diesen Webserver von Simon gestossen und wollte den
gleich mal ausprobieren auf meinen Atmega8 16 DIP. Leider bekomme ich
ein paar Fehler die mich seit ein paar Stunden aus den Konzept werfen.
Das ist einmal "unknown type name 'prog_void'" und einmal 'TIMSK1'
undeclared(first use in this function). Da ja C Ansicode ist sollte das
doch mit jeder IDE gehen wenn man das richtig kopiert. Ich denke auch
nicht, dass es ein Codefehler ist sondern eher das es an der IDE liegt.
Mit welcher IDE wurde das ursprünglich erstellt? Oder besser, hat jemand
eine lauffähige Solution AtmelStudio 6 SP2 die er mir zu Verfügung
stellen kann. Das wäre das allerbeste. Ich möchte den nur benutzen und
die Webseite evlt. an meine Bedürfnisse anpassen. Daher wäre das eine
sehr elegante Lösung. Danke für eure Mithilfe.
Liebe Grüße
Falkner
So heute endlich konnte ich das Projekt kompilieren. Für alle die das
dann auch mal nachvollziehen wollen hier was ihr braucht:
Ich habe das jetzt auf WinXP SP3 unter VirtualBox auf einem Macbook Pro
am laufen. Und es läuft stabil.
1. Diese IDE downloaden AVR Studio 4.13-528 (73 MB, updated 03/07):
https://www.mikrocontroller.net/articles/Atmel_Studio
2. Nun braucht ihr den WinAVR der ist hier zu finden:
https://sourceforge.net/projects/winavr/files/WinAVR/20100110/
3. Beides installieren
4. Jetzt könnt ihr das Projekt von Simon downloaden und mit der IDE
öffnen:
http://de.klinkerstein.m-faq.de/index.php/MicroWebServer/Downloads
5. Ich benutze den myAVR light Pogrammer und für den gibt es das myAVR
Prog Tool. Aufspielen auf den ATMEGA 168-20DIP und fertig.
Liebe Grüße
Falkner
Hallo Gemeinde,
ich habe zwei Simon K.’s micro Web Server zu verkaufen.
- 2x Simon K.’s micro Web Server (1x Bausatz, 1x aufgebaut)
Preis: je 35€ VB
Hier die Details.
https://www.ebay-kleinanzeigen.de/s-anzeige/konvol...
Gruß, Matze