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

Programm arbeitet nicht Kategorie: Programmierung C (von Jenny - 13.10.2010 11:19)
Ich nutze:
C-Control Pro Mega128, Pro-Bot128
Hallo an alle,

ich habe eine Problem mit der Programmierung. Ich habe meine Programme
geschrieben, kompiliert und auch übertragen, allerdings macht der ROBI
nicht das was er sollte.

Das Programm besteht im Wesentlichen darin, einen Sensor während der Fahrt
auszulesen.

Beide Programme funktionieren, beim verschachteln der beiden Programme
ineinander geht garnichts.

Wieso ist das so?

Programm Sensor auslesen komoplett:

void a_auslesen(void)
{

    PRO_BOT128_INIT();
    I2C_Init(I2C_100kHz);

    word adresse;
    adresse=0x02;

    int              x_long,y_long,z_long;
    unsigned int     x_short,y_short,z_short;
    float            x,y,z;

    I2C_Start();
    I2C_Write(0x70);
    I2C_Write(adresse<<8);
    I2C_Stop();

    I2C_Start();
    I2C_Write(0x71);

    x_short=I2C_Read_ACK();
    x_long=I2C_Read_ACK();

    x_long=(((x_long)*4)+(x_short/64));

    if (x_long > 511)
    {
        x_long= (x_long - 511);
        x_long= (511 - x_long);
        x_long= (x_long*(-1));

        x= (x_long * 0.00390625);
    }
    else
    {
        x= (x_long * 0.00390625);
    }

    y_short=I2C_Read_ACK();
    y_long=I2C_Read_ACK();

    y_long=(((y_long)*4)+(y_short/64));

    if (y_long > 511)
    {
        y_long= (y_long - 511);
        y_long= (511 - y_long);
        y_long= (y_long*(-1));

        y= (y_long * 0.00390625);
    }
    else
    {
        y= (y_long * 0.00390625);
    }

    z_long=I2C_Read_ACK();
    z_short=I2C_Read_NACK();

    z_long=(((z_long)*4)+(z_short/64));

    if (z_long > 511)
    {
        z_long= (z_long - 511);
        z_long= (511 - z_long);
        z_long= (z_long*(-1));

        z= (z_long * 0.00390625);
    }
    else
    {
        z= (z_long * 0.00390625);
    }

    I2C_Stop();


    Msg_WriteFloat(x);
    Msg_WriteChar(13);

    Msg_WriteFloat(y);
    Msg_WriteChar(13);

    Msg_WriteFloat(z);
    Msg_WriteChar(13);


}

Programm zum Fahren:

void robi_fahren(void)
{

    DRIVE_ON();

    GO_TURN(60,0,180);
    GO_TURN(0,180,160);
    GO_TURN(60,0,180);
    GO_TURN(0,180,160);
    GO_TURN(60,0,180);
    GO_TURN(0,180,160);
    GO_TURN(60,0,180);
    GO_TURN(0,180,160);
    GO_TURN(60,0,180);
    GO_TURN(0,180,160);

    DRIVE_OFF();
}

Wenn ich nun zusammenfasse:

void main (void)
{

    PRO_BOT128_INIT();
    I2C_Init(I2C_100kHz);
    DRIVE_INIT();

    robi_fahren();
    a_auslesen();

}
Jetzt macht er nichts. Wo liegt mein Fehler??

�ber eure Hilfe wäre ich sehr dankbar.

GruÃ?
Jenny


    Antwort schreiben


Antworten:

Re: Programm arbeitet nicht (von Jenny - 28.10.2010 12:18)