Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Multithreading Switch Kategorie: Programmierung C (von PeterS - 31.07.2009 15:23)
Als Antwort auf Re: Multithreading Switch von ThomasJ - 31.07.2009 14:55

> > > > Hallo,
> > > >
> > > > im Thread 1 m funktioniert der folgende Programmauschnitt nicht,
> > > > prüfe ich den Programmausschnitt in void Main(void) funktioniert er problemlos.
> > > >
> > > > d.h. Thread 1:
> > > >
> > > > bei case 16: die Variable setzt sich auf Va=0, ein Zugriff eines anderen threads ist durch Thread_Lock
> > > > verhindert.  Fügt man vor der Debugausgabe eine Erneute I²C Abfrage ein, wird Va=16 in der IDE augegeben,
> > > > die darauf folgenden while-Schleife wird aber immer noch ignoriert.
> > > >
> > > > im Main() :
> > > > behält die Variable dagegen Ihren Wert von Va=16, die while-Schleife funktioniert problemlos
> > > >
> > > >
> > > >
> > > >
> > > > Thread_Lock(1);
> > > >
> > > > while(Varlocal==0)
> > > >    
> > > >
> > > >  {
> > > >        I2C_Start();
> > > >        I2C_Write(79);
> > > >        Vb = I2C_Read_NACK();
> > > >        I2C_Stop();
> > > >        Va=~Vb &240;
> > > >
> > > >
> > > >        switch(Va)
> > > >
> > > >         {case 16:  if (Tabprog9[Varlocal]==14)Tabprog9[Varlocal]=15 ;
> > > >                       else  Tabprog9[Varlocal]=14 ;
> > > >                       if ( Tabprog9[Varlocal]==14)Text="0";else Text="1";
> > > >                       LCD_Locate_I2C(2,8);LCD_Write_Text_I2C();
> > > >                      
> > > >                       Msg_WriteInt(Va);  ....................................................Ausgabe in der IDE: 0 !!!!
> > > >              
> > > >                       while (Va==16)
> > > >                       {I2C_Start();
> > > >                       I2C_Write(79);
> > > >                        Vb = I2C_Read_NACK();
> > > >                        I2C_Stop();
> > > >                       Va=~Vb &240;} break;
> > > >               }
> > > >
> > > >
> > > >                       Thread_Delay(15);}
> > > >
> > > >
> > > > Vieleicht ist es ein bug oder jemand kann mir einen Tipp geben was ich falsch mache.
> > >
> > > Was passiert denn im Debugger wenn Du in der Zeile bei " while (Va==16)" einen SingleStep
> > > machst? Geht er dann nicht in die Schleife? Wie ist der Wert von Va zu dem Zeitpunkt?
> > >
> > > Gruss Peter
> > >
> > > >
> > > > Im voraus vielen Dank
> > > >
> > > > MfG
> > > > Thomas
> >
> > Hallo,
> >
> > täusche ich mich oder funktionieren die Haltepunkte im thread  nicht?
> > Die Haltepunkte werden jedenfalls ignoriert.  Die Ausgabe von Va in der IDE ist 0
> >
> > Gruss
> > Thomas
> >
> Hallo ,
> Halltepunkt funktioniert doch aber überspringt die Schleife
>
> Gruss Thomas

Ich kann nur anbieten, das Du mir an ccpro@gmx.de mal ein Testprogramm schickst, welches
den Fehler demonstriert. Dann check ich das. Bitte schmeiss darin unnötigen Ballast raus.
Schick bitte das komplette Projekt mit Projektdatei.

Gruss Peter


    Antwort schreiben


Antworten: