Motorola 68332 C-kod

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Cue
Inlägg: 12
Blev medlem: 11 april 2005, 01:28:24
Ort: JÄRFÄLLA
Kontakt:

Motorola 68332 C-kod

Inlägg av Cue »

Sitter o skriver ett prgm för en 68k cpu, men nu helt plötsligt får jag massa error som jag inte kan förklara. Nån som ser var felet ligger?

movement_ctrl.c

Kod: Markera allt


#include "movement_ctrl.h"
#include <eyebot.h>
#include <math.h>
/***** motor control functions *****/

#define TRUE  1
#define FALSE 0
#define turnSPEED
#ifndef turnSPEED
#define turnSPEED 25
#endif
#define OK 0
#define ERROR -1
#ifndef PI
#define PI 3.14159265
#endif

/***** global variabels *****/
VWHandle vw;
SpeedType s;
MotorHandle leftMotor;
MotorHandle rightMotor;
PositionType* pos;
COMPASSInit comp;

/***** Init motor & return status *****/
int initMotor(void){
    if(!MOTORInit(leftMotor)){
              return FALSE;
              }
    if(!MOTORInit(rightMotor)){
              return FALSE;
              }
    return TRUE;
}

/***** Release motor controll *****/
void releaseMotor(void){
    MOTORRelease(rightMotor|leftMotor);
}

/***** Move forward *****/
void driveForward(int SPEED){
    MOTORDrive(rightMotor,SPEED);
    MOTORDrive(leftMotor,SPEED);
}

/***** Stop *****/
void driveStop(void){
    MOTORDrive(rightMotor,0);
    MOTORDrive(leftMotor,0);
}

/***** Reverse the robot *****/
void driveReverse(int SPEED){
    MOTORDrive(rightMotor,-1*SPEED);
    MOTORDrive(leftMotor,-1*SPEED);
}

/***** Turn right, change the speed in def *****/
void turnRight(void){
    MOTORDrive(rightMotor,turnSPEED);
    MOTORDrive(leftMotor,-1*turnSPEED);
}     

/***** Turn left, change the speed in def *****/
void turnLeft(void){
    MOTORDrive(rightMotor,-1*turnSPEED);
    MOTORDrive(leftMotor,turnSPEED);
}

/***** Set the current position *****/
void setCord(int x, int y, int phi){
     if(!VWSetPosition(vw, x, y, phi)){
                                LCDPutString("Cordinates FIX");
     }
     else{
          LCDPutString("Cord ERROR");
          }
}

/***** Drive to point (X,Y) *****/
void drive2p(int x, int y, int phi){
     VWGetPosition(vw, &pos);
     int X = pos.x;
     int Y = pos.y;
     //phi = atan((x-X)/(y-Y)); // in rad
     /*if(X < x){
          
          }*/
     delta = ((x-X)^2+(y-Y)^2)^(1/2);
     LCDPutString("Turning...");
     VWDriveTurn(vw, phi, 1.2);
     while (!VWDriveDone(vwHandle));
     OSSleep(30);
     LCDPutString("Driving to..");
     LCDSetPos(x,y);
     if(delta>0.3){
      s.v=2.0;
     }
     else
     {
      s.v=0.5;
     }
     VWDriveStraight(vw, delta, s.v);
     while (!VWDriveDone(vwHandle));
     OSSleep(30);
     setCord(x,y,phi);
}

/***** Start the digital compass and set the startpoints *****/
void startNavig(int x, int y, int phi){
    /* COMPASSInit(VW_DRIVE);
     COMPASSStart(1);
     COMPASSCalibrate(0);*/
     setCord(x,y,phi);
     LCDSetPos(x,y);
}

/***** Init the advanced system with PI-controll *****/
/***** & a digital compass system with a cordinate system *****/
void initSYS(int x, int y, int phi){
     vw = VWInit(VW_DRIVE,1); /* init v-omega interface */
     if(vw == 0)
     {
      LCDPutString("VWInit ERROR!\n");
      OSWait(200);
     }
     s.v = 0.0;  s.w = 0.0;
     startNavig(x, y, phi)
     VWGetPosition(vw,&pos);
     VWStartControl(vw, 7.0, 0.3, 7.0, 0.1);
     VWSetSpeed(vw,s.v,s.w);
     }

