Webserver ATmega32/644DIP ENC28J60

Gast #754652
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. ;)
Gast #754703
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?
Gast #754733
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.
Gast #754822
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.
Gast #754929
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
Gast #755254
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
Gast #755427
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
Angehängte Dateien:
#755524
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
Gast #755590
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
Gast #755773
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?
#755866
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
#756765
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
OP Persönliche Seite #756825
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
#756864
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...
Gast #757171
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
#757542
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.
#757869
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.
Gast #759119
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
Gast #759297
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 ?
Gast #759302
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 :(
#761298
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 ...
Gast #762077
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.
#762599
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. :)
Gast #763576
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?
#769552
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
Gast #769562
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
Gast #770362
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 ?
Gast #770390
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
Gast #770416
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
Gast #770863
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
Gast #770958
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
Gast #770961
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
Gast #771633
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 !
Gast #771806
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
Gast #773399
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
#785098
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
Gast #785113
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.
Gast #786411
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.
#787355
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
Angehängte Dateien:
#787498
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
#787703
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
#787886
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
#790907
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
Angehängte Dateien:
Gast #791580
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?
Gast #791613
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
#793124
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
Angehängte Dateien:
Gast #807112
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
Gast #807248
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
Gast #808011
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
(Firma: Friatec AG) #808136
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
Gast #809072
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
Gast #809442
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
#819733
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
Gast #820058
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
Gast #825971
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
#847764
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.
#847884
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
Gast #851600
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?
Gast #855877
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
Angehängte Dateien:
Gast #865064
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
OP Persönliche Seite #865084
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
Gast #866422
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
#889300
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
#912657
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.
#956025
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
Gast #989714
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ß
Gast #992865
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ß
Gast #997113
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 
;)
Gast #997364
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
Gast #999279
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ß
Gast #1063730
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.
Gast #1064811
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.
#1067451
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?
Persönliche Seite #1115037
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
Gast #1183745
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
Gast #1197155
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
#1291672
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.
#1291990
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.
Gast #1330602
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?
Gast #1330886
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.
Gast #1331339
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.
Gast #1331925
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.
#1501099
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
(Firma: google) #1503984
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
#2226395
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!!!
#2843766
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).
Gast #3060934
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"};

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren