Dependencies:   mbed

Committer:
GiJeongKim
Date:
Fri Jul 17 05:34:38 2020 +0000
Revision:
0:7c814979a859
EEPROM test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GiJeongKim 0:7c814979a859 1 #include "mbed.h"
GiJeongKim 0:7c814979a859 2 // For EEPROM, 최대 16byte 씩 쓸 수 있음
GiJeongKim 0:7c814979a859 3 // M95128-WMN6P
GiJeongKim 0:7c814979a859 4
GiJeongKim 0:7c814979a859 5 // Board Information
GiJeongKim 0:7c814979a859 6 uint8_t BNO = 0;
GiJeongKim 0:7c814979a859 7 uint8_t CONTROL_MODE = 0;
GiJeongKim 0:7c814979a859 8 uint8_t OPERATING_MODE = 0; // (00 : Moog & Rot, 01 : Moog & Lin, 10 : KNR & Rot, 11 : KNR & Lin, 101 : SW & Lin)
GiJeongKim 0:7c814979a859 9 uint8_t SENSING_MODE = 0; // (0 : torque, 1: pressure)
GiJeongKim 0:7c814979a859 10 uint8_t CONTROL_UTILITY_MODE = 0;
GiJeongKim 0:7c814979a859 11 uint8_t CURRENT_CONTROL_MODE = 0; // (0 : pwm, 1 : current control)
GiJeongKim 0:7c814979a859 12 uint8_t FLAG_VALVE_DEADZONE = 0;
GiJeongKim 0:7c814979a859 13 uint8_t REFERENCE_MODE = 0;
GiJeongKim 0:7c814979a859 14 int16_t CAN_FREQ = 500;
GiJeongKim 0:7c814979a859 15 int16_t DIR_JOINT_ENC = 0;
GiJeongKim 0:7c814979a859 16 int16_t DIR_VALVE = 0;
GiJeongKim 0:7c814979a859 17 int16_t DIR_VALVE_ENC = 0;
GiJeongKim 0:7c814979a859 18
GiJeongKim 0:7c814979a859 19 float SUPPLY_VOLTAGE = 12.0f;
GiJeongKim 0:7c814979a859 20 float VALVE_VOLTAGE_LIMIT = 12.0f; //v
GiJeongKim 0:7c814979a859 21
GiJeongKim 0:7c814979a859 22 float P_GAIN_VALVE_POSITION = 0.0f;
GiJeongKim 0:7c814979a859 23 float I_GAIN_VALVE_POSITION= 0.0f;
GiJeongKim 0:7c814979a859 24 float D_GAIN_VALVE_POSITION= 0.0f;
GiJeongKim 0:7c814979a859 25 float P_GAIN_JOINT_POSITION = 0.0f;
GiJeongKim 0:7c814979a859 26 float I_GAIN_JOINT_POSITION = 0.0f;
GiJeongKim 0:7c814979a859 27 float D_GAIN_JOINT_POSITION = 0.0f;
GiJeongKim 0:7c814979a859 28 float P_GAIN_JOINT_TORQUE = 0.0f;
GiJeongKim 0:7c814979a859 29 float I_GAIN_JOINT_TORQUE = 0.0;
GiJeongKim 0:7c814979a859 30 float D_GAIN_JOINT_TORQUE = 0.0;
GiJeongKim 0:7c814979a859 31
GiJeongKim 0:7c814979a859 32 int16_t K_SPRING = 0.0;
GiJeongKim 0:7c814979a859 33 int16_t D_DAMPER = 12.0;
GiJeongKim 0:7c814979a859 34 int16_t flag_delay_test = 0;
GiJeongKim 0:7c814979a859 35
GiJeongKim 0:7c814979a859 36 //float P_GAIN_VALVE_POSITION_OPP = 0.0f;
GiJeongKim 0:7c814979a859 37 //float I_GAIN_VALVE_POSITION_OPP= 0.0f;
GiJeongKim 0:7c814979a859 38 //float D_GAIN_VALVE_POSITION_OPP= 0.0f;
GiJeongKim 0:7c814979a859 39 //float P_GAIN_JOINT_POSITION_OPP = 0.0f;
GiJeongKim 0:7c814979a859 40 //float I_GAIN_JOINT_POSITION_OPP = 0.0f;
GiJeongKim 0:7c814979a859 41 //float D_GAIN_JOINT_POSITION_OPP = 0.0f;
GiJeongKim 0:7c814979a859 42 //float P_GAIN_JOINT_TORQUE_OPP = 0.0f;
GiJeongKim 0:7c814979a859 43 //float I_GAIN_JOINT_TORQUE_OPP = 0.0;
GiJeongKim 0:7c814979a859 44 //float D_GAIN_JOINT_TORQUE_OPP = 0.0;
GiJeongKim 0:7c814979a859 45
GiJeongKim 0:7c814979a859 46 float VALVE_DEADZONE_PLUS;
GiJeongKim 0:7c814979a859 47 float VALVE_DEADZONE_MINUS;
GiJeongKim 0:7c814979a859 48
GiJeongKim 0:7c814979a859 49 int16_t VELOCITY_COMP_GAIN;
GiJeongKim 0:7c814979a859 50 int16_t COMPLIANCE_GAIN;
GiJeongKim 0:7c814979a859 51
GiJeongKim 0:7c814979a859 52 int16_t VALVE_CENTER;
GiJeongKim 0:7c814979a859 53
GiJeongKim 0:7c814979a859 54 int16_t VALVE_FF;
GiJeongKim 0:7c814979a859 55
GiJeongKim 0:7c814979a859 56 int16_t BULK_MODULUS;
GiJeongKim 0:7c814979a859 57
GiJeongKim 0:7c814979a859 58 int16_t CHAMBER_VOLUME_A;
GiJeongKim 0:7c814979a859 59 int16_t CHAMBER_VOLUME_B;
GiJeongKim 0:7c814979a859 60
GiJeongKim 0:7c814979a859 61 int16_t PISTON_AREA_A;
GiJeongKim 0:7c814979a859 62 int16_t PISTON_AREA_B;
GiJeongKim 0:7c814979a859 63 float PISTON_AREA_alpha;
GiJeongKim 0:7c814979a859 64 float alpha3 = 1.0f;
GiJeongKim 0:7c814979a859 65
GiJeongKim 0:7c814979a859 66
GiJeongKim 0:7c814979a859 67 int16_t PRES_SUPPLY;
GiJeongKim 0:7c814979a859 68 int16_t PRES_RETURN;
GiJeongKim 0:7c814979a859 69
GiJeongKim 0:7c814979a859 70 int16_t ENC_LIMIT_PLUS;
GiJeongKim 0:7c814979a859 71 int16_t ENC_LIMIT_MINUS;
GiJeongKim 0:7c814979a859 72
GiJeongKim 0:7c814979a859 73 int16_t STROKE;
GiJeongKim 0:7c814979a859 74
GiJeongKim 0:7c814979a859 75
GiJeongKim 0:7c814979a859 76 //int16_t VALVE_LIMIT_PLUS;
GiJeongKim 0:7c814979a859 77 //int16_t VALVE_LIMIT_MINUS;
GiJeongKim 0:7c814979a859 78
GiJeongKim 0:7c814979a859 79 float ENC_PULSE_PER_POSITION;
GiJeongKim 0:7c814979a859 80 float TORQUE_SENSOR_PULSE_PER_TORQUE;
GiJeongKim 0:7c814979a859 81 float PRES_SENSOR_A_PULSE_PER_BAR = 4096.0f / 200.0f;
GiJeongKim 0:7c814979a859 82 float PRES_SENSOR_B_PULSE_PER_BAR = 4096.0f / 200.0f;
GiJeongKim 0:7c814979a859 83
GiJeongKim 0:7c814979a859 84 int HOMEPOS_OFFSET;
GiJeongKim 0:7c814979a859 85 int HOMEPOS_VALVE_OPENING;
GiJeongKim 0:7c814979a859 86
GiJeongKim 0:7c814979a859 87 float FRICTION;
GiJeongKim 0:7c814979a859 88 float REF_PERIOD;
GiJeongKim 0:7c814979a859 89 float REF_MAG;
GiJeongKim 0:7c814979a859 90 int REF_NUM;
GiJeongKim 0:7c814979a859 91
GiJeongKim 0:7c814979a859 92
GiJeongKim 0:7c814979a859 93 float DAC_REF;
GiJeongKim 0:7c814979a859 94 float DAC_RESOL;
GiJeongKim 0:7c814979a859 95
GiJeongKim 0:7c814979a859 96 int REF_POSITION;
GiJeongKim 0:7c814979a859 97 int REF_VELOCITY;
GiJeongKim 0:7c814979a859 98 int16_t REF_TORQUE;
GiJeongKim 0:7c814979a859 99 int16_t REF_PRES_DIFF;
GiJeongKim 0:7c814979a859 100 int16_t REF_PWM;
GiJeongKim 0:7c814979a859 101 int16_t REF_VALVE_POSITION;
GiJeongKim 0:7c814979a859 102 int16_t REF_CURRENT;
GiJeongKim 0:7c814979a859 103
GiJeongKim 0:7c814979a859 104 int REF_MOVE_TIME_5k;
GiJeongKim 0:7c814979a859 105 int INIT_REF_PWM;
GiJeongKim 0:7c814979a859 106 int INIT_REF_VALVE_POS;
GiJeongKim 0:7c814979a859 107 int INIT_REF_POS;
GiJeongKim 0:7c814979a859 108 int INIT_REF_VEL;
GiJeongKim 0:7c814979a859 109 int INIT_REF_TORQUE;
GiJeongKim 0:7c814979a859 110 int INIT_REF_PRES_DIFF;
GiJeongKim 0:7c814979a859 111 int INIT_REF_CURRENT;
GiJeongKim 0:7c814979a859 112
GiJeongKim 0:7c814979a859 113 int CUR_POSITION;
GiJeongKim 0:7c814979a859 114 int CUR_VELOCITY;
GiJeongKim 0:7c814979a859 115 float CUR_TORQUE;
GiJeongKim 0:7c814979a859 116 float CUR_PRES_A;
GiJeongKim 0:7c814979a859 117 float CUR_PRES_B;
GiJeongKim 0:7c814979a859 118 int CUR_VALVE_POSITION;
GiJeongKim 0:7c814979a859 119
GiJeongKim 0:7c814979a859 120 unsigned int TMR2_COUNT_LED1;
GiJeongKim 0:7c814979a859 121 unsigned int TMR2_COUNT_LED2;
GiJeongKim 0:7c814979a859 122 unsigned int TMR2_COUNT_CAN_TX = 0;
GiJeongKim 0:7c814979a859 123 unsigned int TMR3_COUNT_TEST = 0;
GiJeongKim 0:7c814979a859 124
GiJeongKim 0:7c814979a859 125 int num_err;
GiJeongKim 0:7c814979a859 126 int flag_err[8];
GiJeongKim 0:7c814979a859 127 int flag_err_old[8];
GiJeongKim 0:7c814979a859 128 int flag_err_rt;
GiJeongKim 0:7c814979a859 129
GiJeongKim 0:7c814979a859 130 int flag_ref_enable;
GiJeongKim 0:7c814979a859 131
GiJeongKim 0:7c814979a859 132 int flag_data_request[5];
GiJeongKim 0:7c814979a859 133
GiJeongKim 0:7c814979a859 134 int MODE_POS_FT_TRANS = 0;
GiJeongKim 0:7c814979a859 135
GiJeongKim 0:7c814979a859 136 float CUR_CURRENT_mA = 0.0f;
GiJeongKim 0:7c814979a859 137 float CUR_PRES_A_BAR = 0.0f;
GiJeongKim 0:7c814979a859 138 float CUR_PRES_B_BAR = 0.0f;
GiJeongKim 0:7c814979a859 139 float CUR_TORQUE_NM = 0.0f;
GiJeongKim 0:7c814979a859 140 float CUR_TORQUE_NM_PRESS = 0.0f;
GiJeongKim 0:7c814979a859 141
GiJeongKim 0:7c814979a859 142 float PRES_A_VREF = 0.0f;
GiJeongKim 0:7c814979a859 143 float PRES_B_VREF = 0.0f;
GiJeongKim 0:7c814979a859 144 float TORQUE_VREF = 0.0f;
GiJeongKim 0:7c814979a859 145
GiJeongKim 0:7c814979a859 146 float VALVE_PWM_RAW_FB = 0.0f;
GiJeongKim 0:7c814979a859 147 float VALVE_PWM_RAW_FF = 0.0f;
GiJeongKim 0:7c814979a859 148 float VALVE_PWM_RAW = 0.0f;
GiJeongKim 0:7c814979a859 149 int VALVE_PWM_VALVE_DZ = 0;
GiJeongKim 0:7c814979a859 150
GiJeongKim 0:7c814979a859 151 float VALVE_GAIN_LPM_PER_V[10];
GiJeongKim 0:7c814979a859 152 float VALVE_POS_VS_PWM[25];
GiJeongKim 0:7c814979a859 153 long JOINT_VEL[100];
GiJeongKim 0:7c814979a859 154
GiJeongKim 0:7c814979a859 155 int VALVE_MAX_POS;
GiJeongKim 0:7c814979a859 156 int VALVE_MIN_POS;
GiJeongKim 0:7c814979a859 157 int VALVE_POS_NUM;
GiJeongKim 0:7c814979a859 158 float VALVE_CENTER_OFFSET;
GiJeongKim 0:7c814979a859 159 float VALVE_DZ_MINUS_OFFSET;
GiJeongKim 0:7c814979a859 160 float VALVE_DZ_PLUS_OFFSET;
GiJeongKim 0:7c814979a859 161
GiJeongKim 0:7c814979a859 162
GiJeongKim 0:7c814979a859 163
GiJeongKim 0:7c814979a859 164 //SPI device(PB_15, PB_14, PB_13);
GiJeongKim 0:7c814979a859 165 //DigitalOut cs(PB_12);
GiJeongKim 0:7c814979a859 166 SPI eeprom(PB_15, PB_14, PB_13); //MOSI, MISO, SCK
GiJeongKim 0:7c814979a859 167 DigitalOut eeprom_cs(PB_12); // Chip select
GiJeongKim 0:7c814979a859 168 //DigitalOut check(PA_10);
GiJeongKim 0:7c814979a859 169 Serial pc(PA_9,PA_10);
GiJeongKim 0:7c814979a859 170 int temp1, temp2;
GiJeongKim 0:7c814979a859 171 void spi_eeprom_ready(void);
GiJeongKim 0:7c814979a859 172 void spi_eeprom_write(unsigned int data);
GiJeongKim 0:7c814979a859 173 void spi_eeprom_write_long(void);
GiJeongKim 0:7c814979a859 174 void spi_eeprom_write_long_1(unsigned int add);
GiJeongKim 0:7c814979a859 175 void spi_eeprom_write_long_2(unsigned int add);
GiJeongKim 0:7c814979a859 176 void spi_eeprom_write_long_3(unsigned int add);
GiJeongKim 0:7c814979a859 177 void spi_eeprom_write_long_4(unsigned int add);
GiJeongKim 0:7c814979a859 178 void spi_eeprom_write_long_5(unsigned int add);
GiJeongKim 0:7c814979a859 179 void spi_eeprom_write_long_6(unsigned int add);
GiJeongKim 0:7c814979a859 180 void spi_eeprom_write_long_7(unsigned int add);
GiJeongKim 0:7c814979a859 181 void spi_eeprom_write_long_8(unsigned int add);
GiJeongKim 0:7c814979a859 182 void spi_eeprom_write_long_9(unsigned int add);
GiJeongKim 0:7c814979a859 183 void spi_eeprom_write_long_10(unsigned int add);
GiJeongKim 0:7c814979a859 184 void spi_eeprom_write_long_11(unsigned int add);
GiJeongKim 0:7c814979a859 185 void spi_eeprom_write_long_12(unsigned int add);
GiJeongKim 0:7c814979a859 186 void spi_eeprom_write_long_13(unsigned int add);
GiJeongKim 0:7c814979a859 187 unsigned int spi_eeprom_read(void);
GiJeongKim 0:7c814979a859 188 void spi_eeprom_read_long(void);
GiJeongKim 0:7c814979a859 189 void spi_eeprom_read_long_1(unsigned int add);
GiJeongKim 0:7c814979a859 190 void spi_eeprom_read_long_2(unsigned int add);
GiJeongKim 0:7c814979a859 191 void spi_eeprom_read_long_3(unsigned int add);
GiJeongKim 0:7c814979a859 192 void spi_eeprom_read_long_4(unsigned int add);
GiJeongKim 0:7c814979a859 193 void spi_eeprom_read_long_5(unsigned int add);
GiJeongKim 0:7c814979a859 194 void spi_eeprom_read_long_6(unsigned int add);
GiJeongKim 0:7c814979a859 195 void spi_eeprom_read_long_7(unsigned int add);
GiJeongKim 0:7c814979a859 196 void spi_eeprom_read_long_8(unsigned int add);
GiJeongKim 0:7c814979a859 197 void spi_eeprom_read_long_9(unsigned int add);
GiJeongKim 0:7c814979a859 198 void spi_eeprom_read_long_10(unsigned int add);
GiJeongKim 0:7c814979a859 199 void spi_eeprom_read_long_11(unsigned int add);
GiJeongKim 0:7c814979a859 200 void spi_eeprom_read_long_12(unsigned int add);
GiJeongKim 0:7c814979a859 201 void spi_eeprom_read_long_13(unsigned int add);
GiJeongKim 0:7c814979a859 202 int a=0x41233212;
GiJeongKim 0:7c814979a859 203 int b=0x32222222;
GiJeongKim 0:7c814979a859 204 int c=0x11112222;
GiJeongKim 0:7c814979a859 205 int d=0x11111111;
GiJeongKim 0:7c814979a859 206 int e=0x00002222;
GiJeongKim 0:7c814979a859 207
GiJeongKim 0:7c814979a859 208 int main() {
GiJeongKim 0:7c814979a859 209 eeprom.format(8,3);
GiJeongKim 0:7c814979a859 210 eeprom.frequency(5000000); // max freq of eeprom
GiJeongKim 0:7c814979a859 211 spi_eeprom_write_long();
GiJeongKim 0:7c814979a859 212
GiJeongKim 0:7c814979a859 213
GiJeongKim 0:7c814979a859 214 while(1){
GiJeongKim 0:7c814979a859 215 wait(3.0f);
GiJeongKim 0:7c814979a859 216 spi_eeprom_read_long();
GiJeongKim 0:7c814979a859 217 pc.printf("right=%d, ans=%d\n",b,D_DAMPER);
GiJeongKim 0:7c814979a859 218 for(int i=90; i<100; i++) {
GiJeongKim 0:7c814979a859 219 pc.printf("%dth right=%d, ans=%d\n",i,b,JOINT_VEL[i]);
GiJeongKim 0:7c814979a859 220 }
GiJeongKim 0:7c814979a859 221 for(int i=0; i<15; i++) {
GiJeongKim 0:7c814979a859 222 pc.printf("%dth right=%d, ans=%d\n",i,a,JOINT_VEL[i]);
GiJeongKim 0:7c814979a859 223 }
GiJeongKim 0:7c814979a859 224 wait(10.0f);
GiJeongKim 0:7c814979a859 225
GiJeongKim 0:7c814979a859 226 /*
GiJeongKim 0:7c814979a859 227 pc.printf("a right=%d, ans=%d\n",a,BNO);
GiJeongKim 0:7c814979a859 228 pc.printf("a right=%d, ans=%f\n",a,P_GAIN_VALVE_POSITION);
GiJeongKim 0:7c814979a859 229 pc.printf("a right=%d, ans=%f\n",a,D_GAIN_JOINT_TORQUE);
GiJeongKim 0:7c814979a859 230 pc.printf("b right=%d, ans=%d\n",a,VALVE_FF);
GiJeongKim 0:7c814979a859 231 */
GiJeongKim 0:7c814979a859 232 /*
GiJeongKim 0:7c814979a859 233 pc.printf("c right=%d, ans=%f\n",c,VALVE_POS_VS_PWM[11]);
GiJeongKim 0:7c814979a859 234 pc.printf("d right=%d, ans=%d\n",d,JOINT_VEL[99]);
GiJeongKim 0:7c814979a859 235 pc.printf("e right=%d, ans=%d\n",e,D_DAMPER);
GiJeongKim 0:7c814979a859 236 */
GiJeongKim 0:7c814979a859 237 }
GiJeongKim 0:7c814979a859 238 }
GiJeongKim 0:7c814979a859 239
GiJeongKim 0:7c814979a859 240 void spi_eeprom_ready(void){
GiJeongKim 0:7c814979a859 241 int temp1, temp2;
GiJeongKim 0:7c814979a859 242 do{
GiJeongKim 0:7c814979a859 243 eeprom_cs=0;
GiJeongKim 0:7c814979a859 244 eeprom.write(0x06); //write enable
GiJeongKim 0:7c814979a859 245 eeprom_cs=1;
GiJeongKim 0:7c814979a859 246
GiJeongKim 0:7c814979a859 247 eeprom_cs=0;
GiJeongKim 0:7c814979a859 248 temp1 = eeprom.write(0x05);
GiJeongKim 0:7c814979a859 249 temp2 = eeprom.write(0x00);
GiJeongKim 0:7c814979a859 250 eeprom_cs=1;
GiJeongKim 0:7c814979a859 251 temp2=(temp2&(0x03))!= 0x02;
GiJeongKim 0:7c814979a859 252 } while(temp2); // before writing or reading
GiJeongKim 0:7c814979a859 253 }
GiJeongKim 0:7c814979a859 254
GiJeongKim 0:7c814979a859 255 void spi_eeprom_write(unsigned int data){
GiJeongKim 0:7c814979a859 256 eeprom.write(0xff&data);
GiJeongKim 0:7c814979a859 257 eeprom.write(0xff&(data>>8));
GiJeongKim 0:7c814979a859 258 eeprom.write(0xff&(data>>16));
GiJeongKim 0:7c814979a859 259 eeprom.write(0xff&(data>>24));
GiJeongKim 0:7c814979a859 260 }
GiJeongKim 0:7c814979a859 261
GiJeongKim 0:7c814979a859 262 void spi_eeprom_write_long(void){
GiJeongKim 0:7c814979a859 263
GiJeongKim 0:7c814979a859 264 spi_eeprom_write_long_1(0x0000);
GiJeongKim 0:7c814979a859 265 spi_eeprom_write_long_2(0x0100);
GiJeongKim 0:7c814979a859 266 spi_eeprom_write_long_3(0x0200);
GiJeongKim 0:7c814979a859 267 spi_eeprom_write_long_4(0x0300);
GiJeongKim 0:7c814979a859 268 spi_eeprom_write_long_5(0x0400);
GiJeongKim 0:7c814979a859 269 spi_eeprom_write_long_6(0x0500);
GiJeongKim 0:7c814979a859 270 spi_eeprom_write_long_7(0x0600);
GiJeongKim 0:7c814979a859 271 spi_eeprom_write_long_8(0x0700);
GiJeongKim 0:7c814979a859 272 spi_eeprom_write_long_9(0x0800);
GiJeongKim 0:7c814979a859 273 spi_eeprom_write_long_10(0x0900);
GiJeongKim 0:7c814979a859 274 spi_eeprom_write_long_11(0x1000);
GiJeongKim 0:7c814979a859 275 spi_eeprom_write_long_12(0x1100);
GiJeongKim 0:7c814979a859 276 spi_eeprom_write_long_13(0x1200);
GiJeongKim 0:7c814979a859 277 }
GiJeongKim 0:7c814979a859 278
GiJeongKim 0:7c814979a859 279
GiJeongKim 0:7c814979a859 280 void spi_eeprom_write_long_1(unsigned int add){
GiJeongKim 0:7c814979a859 281
GiJeongKim 0:7c814979a859 282 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 283 eeprom_cs=0;
GiJeongKim 0:7c814979a859 284 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 285 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 286 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 287
GiJeongKim 0:7c814979a859 288 spi_eeprom_write((int) BNO); // write at address, 쓸때도 4byte씩 씀
GiJeongKim 0:7c814979a859 289 spi_eeprom_write((int) OPERATING_MODE);
GiJeongKim 0:7c814979a859 290 spi_eeprom_write((int) SENSING_MODE);
GiJeongKim 0:7c814979a859 291 spi_eeprom_write((int) CURRENT_CONTROL_MODE);
GiJeongKim 0:7c814979a859 292 spi_eeprom_write((int) FLAG_VALVE_DEADZONE);
GiJeongKim 0:7c814979a859 293 spi_eeprom_write((int) CAN_FREQ);
GiJeongKim 0:7c814979a859 294 spi_eeprom_write((int) DIR_JOINT_ENC);
GiJeongKim 0:7c814979a859 295 spi_eeprom_write((int) DIR_VALVE);
GiJeongKim 0:7c814979a859 296 spi_eeprom_write((int) DIR_VALVE_ENC);
GiJeongKim 0:7c814979a859 297 spi_eeprom_write((int) (SUPPLY_VOLTAGE * 10.0f));
GiJeongKim 0:7c814979a859 298 spi_eeprom_write((int) (VALVE_VOLTAGE_LIMIT * 10.0f));
GiJeongKim 0:7c814979a859 299 spi_eeprom_write((int) P_GAIN_VALVE_POSITION);
GiJeongKim 0:7c814979a859 300 spi_eeprom_write((int) I_GAIN_VALVE_POSITION);
GiJeongKim 0:7c814979a859 301 spi_eeprom_write((int) D_GAIN_VALVE_POSITION);
GiJeongKim 0:7c814979a859 302 spi_eeprom_write((int) P_GAIN_JOINT_POSITION);
GiJeongKim 0:7c814979a859 303
GiJeongKim 0:7c814979a859 304 eeprom_cs=1;
GiJeongKim 0:7c814979a859 305 }
GiJeongKim 0:7c814979a859 306
GiJeongKim 0:7c814979a859 307 void spi_eeprom_write_long_2(unsigned int add){
GiJeongKim 0:7c814979a859 308
GiJeongKim 0:7c814979a859 309 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 310 eeprom_cs=0;
GiJeongKim 0:7c814979a859 311 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 312 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 313 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 314
GiJeongKim 0:7c814979a859 315 spi_eeprom_write((int) I_GAIN_JOINT_POSITION);
GiJeongKim 0:7c814979a859 316 spi_eeprom_write((int) D_GAIN_JOINT_POSITION);
GiJeongKim 0:7c814979a859 317 spi_eeprom_write((int) P_GAIN_JOINT_TORQUE);
GiJeongKim 0:7c814979a859 318 spi_eeprom_write((int) I_GAIN_JOINT_TORQUE);
GiJeongKim 0:7c814979a859 319 spi_eeprom_write((int) D_GAIN_JOINT_TORQUE);
GiJeongKim 0:7c814979a859 320 spi_eeprom_write((int) (VALVE_DEADZONE_PLUS * 10.0f));
GiJeongKim 0:7c814979a859 321 spi_eeprom_write((int) (VALVE_DEADZONE_MINUS * 10.0f));
GiJeongKim 0:7c814979a859 322 spi_eeprom_write((int) VELOCITY_COMP_GAIN);
GiJeongKim 0:7c814979a859 323 spi_eeprom_write((int) COMPLIANCE_GAIN);
GiJeongKim 0:7c814979a859 324 spi_eeprom_write((int) VALVE_CENTER);
GiJeongKim 0:7c814979a859 325 spi_eeprom_write((int) VALVE_FF);
GiJeongKim 0:7c814979a859 326 spi_eeprom_write((int) BNO);
GiJeongKim 0:7c814979a859 327 spi_eeprom_write((int) CHAMBER_VOLUME_A);
GiJeongKim 0:7c814979a859 328 spi_eeprom_write((int) CHAMBER_VOLUME_B);
GiJeongKim 0:7c814979a859 329 spi_eeprom_write((int) PISTON_AREA_A);
GiJeongKim 0:7c814979a859 330
GiJeongKim 0:7c814979a859 331 eeprom_cs=1;
GiJeongKim 0:7c814979a859 332 }
GiJeongKim 0:7c814979a859 333
GiJeongKim 0:7c814979a859 334 void spi_eeprom_write_long_3(unsigned int add){
GiJeongKim 0:7c814979a859 335
GiJeongKim 0:7c814979a859 336 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 337 eeprom_cs=0;
GiJeongKim 0:7c814979a859 338 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 339 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 340 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 341
GiJeongKim 0:7c814979a859 342 spi_eeprom_write((int) PISTON_AREA_B);
GiJeongKim 0:7c814979a859 343 spi_eeprom_write((int) PRES_SUPPLY);
GiJeongKim 0:7c814979a859 344 spi_eeprom_write((int) PRES_RETURN);
GiJeongKim 0:7c814979a859 345 spi_eeprom_write((int) ENC_LIMIT_MINUS);
GiJeongKim 0:7c814979a859 346 spi_eeprom_write((int) ENC_LIMIT_PLUS);
GiJeongKim 0:7c814979a859 347 spi_eeprom_write((int) STROKE);
GiJeongKim 0:7c814979a859 348 //writer.write(RID_VALVE_LIMIT_MINUS,(int) VALVE_LIMIT_MINUS);
GiJeongKim 0:7c814979a859 349 //writer.write(RID_VALVE_LIMIT_PLUS,(int) VALVE_LIMIT_PLUS);
GiJeongKim 0:7c814979a859 350 spi_eeprom_write((int) (ENC_PULSE_PER_POSITION*10.0f));
GiJeongKim 0:7c814979a859 351 spi_eeprom_write((int) (TORQUE_SENSOR_PULSE_PER_TORQUE * 10000.0f));
GiJeongKim 0:7c814979a859 352 spi_eeprom_write((int) (PRES_SENSOR_A_PULSE_PER_BAR * 100.0f));
GiJeongKim 0:7c814979a859 353 spi_eeprom_write((int) (PRES_SENSOR_B_PULSE_PER_BAR * 100.0f));
GiJeongKim 0:7c814979a859 354 spi_eeprom_write((int) (FRICTION * 10.0f));
GiJeongKim 0:7c814979a859 355 spi_eeprom_write((int) HOMEPOS_OFFSET);
GiJeongKim 0:7c814979a859 356 spi_eeprom_write((int) HOMEPOS_VALVE_OPENING);
GiJeongKim 0:7c814979a859 357
GiJeongKim 0:7c814979a859 358 eeprom_cs=1;
GiJeongKim 0:7c814979a859 359 }
GiJeongKim 0:7c814979a859 360
GiJeongKim 0:7c814979a859 361 void spi_eeprom_write_long_4(unsigned int add){
GiJeongKim 0:7c814979a859 362
GiJeongKim 0:7c814979a859 363 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 364 eeprom_cs=0;
GiJeongKim 0:7c814979a859 365 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 366 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 367 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 368
GiJeongKim 0:7c814979a859 369 spi_eeprom_write((int) (TORQUE_VREF * 1000.0f));
GiJeongKim 0:7c814979a859 370 spi_eeprom_write( (int) (PRES_A_VREF * 1000.0f));
GiJeongKim 0:7c814979a859 371 spi_eeprom_write((int) (PRES_B_VREF * 1000.0f));
GiJeongKim 0:7c814979a859 372 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[0] * 100.0f));
GiJeongKim 0:7c814979a859 373 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[2] * 100.0f));
GiJeongKim 0:7c814979a859 374 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[4] * 100.0f));
GiJeongKim 0:7c814979a859 375 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[6] * 100.0f));
GiJeongKim 0:7c814979a859 376 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[8] * 100.0f));
GiJeongKim 0:7c814979a859 377 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[1] * 100.0f));
GiJeongKim 0:7c814979a859 378 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[3] * 100.0f));
GiJeongKim 0:7c814979a859 379 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[5] * 100.0f));
GiJeongKim 0:7c814979a859 380 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[7] * 100.0f));
GiJeongKim 0:7c814979a859 381 spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[9] * 100.0f));
GiJeongKim 0:7c814979a859 382
GiJeongKim 0:7c814979a859 383 eeprom_cs=1;
GiJeongKim 0:7c814979a859 384 }
GiJeongKim 0:7c814979a859 385
GiJeongKim 0:7c814979a859 386 void spi_eeprom_write_long_5(unsigned int add){
GiJeongKim 0:7c814979a859 387
GiJeongKim 0:7c814979a859 388 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 389 eeprom_cs=0;
GiJeongKim 0:7c814979a859 390 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 391 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 392 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 393
GiJeongKim 0:7c814979a859 394 for(int i=0; i<15; i++) {
GiJeongKim 0:7c814979a859 395 spi_eeprom_write( (int) VALVE_POS_VS_PWM[i]);
GiJeongKim 0:7c814979a859 396 }
GiJeongKim 0:7c814979a859 397
GiJeongKim 0:7c814979a859 398 eeprom_cs=1;
GiJeongKim 0:7c814979a859 399 }
GiJeongKim 0:7c814979a859 400
GiJeongKim 0:7c814979a859 401 void spi_eeprom_write_long_6(unsigned int add){
GiJeongKim 0:7c814979a859 402
GiJeongKim 0:7c814979a859 403 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 404 eeprom_cs=0;
GiJeongKim 0:7c814979a859 405 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 406 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 407 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 408
GiJeongKim 0:7c814979a859 409 for(int i=15; i<25; i++) {
GiJeongKim 0:7c814979a859 410 spi_eeprom_write( (int) VALVE_POS_VS_PWM[i]);
GiJeongKim 0:7c814979a859 411 }
GiJeongKim 0:7c814979a859 412
GiJeongKim 0:7c814979a859 413 eeprom_cs=1;
GiJeongKim 0:7c814979a859 414 }
GiJeongKim 0:7c814979a859 415
GiJeongKim 0:7c814979a859 416 void spi_eeprom_write_long_7(unsigned int add){
GiJeongKim 0:7c814979a859 417
GiJeongKim 0:7c814979a859 418 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 419 eeprom_cs=0;
GiJeongKim 0:7c814979a859 420 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 421 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 422 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 423
GiJeongKim 0:7c814979a859 424 for(int i=0; i<15; i++) {
GiJeongKim 0:7c814979a859 425 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 426 }
GiJeongKim 0:7c814979a859 427
GiJeongKim 0:7c814979a859 428 eeprom_cs=1;
GiJeongKim 0:7c814979a859 429 }
GiJeongKim 0:7c814979a859 430
GiJeongKim 0:7c814979a859 431 void spi_eeprom_write_long_8(unsigned int add){
GiJeongKim 0:7c814979a859 432
GiJeongKim 0:7c814979a859 433 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 434 eeprom_cs=0;
GiJeongKim 0:7c814979a859 435 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 436 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 437 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 438
GiJeongKim 0:7c814979a859 439 for(int i=15; i<30; i++) {
GiJeongKim 0:7c814979a859 440 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 441 }
GiJeongKim 0:7c814979a859 442
GiJeongKim 0:7c814979a859 443 eeprom_cs=1;
GiJeongKim 0:7c814979a859 444 }
GiJeongKim 0:7c814979a859 445 void spi_eeprom_write_long_9(unsigned int add){
GiJeongKim 0:7c814979a859 446
GiJeongKim 0:7c814979a859 447 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 448 eeprom_cs=0;
GiJeongKim 0:7c814979a859 449 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 450 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 451 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 452
GiJeongKim 0:7c814979a859 453 for(int i=30; i<45; i++) {
GiJeongKim 0:7c814979a859 454 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 455 }
GiJeongKim 0:7c814979a859 456
GiJeongKim 0:7c814979a859 457 eeprom_cs=1;
GiJeongKim 0:7c814979a859 458 }
GiJeongKim 0:7c814979a859 459
GiJeongKim 0:7c814979a859 460 void spi_eeprom_write_long_10(unsigned int add){
GiJeongKim 0:7c814979a859 461
GiJeongKim 0:7c814979a859 462 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 463 eeprom_cs=0;
GiJeongKim 0:7c814979a859 464 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 465 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 466 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 467
GiJeongKim 0:7c814979a859 468 for(int i=45; i<60; i++) {
GiJeongKim 0:7c814979a859 469 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 470 }
GiJeongKim 0:7c814979a859 471
GiJeongKim 0:7c814979a859 472 eeprom_cs=1;
GiJeongKim 0:7c814979a859 473 }
GiJeongKim 0:7c814979a859 474
GiJeongKim 0:7c814979a859 475 void spi_eeprom_write_long_11(unsigned int add){
GiJeongKim 0:7c814979a859 476
GiJeongKim 0:7c814979a859 477 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 478 eeprom_cs=0;
GiJeongKim 0:7c814979a859 479 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 480 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 481 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 482
GiJeongKim 0:7c814979a859 483 for(int i=60; i<75; i++) {
GiJeongKim 0:7c814979a859 484 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 485 }
GiJeongKim 0:7c814979a859 486
GiJeongKim 0:7c814979a859 487 eeprom_cs=1;
GiJeongKim 0:7c814979a859 488 }
GiJeongKim 0:7c814979a859 489
GiJeongKim 0:7c814979a859 490 void spi_eeprom_write_long_12(unsigned int add){
GiJeongKim 0:7c814979a859 491
GiJeongKim 0:7c814979a859 492 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 493 eeprom_cs=0;
GiJeongKim 0:7c814979a859 494 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 495 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 496 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 497
GiJeongKim 0:7c814979a859 498 for(int i=75; i<90; i++) {
GiJeongKim 0:7c814979a859 499 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 500 }
GiJeongKim 0:7c814979a859 501
GiJeongKim 0:7c814979a859 502 eeprom_cs=1;
GiJeongKim 0:7c814979a859 503 }
GiJeongKim 0:7c814979a859 504
GiJeongKim 0:7c814979a859 505 void spi_eeprom_write_long_13(unsigned int add){
GiJeongKim 0:7c814979a859 506
GiJeongKim 0:7c814979a859 507 spi_eeprom_ready();
GiJeongKim 0:7c814979a859 508 eeprom_cs=0;
GiJeongKim 0:7c814979a859 509 eeprom.write(0x02);
GiJeongKim 0:7c814979a859 510 eeprom.write(0xff&(add>>8));
GiJeongKim 0:7c814979a859 511 eeprom.write(0xff&add);
GiJeongKim 0:7c814979a859 512
GiJeongKim 0:7c814979a859 513 for(int i=90; i<100; i++) {
GiJeongKim 0:7c814979a859 514 spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF));
GiJeongKim 0:7c814979a859 515 }
GiJeongKim 0:7c814979a859 516
GiJeongKim 0:7c814979a859 517 spi_eeprom_write((int) VALVE_MAX_POS);
GiJeongKim 0:7c814979a859 518 spi_eeprom_write((int) VALVE_MIN_POS);
GiJeongKim 0:7c814979a859 519 //writer.write(RID_DDV_CENTER, (int) (DDV_CENTER * 10.0f));
GiJeongKim 0:7c814979a859 520 spi_eeprom_write((int) VALVE_POS_NUM);
GiJeongKim 0:7c814979a859 521 spi_eeprom_write((int) K_SPRING);
GiJeongKim 0:7c814979a859 522 spi_eeprom_write((int) D_DAMPER);
GiJeongKim 0:7c814979a859 523
GiJeongKim 0:7c814979a859 524 eeprom_cs=1;
GiJeongKim 0:7c814979a859 525 }
GiJeongKim 0:7c814979a859 526
GiJeongKim 0:7c814979a859 527 unsigned int spi_eeprom_read(void){
GiJeongKim 0:7c814979a859 528 int a1 = eeprom.write(0x00);
GiJeongKim 0:7c814979a859 529 int a2 = eeprom.write(0x00);
GiJeongKim 0:7c814979a859 530 int a3 = eeprom.write(0x00);
GiJeongKim 0:7c814979a859 531 int a4 = eeprom.write(0x00);
GiJeongKim 0:7c814979a859 532 unsigned int final = (a4<<24)+(a3<<16) + (a2<<8) + a1;
GiJeongKim 0:7c814979a859 533 return final;
GiJeongKim 0:7c814979a859 534 }
GiJeongKim 0:7c814979a859 535
GiJeongKim 0:7c814979a859 536 void spi_eeprom_read_long(void){
GiJeongKim 0:7c814979a859 537 spi_eeprom_read_long_1(0x0000);
GiJeongKim 0:7c814979a859 538 spi_eeprom_read_long_2(0x0100);
GiJeongKim 0:7c814979a859 539 spi_eeprom_read_long_3(0x0200);
GiJeongKim 0:7c814979a859 540 spi_eeprom_read_long_4(0x0300);
GiJeongKim 0:7c814979a859 541 spi_eeprom_read_long_5(0x0400);
GiJeongKim 0:7c814979a859 542 spi_eeprom_read_long_6(0x0500);
GiJeongKim 0:7c814979a859 543 spi_eeprom_read_long_7(0x0600);
GiJeongKim 0:7c814979a859 544 spi_eeprom_read_long_8(0x0700);
GiJeongKim 0:7c814979a859 545 spi_eeprom_read_long_9(0x0800);
GiJeongKim 0:7c814979a859 546 spi_eeprom_read_long_10(0x0900);
GiJeongKim 0:7c814979a859 547 spi_eeprom_read_long_11(0x1000);
GiJeongKim 0:7c814979a859 548 spi_eeprom_read_long_12(0x1100);
GiJeongKim 0:7c814979a859 549 spi_eeprom_read_long_13(0x1200);
GiJeongKim 0:7c814979a859 550 }
GiJeongKim 0:7c814979a859 551
GiJeongKim 0:7c814979a859 552 void spi_eeprom_read_long_1(unsigned int add){
GiJeongKim 0:7c814979a859 553 eeprom_cs=0;
GiJeongKim 0:7c814979a859 554 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 555 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 556 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 557
GiJeongKim 0:7c814979a859 558 BNO = spi_eeprom_read();
GiJeongKim 0:7c814979a859 559 BNO = 1;
GiJeongKim 0:7c814979a859 560 OPERATING_MODE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 561 SENSING_MODE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 562 CURRENT_CONTROL_MODE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 563 FLAG_VALVE_DEADZONE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 564 CAN_FREQ = spi_eeprom_read();
GiJeongKim 0:7c814979a859 565 DIR_JOINT_ENC = spi_eeprom_read();
GiJeongKim 0:7c814979a859 566 DIR_VALVE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 567 DIR_VALVE_ENC = spi_eeprom_read();
GiJeongKim 0:7c814979a859 568 SUPPLY_VOLTAGE = (float) (spi_eeprom_read()) *0.1f;
GiJeongKim 0:7c814979a859 569 VALVE_VOLTAGE_LIMIT = (float) (spi_eeprom_read()) * 0.1f;
GiJeongKim 0:7c814979a859 570 P_GAIN_VALVE_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 571 I_GAIN_VALVE_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 572 D_GAIN_VALVE_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 573 P_GAIN_JOINT_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 574
GiJeongKim 0:7c814979a859 575 eeprom_cs=1;
GiJeongKim 0:7c814979a859 576 }
GiJeongKim 0:7c814979a859 577
GiJeongKim 0:7c814979a859 578 void spi_eeprom_read_long_2(unsigned int add){
GiJeongKim 0:7c814979a859 579 eeprom_cs=0;
GiJeongKim 0:7c814979a859 580 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 581 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 582 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 583
GiJeongKim 0:7c814979a859 584 I_GAIN_JOINT_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 585 D_GAIN_JOINT_POSITION = spi_eeprom_read();
GiJeongKim 0:7c814979a859 586 P_GAIN_JOINT_TORQUE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 587 I_GAIN_JOINT_TORQUE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 588 D_GAIN_JOINT_TORQUE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 589 VALVE_DEADZONE_PLUS = (float) (spi_eeprom_read()) * 0.1f;
GiJeongKim 0:7c814979a859 590 VALVE_DEADZONE_MINUS = (float) (spi_eeprom_read()) * 0.1f;
GiJeongKim 0:7c814979a859 591 VELOCITY_COMP_GAIN = spi_eeprom_read();
GiJeongKim 0:7c814979a859 592 COMPLIANCE_GAIN = spi_eeprom_read();
GiJeongKim 0:7c814979a859 593 VALVE_CENTER = spi_eeprom_read();
GiJeongKim 0:7c814979a859 594 VALVE_FF = spi_eeprom_read();
GiJeongKim 0:7c814979a859 595 BULK_MODULUS = spi_eeprom_read();
GiJeongKim 0:7c814979a859 596 CHAMBER_VOLUME_A = spi_eeprom_read();
GiJeongKim 0:7c814979a859 597 CHAMBER_VOLUME_B = spi_eeprom_read();
GiJeongKim 0:7c814979a859 598 PISTON_AREA_A = spi_eeprom_read();
GiJeongKim 0:7c814979a859 599
GiJeongKim 0:7c814979a859 600 eeprom_cs=1;
GiJeongKim 0:7c814979a859 601 }
GiJeongKim 0:7c814979a859 602
GiJeongKim 0:7c814979a859 603 void spi_eeprom_read_long_3(unsigned int add){
GiJeongKim 0:7c814979a859 604 eeprom_cs=0;
GiJeongKim 0:7c814979a859 605 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 606 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 607 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 608
GiJeongKim 0:7c814979a859 609 PISTON_AREA_B = spi_eeprom_read();
GiJeongKim 0:7c814979a859 610 PISTON_AREA_alpha = (float)PISTON_AREA_B/(float)PISTON_AREA_A;
GiJeongKim 0:7c814979a859 611 alpha3 = PISTON_AREA_alpha * PISTON_AREA_alpha*PISTON_AREA_alpha;
GiJeongKim 0:7c814979a859 612 PRES_SUPPLY = spi_eeprom_read();
GiJeongKim 0:7c814979a859 613 PRES_RETURN = spi_eeprom_read();
GiJeongKim 0:7c814979a859 614 ENC_LIMIT_MINUS = spi_eeprom_read();
GiJeongKim 0:7c814979a859 615 ENC_LIMIT_PLUS = spi_eeprom_read();
GiJeongKim 0:7c814979a859 616 STROKE = spi_eeprom_read();
GiJeongKim 0:7c814979a859 617 //VALVE_LIMIT_MINUS = flashReadInt(Rom_Sector, RID_VALVE_LIMIT_MINUS);
GiJeongKim 0:7c814979a859 618 //VALVE_LIMIT_PLUS = flashReadInt(Rom_Sector, RID_VALVE_LIMIT_PLUS);
GiJeongKim 0:7c814979a859 619 ENC_PULSE_PER_POSITION = (float) (spi_eeprom_read()) * 0.1f;
GiJeongKim 0:7c814979a859 620 // ENC_PULSE_PER_POSITION = (float) 1024.0f;
GiJeongKim 0:7c814979a859 621 TORQUE_SENSOR_PULSE_PER_TORQUE = (float) (spi_eeprom_read()) * 0.0001f;
GiJeongKim 0:7c814979a859 622 //TORQUE_SENSOR_PULSE_PER_TORQUE = (float) 0.41928f; //for ankle
GiJeongKim 0:7c814979a859 623 // TORQUE_SENSOR_PULSE_PER_TORQUE = (float) 10000.0f/2048.0f; //for knee
GiJeongKim 0:7c814979a859 624 PRES_SENSOR_A_PULSE_PER_BAR = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 625 // PRES_SENSOR_A_PULSE_PER_BAR = 4096.0f / 200.0f;
GiJeongKim 0:7c814979a859 626 PRES_SENSOR_B_PULSE_PER_BAR = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 627 // PRES_SENSOR_B_PULSE_PER_BAR = 4096.0f / 200.0f;
GiJeongKim 0:7c814979a859 628 FRICTION = (float) (spi_eeprom_read()) * 0.1f;
GiJeongKim 0:7c814979a859 629 HOMEPOS_OFFSET = spi_eeprom_read();
GiJeongKim 0:7c814979a859 630 HOMEPOS_VALVE_OPENING = spi_eeprom_read();
GiJeongKim 0:7c814979a859 631
GiJeongKim 0:7c814979a859 632 eeprom_cs=1;
GiJeongKim 0:7c814979a859 633 }
GiJeongKim 0:7c814979a859 634
GiJeongKim 0:7c814979a859 635 void spi_eeprom_read_long_4(unsigned int add){
GiJeongKim 0:7c814979a859 636 eeprom_cs=0;
GiJeongKim 0:7c814979a859 637 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 638 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 639 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 640
GiJeongKim 0:7c814979a859 641 TORQUE_VREF = (float) (spi_eeprom_read()) *0.001f;
GiJeongKim 0:7c814979a859 642 PRES_A_VREF = (float) spi_eeprom_read() * 0.001f;
GiJeongKim 0:7c814979a859 643 PRES_B_VREF = (float) spi_eeprom_read() * 0.001f;
GiJeongKim 0:7c814979a859 644 VALVE_GAIN_LPM_PER_V[0] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 645 VALVE_GAIN_LPM_PER_V[2] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 646 VALVE_GAIN_LPM_PER_V[4] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 647 VALVE_GAIN_LPM_PER_V[6] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 648 VALVE_GAIN_LPM_PER_V[8] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 649 VALVE_GAIN_LPM_PER_V[1] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 650 VALVE_GAIN_LPM_PER_V[3] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 651 VALVE_GAIN_LPM_PER_V[5] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 652 VALVE_GAIN_LPM_PER_V[7] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 653 VALVE_GAIN_LPM_PER_V[9] = (float) (spi_eeprom_read()) * 0.01f;
GiJeongKim 0:7c814979a859 654
GiJeongKim 0:7c814979a859 655 eeprom_cs=1;
GiJeongKim 0:7c814979a859 656 }
GiJeongKim 0:7c814979a859 657
GiJeongKim 0:7c814979a859 658 void spi_eeprom_read_long_5(unsigned int add){
GiJeongKim 0:7c814979a859 659 eeprom_cs=0;
GiJeongKim 0:7c814979a859 660 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 661 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 662 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 663
GiJeongKim 0:7c814979a859 664 for(int i=0; i<15; i++) {
GiJeongKim 0:7c814979a859 665 VALVE_POS_VS_PWM[i] = (float) (spi_eeprom_read());
GiJeongKim 0:7c814979a859 666 }
GiJeongKim 0:7c814979a859 667
GiJeongKim 0:7c814979a859 668 eeprom_cs=1;
GiJeongKim 0:7c814979a859 669 }
GiJeongKim 0:7c814979a859 670
GiJeongKim 0:7c814979a859 671 void spi_eeprom_read_long_6(unsigned int add){
GiJeongKim 0:7c814979a859 672 eeprom_cs=0;
GiJeongKim 0:7c814979a859 673 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 674 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 675 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 676
GiJeongKim 0:7c814979a859 677 for(int i=15; i<25; i++) {
GiJeongKim 0:7c814979a859 678 VALVE_POS_VS_PWM[i] = (float) (spi_eeprom_read());
GiJeongKim 0:7c814979a859 679 }
GiJeongKim 0:7c814979a859 680
GiJeongKim 0:7c814979a859 681 eeprom_cs=1;
GiJeongKim 0:7c814979a859 682 }
GiJeongKim 0:7c814979a859 683
GiJeongKim 0:7c814979a859 684 void spi_eeprom_read_long_7(unsigned int add){
GiJeongKim 0:7c814979a859 685 eeprom_cs=0;
GiJeongKim 0:7c814979a859 686 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 687 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 688 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 689
GiJeongKim 0:7c814979a859 690 for(int i=0; i<15; i++) {
GiJeongKim 0:7c814979a859 691 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 692 }
GiJeongKim 0:7c814979a859 693
GiJeongKim 0:7c814979a859 694 eeprom_cs=1;
GiJeongKim 0:7c814979a859 695 }
GiJeongKim 0:7c814979a859 696
GiJeongKim 0:7c814979a859 697 void spi_eeprom_read_long_8(unsigned int add){
GiJeongKim 0:7c814979a859 698 eeprom_cs=0;
GiJeongKim 0:7c814979a859 699 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 700 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 701 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 702
GiJeongKim 0:7c814979a859 703 for(int i=15; i<30; i++) {
GiJeongKim 0:7c814979a859 704 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 705 }
GiJeongKim 0:7c814979a859 706
GiJeongKim 0:7c814979a859 707 eeprom_cs=1;
GiJeongKim 0:7c814979a859 708 }
GiJeongKim 0:7c814979a859 709
GiJeongKim 0:7c814979a859 710 void spi_eeprom_read_long_9(unsigned int add){
GiJeongKim 0:7c814979a859 711 eeprom_cs=0;
GiJeongKim 0:7c814979a859 712 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 713 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 714 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 715
GiJeongKim 0:7c814979a859 716 for(int i=30; i<45; i++) {
GiJeongKim 0:7c814979a859 717 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 718 }
GiJeongKim 0:7c814979a859 719
GiJeongKim 0:7c814979a859 720 eeprom_cs=1;
GiJeongKim 0:7c814979a859 721 }
GiJeongKim 0:7c814979a859 722
GiJeongKim 0:7c814979a859 723 void spi_eeprom_read_long_10(unsigned int add){
GiJeongKim 0:7c814979a859 724 eeprom_cs=0;
GiJeongKim 0:7c814979a859 725 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 726 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 727 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 728
GiJeongKim 0:7c814979a859 729 for(int i=45; i<60; i++) {
GiJeongKim 0:7c814979a859 730 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 731 }
GiJeongKim 0:7c814979a859 732
GiJeongKim 0:7c814979a859 733 eeprom_cs=1;
GiJeongKim 0:7c814979a859 734 }
GiJeongKim 0:7c814979a859 735
GiJeongKim 0:7c814979a859 736 void spi_eeprom_read_long_11(unsigned int add){
GiJeongKim 0:7c814979a859 737 eeprom_cs=0;
GiJeongKim 0:7c814979a859 738 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 739 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 740 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 741
GiJeongKim 0:7c814979a859 742 for(int i=60; i<75; i++) {
GiJeongKim 0:7c814979a859 743 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 744 }
GiJeongKim 0:7c814979a859 745
GiJeongKim 0:7c814979a859 746 eeprom_cs=1;
GiJeongKim 0:7c814979a859 747 }
GiJeongKim 0:7c814979a859 748
GiJeongKim 0:7c814979a859 749 void spi_eeprom_read_long_12(unsigned int add){
GiJeongKim 0:7c814979a859 750 eeprom_cs=0;
GiJeongKim 0:7c814979a859 751 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 752 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 753 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 754
GiJeongKim 0:7c814979a859 755 for(int i=75; i<90; i++) {
GiJeongKim 0:7c814979a859 756 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 757 }
GiJeongKim 0:7c814979a859 758
GiJeongKim 0:7c814979a859 759 eeprom_cs=1;
GiJeongKim 0:7c814979a859 760 }
GiJeongKim 0:7c814979a859 761
GiJeongKim 0:7c814979a859 762 void spi_eeprom_read_long_13(unsigned int add){
GiJeongKim 0:7c814979a859 763 eeprom_cs=0;
GiJeongKim 0:7c814979a859 764 eeprom.write(0x03);
GiJeongKim 0:7c814979a859 765 eeprom.write(0xff&((add)>>8));
GiJeongKim 0:7c814979a859 766 eeprom.write(0xff&(add));
GiJeongKim 0:7c814979a859 767
GiJeongKim 0:7c814979a859 768 for(int i=90; i<100; i++) {
GiJeongKim 0:7c814979a859 769 JOINT_VEL[i] = spi_eeprom_read() ;
GiJeongKim 0:7c814979a859 770 }
GiJeongKim 0:7c814979a859 771
GiJeongKim 0:7c814979a859 772 VALVE_MAX_POS = spi_eeprom_read();
GiJeongKim 0:7c814979a859 773 VALVE_MIN_POS = spi_eeprom_read();
GiJeongKim 0:7c814979a859 774 //DDV_CENTER = (float) (flashReadInt(Rom_Sector, RID_DDV_CENTER)) * 0.1f;
GiJeongKim 0:7c814979a859 775 VALVE_POS_NUM = spi_eeprom_read();
GiJeongKim 0:7c814979a859 776
GiJeongKim 0:7c814979a859 777 K_SPRING = spi_eeprom_read();
GiJeongKim 0:7c814979a859 778 D_DAMPER = spi_eeprom_read();
GiJeongKim 0:7c814979a859 779
GiJeongKim 0:7c814979a859 780 eeprom_cs=1;
GiJeongKim 0:7c814979a859 781 }