/**
* initialize the movement control structure.
* @param mv a pointer to the camera control structure to initalize
*/
void initMovementModule(move_t *move) {
     move->m.init = initMotor;
	 move->m.release = releaseMotor;
 	 move->m.stop = driveStop;
 	 move->m.left = turnLeft;
 	 move->m.right = turnRight;
	 move->Forward = driveForward;
 	 move->Reverse = driveReverse;
 	 move->setCord = setCord;
 	 move->Drive2p = drive2p;
}
movement_ctrl.h

Kod: Markera allt


#ifndef MOVEMENT_CTRL_H
#define MOVEMENT_CTRL_H
#include "module.h"

typedef struct {
  /***** Handles init & release *****/
  /***** stop, turning left & right *****/
  module_t m;
  
  /***** Move the robot forward, set speed 0-30 *****/
  void (*driveForward)(int SPEED);
  
  /***** Move the robot backward, set speed 0-30 ****/
  void (*driveReverse)(int SPEED);
  
  /***** Set the current position *****/
  void (*setCord)(int x, int y)
  
  /***** Drive to point (X,Y) *****/
  void (*drive2p)(int x, int y)
  
} move_t;

/**
* initialize the movement control structure.
* @param mv a pointer to the camera control structure to initalize
*/
void initMovementModule(move_t *mv);

#endif
[/b]
Senast redigerad av Cue 27 maj 2006, 20:19:29, redigerad totalt 2 gånger.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Kankse någon kan, om du åtmistonde kan berätta:

Vad är det för processor?
Vad får du för error?
Användarvisningsbild
Cue
Inlägg: 12
Blev medlem: 11 april 2005, 01:28:24
Ort: JÄRFÄLLA
Kontakt:

Inlägg av Cue »

det är en Motorola 68332 (25MHz 32bit Controller)

och error börjar på rad 7, online compiler på http://roboti.cs.siue.edu/eyebot/68compiler/
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Har aldrig använt kompilatorn i fråga, men får du inget felmeddelande? jag har aldrig varit med om en kompilator som bara säger "error".....

Eller tror du att vi är tankeläsare kanske?
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Just det: rad 7? Är det räknat med include filen eller utan? Är det räknat med är det i en av "movement_ctrl.h", <eyebot.h> eller <math.h>... vilket i sin tur ger att det bör vara i "module.h" som den felaktiga raden finns...
Användarvisningsbild
Cue
Inlägg: 12
Blev medlem: 11 april 2005, 01:28:24
Ort: JÄRFÄLLA
Kontakt:

Inlägg av Cue »

Kod: Markera allt

movement_ctrl.c:25: error: parse error before "int"
movement_ctrl.c: In function `turnRight':
movement_ctrl.c:63: error: parse error before ')' token
movement_ctrl.c:64: error: parse error before ')' token
movement_ctrl.c: In function `turnLeft':
movement_ctrl.c:69: error: parse error before ')' token
movement_ctrl.c:70: error: parse error before ')' token
movement_ctrl.c: In function `drive2p':
movement_ctrl.c:85: warning: passing arg 2 of pointer to function from incompatible pointer type
movement_ctrl.c:86: error: request for member `x' in something not a structure or union
movement_ctrl.c:87: error: request for member `y' in something not a structure or union
movement_ctrl.c:95: error: `vwHandle' undeclared (first use in this function)
movement_ctrl.c:95: error: (Each undeclared identifier is reported only once
movement_ctrl.c:95: error: for each function it appears in.)
movement_ctrl.c: In function `initSYS':
movement_ctrl.c:132: error: void value not ignored as it ought to be
Användarvisningsbild
Cue
Inlägg: 12
Blev medlem: 11 april 2005, 01:28:24
Ort: JÄRFÄLLA
Kontakt:

Inlägg av Cue »

tack ice :razz: fixade den ...men får fortfarande några fel :(

björn, jag är helt ny på C ... ha lite tålamod :oops:
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Jag kan inte hitta funktionen MOTORdrive någonstans, var är den definierad?
Användarvisningsbild
Cue
Inlägg: 12
Blev medlem: 11 april 2005, 01:28:24
Ort: JÄRFÄLLA
Kontakt:

Inlägg av Cue »

den finns i lib eyebot.h

API
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1353
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Inlägg av baron3d »

Du har skrivit:
#define turnSPEED
#ifndef turnSPEED
#define turnSPEED 25
#endif


#define turnSPEED
definierar turnSPEED som ingenting

skriv bara:
#define turnSPEED 25
Skriv svar