DP

Dependencies:   FastAnalogIn mbed-rtos mbed

Fork of dipl_prace_v10 by Roman Krejci

Committer:
romankrej
Date:
Tue Apr 28 18:48:50 2015 +0000
Revision:
1:28d74f044818
Parent:
0:f3b355df6f26
DP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
romankrej 0:f3b355df6f26 1 /*
romankrej 0:f3b355df6f26 2 * File: can.h
romankrej 0:f3b355df6f26 3 * Description: jojo
romankrej 0:f3b355df6f26 4 * Version: 1.1
romankrej 0:f3b355df6f26 5 * Created: 1. 2. 2015
romankrej 0:f3b355df6f26 6 * Author: Roman Krejci
romankrej 0:f3b355df6f26 7 */
romankrej 0:f3b355df6f26 8 #ifndef CANPROTOCOL_H
romankrej 0:f3b355df6f26 9 #define CANPROTOCOL_H
romankrej 0:f3b355df6f26 10
romankrej 0:f3b355df6f26 11 #define ID_SERVO 0x01
romankrej 0:f3b355df6f26 12 #define SDO_REQUEST_ID 0x600+ID_SERVO
romankrej 0:f3b355df6f26 13 #define SDO_RESPONSE_ID 0x580+ID_SERVO
romankrej 0:f3b355df6f26 14 #define PDO_TRANSMIT_ID 0x180+ID_SERVO
romankrej 0:f3b355df6f26 15 #define PDO_RECEIVE_ID 0x200+ID_SERVO
romankrej 0:f3b355df6f26 16 #define SYNC_ID 0x80
romankrej 0:f3b355df6f26 17
romankrej 0:f3b355df6f26 18 #define SERVO_MODE 0x1EF
romankrej 0:f3b355df6f26 19 #define MASTER_CMD 0x1ED
romankrej 0:f3b355df6f26 20
romankrej 0:f3b355df6f26 21
romankrej 0:f3b355df6f26 22 #define CMD_SDO_READ_REQ 0x40
romankrej 0:f3b355df6f26 23 #define CMD_SDO_READ_RES_2 0x4B
romankrej 0:f3b355df6f26 24 #define CMD_SDO_READ_RES_4 0x43
romankrej 0:f3b355df6f26 25
romankrej 0:f3b355df6f26 26 #define CMD_SDO_WRITE_REQ_24 0x22
romankrej 0:f3b355df6f26 27 #define CMD_SDO_WRITE_REQ_2 0x2B
romankrej 0:f3b355df6f26 28 #define CMD_SDO_WRITE_REQ_4 0x23
romankrej 0:f3b355df6f26 29 #define CMD_SDO_WRITE_RES 0x60
romankrej 0:f3b355df6f26 30 #define CMD_SDO_WRITE_ERR 0x80
romankrej 0:f3b355df6f26 31
romankrej 0:f3b355df6f26 32
romankrej 0:f3b355df6f26 33 #define REQ_DISABLE_SERVO 0x01
romankrej 0:f3b355df6f26 34 #define REQ_ENABLE_SERVO 0x02
romankrej 0:f3b355df6f26 35 #define REQ_NULL_RES 0x07
romankrej 0:f3b355df6f26 36
romankrej 0:f3b355df6f26 37
romankrej 0:f3b355df6f26 38 #define SPEED_MODE 0x200002
romankrej 0:f3b355df6f26 39 #define MOMENT_MODE 0x200001
romankrej 0:f3b355df6f26 40
romankrej 0:f3b355df6f26 41 #define CAN_FREQ 500000
romankrej 0:f3b355df6f26 42
romankrej 0:f3b355df6f26 43 #include "mbed.h"
romankrej 0:f3b355df6f26 44 #include "rtos.h"
romankrej 0:f3b355df6f26 45
romankrej 0:f3b355df6f26 46 class cCan
romankrej 0:f3b355df6f26 47 {
romankrej 0:f3b355df6f26 48 public:
romankrej 0:f3b355df6f26 49 cCan(PinName CANpin1,PinName CANpin2);
romankrej 0:f3b355df6f26 50 void CAN_frame_received(void);
romankrej 0:f3b355df6f26 51 void sync(void);
romankrej 0:f3b355df6f26 52
romankrej 0:f3b355df6f26 53 /* For enable servo */
romankrej 0:f3b355df6f26 54 void enableServo(void);
romankrej 0:f3b355df6f26 55
romankrej 0:f3b355df6f26 56 /* For disable servo */
romankrej 0:f3b355df6f26 57 void disableServo(void);
romankrej 0:f3b355df6f26 58
romankrej 0:f3b355df6f26 59 /* For null resolver */
romankrej 0:f3b355df6f26 60 void nullResolver(void);
romankrej 0:f3b355df6f26 61
romankrej 0:f3b355df6f26 62 /* For set mode of servo */
romankrej 0:f3b355df6f26 63 void setMode(int req_mode);
romankrej 0:f3b355df6f26 64
romankrej 0:f3b355df6f26 65 /* This method send SDO request of mode of servo */
romankrej 0:f3b355df6f26 66 void get_mode(void);
romankrej 0:f3b355df6f26 67
romankrej 0:f3b355df6f26 68 /* Get angular position of wheel */
romankrej 0:f3b355df6f26 69 float getPhi(void);
romankrej 0:f3b355df6f26 70
romankrej 0:f3b355df6f26 71 /* Get angular velocity of wheel */
romankrej 0:f3b355df6f26 72 float getOmega(void);
romankrej 0:f3b355df6f26 73
romankrej 0:f3b355df6f26 74
romankrej 0:f3b355df6f26 75 /* For setting required current */
romankrej 0:f3b355df6f26 76 void setCurrent(float cur);
romankrej 0:f3b355df6f26 77
romankrej 0:f3b355df6f26 78 /* This method sends SDO request of actuall speed */
romankrej 0:f3b355df6f26 79 void actual_speed(void);
romankrej 0:f3b355df6f26 80
romankrej 0:f3b355df6f26 81 int mode;
romankrej 0:f3b355df6f26 82
romankrej 0:f3b355df6f26 83 /* Pointer to collect thread */
romankrej 0:f3b355df6f26 84 Thread* thread;
romankrej 0:f3b355df6f26 85
romankrej 0:f3b355df6f26 86 private:
romankrej 0:f3b355df6f26 87 /* CAN interface */
romankrej 0:f3b355df6f26 88 CAN Can;
romankrej 0:f3b355df6f26 89
romankrej 0:f3b355df6f26 90 /* */
romankrej 0:f3b355df6f26 91 char data[4], address[2], data_size, cmd;
romankrej 0:f3b355df6f26 92
romankrej 0:f3b355df6f26 93 /* angular position of wheel */
romankrej 0:f3b355df6f26 94 float phi;
romankrej 0:f3b355df6f26 95
romankrej 0:f3b355df6f26 96 /* angular velocity of wheel */
romankrej 0:f3b355df6f26 97 float omega;
romankrej 0:f3b355df6f26 98
romankrej 0:f3b355df6f26 99 /* current of motor*/
romankrej 0:f3b355df6f26 100 float current;
romankrej 0:f3b355df6f26 101
romankrej 0:f3b355df6f26 102 /* This method convert bytes to data */
romankrej 0:f3b355df6f26 103 int get_data(char data[], char size);
romankrej 0:f3b355df6f26 104
romankrej 0:f3b355df6f26 105 /* This method seds SDO request to servoamplifier */
romankrej 0:f3b355df6f26 106 int send_SDO_request(char cmd, int adr, char size,int data);
romankrej 0:f3b355df6f26 107
romankrej 0:f3b355df6f26 108 /* This method sends PDO with required current */
romankrej 0:f3b355df6f26 109 int send_PDO_current(float curr);
romankrej 0:f3b355df6f26 110
romankrej 0:f3b355df6f26 111
romankrej 0:f3b355df6f26 112 };
romankrej 0:f3b355df6f26 113
romankrej 0:f3b355df6f26 114
romankrej 0:f3b355df6f26 115 #endif