Komplexer Parameter bei Funktionsaufruf Kategorie: Programmierung (von Thomas - 29.08.2006 0:14) | ||
| ||
Hallo zusammen, seid einiger Zeit stehe ich bei meiner Haussteuerung vor einem Problem. So läuft die CC2 teilweise tagelang ohne Probleme und schaltet brav Heizungsaktoren, Licht, Steckdosen etc. ... Und dann plötzlich funktioniert nix mehr und ein Reset ist angesagt. Allerdings läuft das Programm manchmal auch nur einige Minuten. Was passiert? Durch Logging auf der seriellen Schnittstelle habe ich herausgefunden, da� an folgender Stelle ein Abbruch stattfindet. Diese Funktion stellt fest, ob ein Schalter betätigt wurde, dabei werden aber einige Ports ausmaskiert. function GetInputForSchalter(byte bIndex) returns byte { byte bInput1, bInput2; com.Log("ea.GetInputForSchalter",0); bInput1 = (not pcf.in (data.arSwitchModule[bIndex].bInputAdr)) and (not data.arSwitchModule[bIndex].bValueButtonAndMask); bInput2 = bInput1 xor data.arSwitchModule[bIndex].bInputValue; data.arSwitchModule[bIndex].bInputValue = bInput1; if (bInput2!=0) com.Log("ea.GetInputForSchalter=",bInput2); return bInput2; } bei dem Aufruf pcf.in ist es dann vorbei. Der Thread wird gestoppt und die anderen Threads arbeiten weiter allerdings extrem langsamer. Meine Frage ist nun: Macht es Sinn den Aufruf pcf.in (data.arSwitchModule[bIndex].bInputAdr) besser so zu formulieren: bHilf = data.arSwitchModule[bIndex].bInputAdr; pcf.in(bHilf); Denn ein ähnliches Problem trat beim Setzen des Ports mit pcf.set auf und hier hat dies geholfen. Einige Hinweise: data.arSwitchModule[bIndex].bInputAdr ist als byte deklariert und wird nur von diesem Thread genutzt, also keine konkurierende Zugriffe. Manchmal kann ich den Fehler reproduzieren in dem ich den Schalter ganz schnell ein und ausschalte, so da� die Funktion schnell hintereinander aufgerufen wird (bis mir die Birne durchbrennt ;-) Hat jemand eine Idee? Kann es sein, da� ich den Stack überfordere? Gruss Thomas | ||
Antwort schreiben Antworten: Re: Komplexer Parameter bei Funktionsaufruf (von André H. - 2.09.2006 15:26) Re: Komplexer Parameter bei Funktionsaufruf (von Thomas - 2.09.2006 21:06) Re: Komplexer Parameter bei Funktionsaufruf (von Guido - 11.09.2006 17:24) |