Hallo Wil,
ich kriegs leider nicht hin. Wo ich überhaupt nicht durchblicke ist einerseits die Ansteuerung über die Webseite - damit werden ja die Ausgänge PA0-PA2 geschaltet, was auch prima funktioniert, aber in der messung.h ist nur von Schaltern für den PortD die Rede.
Wo die Ansteuerung des PortA realisiert wird ... großes schwarzes Loch
Andererseits wollte ich ja an PD4-PD6 meine Relais, abhängig von den Einstellungen in der "avr.ini" schalten.
Für mich sieht es so aus als wären die Schalter der Webseite über den PortD definiert aber warum sie den PortA schalten???
Werden eigentlich die Konfiguration der Ports von Uli in der config.h noch benötigt bzw abgefragt?
int main(void)
{
//Konfiguration der Ausgänge bzw. Eingänge
//definition erfolgt in der config.h
DDRA = OUTA;
DDRC = OUTC;
DDRD = OUTD;
sind die einzigen Stellen wo die DDRx genutzt werden. (Stammt von Ulis Code)
In Ulis aktuellem Code (und da von dort übernommen auch bei mir) steht in der httpd.c (Funktion 'void httpd_header_check (unsigned char index)'):
und das schaltet explizit den Port A. Hierfür wird eigentlich die Initialisierung des Port A mit 0x07 benötigt (A0 bis A2 als Ausgang) Wenn du also über die Webpage schalten willst musst du diese Stelle mit dem passenden Port für dich belegen.
"<a href=\"javascript:send('A')\"><img src=\"%PORTD4\" border=\"0\"></a> Port D4 (toggle)<br>\r\n"
"<a href=\"javascript:send('B')\"><img src=\"%PORTD5\" border=\"0\"></a> Port D5<br>\r\n"
damit die "Rückmeldung" von den richtigen Ports kommt.
Was über die avr.ini geregelt wird steht in der Funktion "void regelAnlage(SOLL_STATUS *aktSoll)" in messung.c Diese Funktion wird von der Mainloop aus alle 10 Minuten aufgerufen und setzt deine Schalter entsprechend der ini-Datei.
if (machineStatus.regeln) {
// Anlage entsprechend regeln
// alle 10 Minuten wegen Schaltzuständen
SOLL_STATUS aktSoll;
TM_SollzustandGetAktuell(&aktSoll);
regelAnlage(&aktSoll);
machineStatus.regeln = 0;
}
Das Flag "machineStatus.regeln" wird alle 10 Minuten beim Hochzählen der Zeit in timer.c gesetzt.
Viel Erfolg
wil
P.S.
Bei mir war vor einem Jahr auch die Uhr an der Heizung ausgefallen. Daher hab ich angefangen mich mit dem Webmodul zu beschäftigen. Inzwischen hab ich zwar eine neue Uhr günstig ersteigert, aber die dient nur noch für den Notfall. Die Zeitsteuerung der Umwälzpumpe, der Nachtabsenkung und der Pumpe für die Warmwasserzirkulation läuft alles per Webmodul.
Hallo wil,
vielen vielen Dank - so langsam leuchtet Licht am Ende des Tunnels.
Ich hoffe ich bekomme es am Wochenende zum laufen, soll ja wieder Sauwetter geben
Hallo Wil, Hallo Erni !
Nun muss ich als Anfänger in Sachen WebServer mal einen alten Thread ausgraben, ich stehe kurz vor dem Verzweifeln...
Seit Tagen lese ich mich durch alle mgl. Foren und suche nach Infos. Worum geht's ?
Ich möchte einfach die Firmware 1.06 von Wil so anpassen, dass ich über eine Webseite die Relais an PD4,5,6
schalten kann, die Analogen Ports PA0,1,2,3,4,5 auslesen kann und sehe, was an den digitalen Eingängen PC4,5,6,7 passiert.
Habe nun schon etliche Hinweise, was man alles wo ändern muss gelesen und dieser kurze Thread war dabei noch am hilfreichsten. So ein Tutorial im Sinne von Step-by-Step Erklärung "Um einen Ausgang an PortX zu schalten muss inder Datei x, y, z, a, b, c... dies eingetragen/geändert werden,
in der Datei 1,2,3 jenes und in der datei v,u,w dieses..., um einen digitalen Eingang zu lesen macht man dies und wen ein analoger Eingang gelesen werden soll, dann geht das so" scheint es ja leider nicht zu geben, oder ? Jedenfalls habe ich da noch nichts gefunden.
Okay, ich habe auf alle Fälle die hier in diesem Thread genannten Änderungen durchgeführt. Mit dem Ergebnis, dass es (natürlich) nicht funktioniert.
Es erscheinen nun etliche Warnungen bzgl. Prototype etc., aber da scheint es ja so zu sein, dass man die laut Infos hier im Forum einfach ignorieren kann.
Dann zwei Fehlermeldungen:
c:\avr-webserver/httpd.c:266: undefined reference to `S1Toggle'
c:\avr-webserver/httpd.c:271: undefined reference to `S2An'
Das ist genau dort, wo ich die vorgeschlagenen Änderungen durchgeführt habe.
Was muss man denn noch wo alles ändern, damit es funktioniert ?
Wäre es nicht sinnvoll, ein Modul zu schaffen, in dem die Portbelegung einmal festgelegt wird ??? Wieso in etlichen Modulen geändert werden muss, ist mir ein echtes Rätsel, zumal es dazu keine wirkliche Dokumentation zu geben scheint.