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

Thread funktoniert nicht Kategorie: Programmierung C (von Jenny - 14.02.2011 13:09)
Ich nutze:
C-Control Pro Mega128, Pro-Bot128
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


    Antwort schreiben


Antworten:

Re: Thread funktoniert nicht (von PeterS - 14.02.2011 14:15)