
Code for the mbed NXP LPC1768 To be used on The Robot Studio Slave Boards License : Simplified BSD
Diff: include/eposCmd.h
- Revision:
- 0:18d7499b82f3
- Child:
- 1:b430b4401fc4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/eposCmd.h Wed Feb 27 14:53:45 2013 +0000 @@ -0,0 +1,106 @@ +#ifndef EPOSCMD_H +#define EPOSCMD_H + +//includes +#include "mbed.h" +#include <stdint.h> + +#include "registers.h" + +//Define +#define NUMBER_MAX_EPOS2_PER_SLAVE 15 +#define NUMBER_MSG_PER_PACKET 15 +#define NUMBER_BYTES_PER_MSG 7 +#define NUMBER_EPOS2_BOARDS 1 +#define NB_SAMPLES_MEDIAN 5 +#define NB_MSG_TO_TRACK 20 //at least 4 +#define CMD_BUFFER_SIZE 26 //13*2 -> 2 cmdSet of 13 cmds each +#define PAUSE 10 +#define EPOS2_OK 0 +#define EPOS2_ERROR -1 +#define LOOP_PERIOD_TIME 20000 //20 ms + +enum ActivatedMode +{ + POSITION = 0, + CURRENT = 1, + VELOCITY = 2, + PROFILE_POSITION = 3, + FORCE = 4 +}; + +//global variables +extern CAN cantoepos; +extern Serial pc; +//extern Serial pc; +extern DigitalOut ledchain[]; //used for debugging +extern char data[8]; +//extern unsigned int count[12]; //used for debugging +extern ActivatedMode activMode[NUMBER_EPOS2_BOARDS]; + +//ADC variables +extern AnalogIn an1; +extern AnalogIn an2; +extern AnalogIn an3; +extern AnalogIn an4; +extern AnalogIn an5; +extern AnalogIn an6; + +//sensor variables +extern int32_t encPosition[NUMBER_EPOS2_BOARDS]; +//extern int16_t potiPosArray[NUMBER_EPOS2_BOARDS][5]; +extern int16_t potiPosArray[NUMBER_EPOS2_BOARDS]; +extern int16_t medPotiPosition[NUMBER_EPOS2_BOARDS]; +extern int16_t avgCurrent[NUMBER_EPOS2_BOARDS]; +extern int16_t medForce[NUMBER_EPOS2_BOARDS]; +extern int32_t velocity[NUMBER_EPOS2_BOARDS]; + +extern int8_t boardStatus[NUMBER_EPOS2_BOARDS]; + +//Multiplexer address lines +extern DigitalOut A0; +extern DigitalOut A1; +extern DigitalOut A2; + +//functions +void setMultiplexerChannel(const int8_t); +static void setNMT(const int8_t, uint8_t); +static int8_t setObjectSDO(const int8_t, const int32_t, int32_t); +static int8_t setPDO(const int8_t, uint16_t, uint8_t, uint32_t, uint8_t); + +//EPOS2 boards and Motor settings +//static void setMotorType(const int8_t); +//static void setPolePair(const int8_t); +//static void setMaximalMotorSpeed(const int8_t); +//static void setMaximalProfileVelocity(const int8_t); +//static void setMaxAcceleration(const int8_t); +//static void setThermalTimeConstantWinding(const int8_t); +//static void setMaximalFollowingError(const int8_t); + +static int8_t setModeOfOperation(const int8_t, uint8_t); +extern void setModeOfOperationPDO(const int8_t, uint8_t); + +static void shutdownControlword(const int8_t); +extern void shutdownControlwordIT(const int8_t); +static void switchOnEnableOperationControlword(const int8_t); +extern void switchOnEnableOperationControlwordIT(const int8_t); +extern void faultResetControlword(const int8_t); +//static void reEnableControlword(const int8_t); + +//macro functions +extern int8_t initEposBoard(const int8_t); +extern void setCurrent(const int8_t, const int16_t); +extern void setPosition(const int8_t, const int32_t); +extern void setVelocity(const int8_t, const int32_t); +extern void setForce(const int8_t, const int16_t); + +extern void getPosition(const int8_t); +extern void getCurrent(const int8_t); +extern void getVelocity(const int8_t); +extern int16_t getForce(const int8_t); +extern void getPotiPosition(const int8_t); +extern void getIncEnc1CntIdxPls(const int8_t); //get Incremental Encoder 1 Counter at Index Pulse + +extern void getStatusword(const int8_t); + +#endif //EPOSCMD_H \ No newline at end of file