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

noch mal threads Kategorie: Programmierung (von ChristianS - 19.11.2010 9:42)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo,
ich komme mit meinem zeitkritischen thread nicht weiter. Ich habe nun die Prios von allen
threads auf "8" gesetzt und den zeitkrischen thread (ir) auf prio 100, main läuft ganz normal.
Das Problem ist weiterhin, dass der thread "ir" es teilweise nicht mitbekommt, wenn man die
Lichtschranke schnell durchschreitet.
Vielleicht ist die cc2 auch überfordert, was ich mir aber nicht vorstellen kann, da das
Gesamtprogramm gerade mal 23k ist. Ich schätze es liegt an der Art der Programmierung.
Dehalb hier meine Routine, vielleich kann jemand etwas erkennen oder kann einen Tipp geben:

thread "ir" fragt eine Lichtschranke am  Port P1, Pin 47 der CC2-Station ab. Das Flag "detect"
wird dann in einer Funktion (light) genutzt um eine Beleuchtung einzuschalten, die über
einen Timer nachgetriggert wird. Ich denke aber, das Problem ist der IR thread.

/******************************************************************************/
/*    Auswertung der Lichtschranke                                            */
/******************************************************************************/
{
 long t;
 t=timeout;                                //von int nach long konvertieren
 t=t*1000;
 run 100;
 if check.night()                             //IR nur während der Nacht
  {
   if ports.get(ir) and !busy              //warten auf seigende Flanke
    {
     busy=1;                               //Ir() hat High-Pegel
     time=system.timer();                     //Zeitpunkt der steigenden Flanke
     //hwcom.print(" IR steigende Flankern");
    }
   if !ports.get(ir) and busy              //warten auf fallende Flanke
    {
    busy=0;
    detect=1;                          
     //hwcom.print(" fallende Flankern");  
     }
  if busy
   if system.timer()-time > t                //...allerdings bei Timeout...
    error=1;                            //..FehlerCode zurückgeben.
  }
 else
 {
   busy=0;
   error=0;                               //IR am Tag inaktiv
   global.detect=0;
 }
}
/******************************************************************************/
....
function light ()
{
 if system.year()> global.newYear
  {
   hwcom.print("Prosit Neujahr!rn");
   global.newYear=system.year();
   global.detect=0;
   ir.detect=0;
   time.Reset(1);
   schalter.Reset(0);
   global.set=1;                           //Licht "an" setzten
   global.t2=global.timer2;
  }
 if global.t2<=0                           //nur wenn Timer 2 inaktiv
  {
   if ((check.night() and(reed_busy or ir.busy)) or schalter.read(0,1))
    {
    time.Reset(1);                          //Timer zurücksetzten
    global.set=1;                           //Licht "an" setzten
    global.detect=0;
    ir.detect=0;                         //Auslösung zurücksetzen
    }
  if global.detect or ir.detect                          //fallende Flanke an IR oder Reed
   if check.night()
     global.t1=global.timer1;               //Timer 1 nur bei Nacht starten
   global.detect=0;                         //Flag zurücksetzetn
   ir.detect=0;
  }
  if global.tflag1 or global.tflag2 or(!schalter.read(0,1) and schalter.flag[0])
   {
    time.Reset(1);
    time.Reset(2);
    global.set=0;                             //Licht "aus" setzen
    schalter.Reset(0);
   }



    Antwort schreiben


Antworten:

Re: noch mal threads (von ChristianS - 25.11.2010 17:18)
    Re: noch mal threads (von nitraM - 28.11.2010 16:10)
        Re: noch mal threads (von ChristianS - 1.12.2010 19:33)
Re: noch mal threads (von nitraM - 19.11.2010 13:16)
    Re: noch mal threads (von nitraM - 19.11.2010 13:26)
        Re: noch mal threads (von ChristianS - 19.11.2010 13:53)
            Re: noch mal threads (von nitraM - 19.11.2010 13:59)
                Re: noch mal threads (von ChristianS - 19.11.2010 14:11)
                Re: noch mal threads (von nitraM - 19.11.2010 14:08)
                    Re: noch mal threads (von ChristianS - 19.11.2010 14:17)
                       Re: noch mal threads (von Rainer - 13.01.2013 20:42)