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

Re: Programm arbeitet nicht Kategorie: Programmierung C (von Jenny - 28.10.2010 12:18)
Als Antwort auf Programm arbeitet nicht 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




>>> Hallo noch mal an alle,
>>>
>>> kann es sein, dass ich mein Problem mithilfe von Multithreads bearbeiten
>>> kann?
>>> GruÃ?
>>> Jenny


    Antwort schreiben


Antworten: