Hallo alle zusammen.....

habe ein kleines Problem mit dem Programm von meinem Asuro, aber vill könnt ihr mir ja weiter helfen.

So sieht das Programm aus.....


Code:
#include "asuro.h"

int DriveCircle( int angel, unsigned char Dir)
   {   Encoder_Init(0,0);
   
      
      int segments_left;
      int segments_right;
      unsigned char MotorDr_Left = FWD;
      unsigned char MotorDr_Right = RWD;
      int MotorSpdLeft = 120;
      int MotorSpdRight = 120;
      
      
      
      if (angel == 45)
      {
      segments_left = 13;
      segments_right = 13;
      }
      else if (angel == 90)
      {
      segments_left = 27;
      segments_right = 27;
      }
      else if (angel == 180)
      {
      segments_left = 53;
      segments_right = 53;
      }
      else if (angel == 360)
      {
      segments_left = 107;
      segments_right = 107;
      }
      else
      {
      StatusLED(RED);   // Statusleuchtdiode Rot schalten
      }
      
      
      
      Encoder_Set(0,0);
      
      
     
      if(Dir == RIGHT)
      {
         MotorDr_Left = FWD;
         MotorDr_Right = RWD;
      }
      
      
     
      if(Dir == LEFT)
      {
         MotorDr_Left = RWD;
         MotorDr_Right = FWD;
      }
      
      while((encoder[LEFT] < segments_left)||(encoder[RIGHT] < segments_right))
      {
         MotorDir(MotorDr_Left,MotorDr_Right);
         MotorSpeed(MotorSpdLeft,MotorSpdRight);
         
         if(encoder[LEFT] >= segments_left)
         {
            MotorSpdLeft = 160;
         }
         
         if(encoder[RIGHT] >= segments_right)
         {
            MotorSpdRight = 160;
         }
         
         if(encoder[LEFT]&&encoder[RIGHT] >= segments_left)
         {
            MotorSpeed(BREAK, BREAK);
            Msleep(300);
            MotorSpeed(0,0);   // Kollision! Sofort anhalten
         }
      
      
      }
      return 0;
         
   }      
   

int DriveLength( int length, unsigned char MotorDr, int MotorSpd)
   {
      Encoder_Init();
      int diff;
      float cycles;
      int segments_left;
      int segments_right;
      int MotorSpdLeft = MotorSpd;
      int MotorSpdRight = MotorSpd;
      unsigned char schalter;
      
      cycles = length / 12,2;      // Umdrehungen des linken Reifens = zu fahrende Strecke links / Reifen-Umfangs (Umfang = 12,2 cm !!!)
      segments_left = cycles * 40;   // Anzahl der zu fahrenden Segmente = Umdrehungen * Anzahl der Segmente pro Umdrehung (40)
      segments_right = cycles * 40;
      Encoder_Set(0,0);
      
      while((encoder[LEFT] < segments_left)||(encoder[RIGHT] < segments_right))
      {
         MotorDir(MotorDr,MotorDr);
         MotorSpeed(MotorSpdLeft,MotorSpdRight);
         schalter = PollSwitch();
         PrintInt(schalter);
         
         if(( schalter > 0)&&(MotorDr == FWD))
         {
         MotorSpeed(0,0);
         MotorDir(BREAK,BREAK);
         Msleep(300);
         
         return encoder[LEFT];
         }
         
         diff = encoder[LEFT]-encoder[RIGHT];
         
         if ((diff > 0)&&(encoder[LEFT] < segments_left)&&(encoder[RIGHT] < segments_right))
         {
            MotorSpdRight = MotorSpdRight + (MotorSpdRight / 100 * 2.5);
            MotorSpdLeft = MotorSpd;
         }
         else if ((diff < 0)&&(encoder[LEFT] < segments_left)&&(encoder[RIGHT] < segments_right))
         {
            MotorSpdLeft = MotorSpdLeft + (MotorSpdLeft / 100 * 2.5);
            MotorSpdRight = MotorSpd;
         }
         else if ((diff == 0)&&(encoder[LEFT] < segments_left)&&(encoder[RIGHT] < segments_right))
         {
            MotorSpdLeft = MotorSpd;
            MotorSpdRight = MotorSpd;
         }
         
         if(encoder[LEFT] >= segments_left)
         {
            MotorSpdLeft = 0;
         }
         
         if(encoder[RIGHT] >= segments_right)
         {
            MotorSpdRight = 0;
         }
      
      
      }
      MotorSpeed(0,0);
      
      
      
      
   return encoder[LEFT];
   }


      
int main(void)
{
      Init();
   
   StatusLED(GREEN);
   int blink = 0;
   float cycles;
   int way = 0;
   int segments;
   unsigned char endschalt;
   
   
   while(way < 1000)
   {   
   
      segments = DriveLength(100, FWD, 120);
      cycles = segments / 40;
      way = way + (cycles * 12.2);
   
   
      endschalt = PollSwitch();
      PrintInt(endschalt);
      
      if (( endschalt == 2)||( endschalt == 16)||( endschalt == 18 ))
         {
         DriveLength(10, RWD, 120);
         DriveCircle(90, RIGHT);
         }
         else if ( endschalt == 32)
         {
         DriveCircle(45, RIGHT);
         }
         else if ( endschalt == 1)
         {
         DriveCircle(45, LEFT);
         }
   
   
      
   }   
      
   
   
            
   while(1)
   {
      if (blink == 0)
      {
         blink = 1;
         StatusLED(OFF);
         Msleep(300);
      }
      else if(blink == 1)
      {
         blink = 0;
         StatusLED(GREEN);
         Msleep(300);
      }
   }
         
   
          
    return 0;
}

Folgende Fehler treten auf:


Code:
C:\WinAVR\Asuro\FirstTry>make all 
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function `DriveCircle':
test.c:4: warning: implicit declaration of function `Encoder_Init'
test.c:43: warning: implicit declaration of function `Encoder_Set'
test.c:61: error: `encoder' undeclared (first use in this function)
test.c:61: error: (Each undeclared identifier is reported only once
test.c:61: error: for each function it appears in.)
test.c:61: error: `LEFT' undeclared (first use in this function)
test.c:61: error: `RIGHT' undeclared (first use in this function)
test.c:79: warning: implicit declaration of function `Msleep'
test.c: In function `DriveLength':
test.c:106: error: `encoder' undeclared (first use in this function)
test.c:106: error: `LEFT' undeclared (first use in this function)
test.c:106: error: `RIGHT' undeclared (first use in this function)
test.c:111: warning: implicit declaration of function `PrintInt'
test.c: In function `main':
test.c:188: error: `RIGHT' undeclared (first use in this function)
test.c:196: error: `LEFT' undeclared (first use in this function)
make: *** [test.o] Error 1

> Process Exit Code: 2

Wäre echt cool wenn ihr mir bei meinem Problem helfen könntet....

Gruß
2stoned