Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Komplexer Parameter bei Funktionsaufruf Kategorie: Programmierung (von Thomas - 29.08.2006 0:14)
Ich nutze:
C-Control II Unit, eigenes Board, OSOPT V3.0
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)