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

Re: Thread funktoniert nicht Kategorie: Programmierung C (von PeterS - 14.02.2011 14:15)
Als Antwort auf Thread funktoniert nicht von Jenny - 14.02.2011 13:09

> Hallo an alle,
>
> mein System besteht aus PRO BOt 128, externen EEPROM und einem Sensor.
> Nun der Sinn ist es, den Robi auf einer Kreisbahn zuführen/ fahren zu
> lassen. Sein Drehverhalten soll über die Daten welche mir der Sensor
> liefert gesteuert werden.
> D. h. wird ein von mir festgelegter Grenzwert überschritten, so soll der Robi
> still stehen, andersfalls soll er wie zu beginn des Programms fahren.
> Nun arbeite ich mit Threads und es klappt nicht alles.
> Ich meine der Robi dreht sich, bremst wenn der Grenzwert überschritten ist,
> ABER wenn ich den Robi hochhebe, also in der Hand halte, müsste er mit der
> voreingestellten speed fahren OHNE zu bremsen da der Sensor auch keine andere
> Werte liefert. ABER der ROBI bremst!!! Woran kann es liegen??
>
> Beginn meines Programms:
> < >
>     int             add_l,add_z;             // LSB, Hilfsvariable
>     float           str[4];                  // fuer die Ausgabe als String
>     int             x_long,y_long,z_long;    // Long-Bytes des Sensors
>     unsigned int    x_short,y_short,z_short; // Short-Bytes des Sensors
>     float           x,y,z;                   // Ausgabevariablen
>     float           x_max;                   // G-Grenzwert
>     int             i,h;                     // Wait
>
>     i=0;
>     h=3;           // Haltezeit in ms
>     x_max=1.6;     // G-Grenzwert
>     add_l=0;       // LSB, Startadresse
>     str[1]=x;      // ax
>     str[2]=y;      // ay
>     str[3]=z;      // az
>
>     PRO_BOT128_INIT();
>     I2C_Init(I2C_100kHz);
>     DRIVE_INIT();
>
>     g_werte();                               // g_Werte einstellen
>
>     Thread_Start(2,thread2);                 // Fahren
>
>
> weiter unten kommt dann die Grenzwertabfrage
> <<
> <<           if(x>x_max) {                    // G-Wert ueberschritten
>          
>
>                 Thread_Start(1,thread1);     // Anhalten
>                 while(i >                     i++;
>                 }
>                 Msg_WriteText("halten");
>             }
>
>             else {                           // G-Wert unterschritten
>                 Thread_Start(2,thread2);     // Weiterfahren
>                 Msg_WriteText("fahren");
>             }
>
> Was mache ich falsch?
>
> �ber Eure hilfe wäre ich sehr dankbar.
>
> GruÃ?
> Jenny

Tut mir leid Jenny, aus dem Fragment kann man zuwenig ersehen. Schick doch mal das ganze
Programm an ccpro@gmx.de und sag welche Version der IDE Du benutzt.

Gruss Peter


    Antwort schreiben


Antworten: