Kim GiJeong
/
try8_spi_EEPROM_test
eeprom test
Diff: main.cpp
- Revision:
- 0:7c814979a859
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jul 17 05:34:38 2020 +0000 @@ -0,0 +1,781 @@ +#include "mbed.h" +// For EEPROM, 최대 16byte 씩 쓸 수 있음 +// M95128-WMN6P + +// Board Information +uint8_t BNO = 0; +uint8_t CONTROL_MODE = 0; +uint8_t OPERATING_MODE = 0; // (00 : Moog & Rot, 01 : Moog & Lin, 10 : KNR & Rot, 11 : KNR & Lin, 101 : SW & Lin) +uint8_t SENSING_MODE = 0; // (0 : torque, 1: pressure) +uint8_t CONTROL_UTILITY_MODE = 0; +uint8_t CURRENT_CONTROL_MODE = 0; // (0 : pwm, 1 : current control) +uint8_t FLAG_VALVE_DEADZONE = 0; +uint8_t REFERENCE_MODE = 0; +int16_t CAN_FREQ = 500; +int16_t DIR_JOINT_ENC = 0; +int16_t DIR_VALVE = 0; +int16_t DIR_VALVE_ENC = 0; + +float SUPPLY_VOLTAGE = 12.0f; +float VALVE_VOLTAGE_LIMIT = 12.0f; //v + +float P_GAIN_VALVE_POSITION = 0.0f; +float I_GAIN_VALVE_POSITION= 0.0f; +float D_GAIN_VALVE_POSITION= 0.0f; +float P_GAIN_JOINT_POSITION = 0.0f; +float I_GAIN_JOINT_POSITION = 0.0f; +float D_GAIN_JOINT_POSITION = 0.0f; +float P_GAIN_JOINT_TORQUE = 0.0f; +float I_GAIN_JOINT_TORQUE = 0.0; +float D_GAIN_JOINT_TORQUE = 0.0; + +int16_t K_SPRING = 0.0; +int16_t D_DAMPER = 12.0; +int16_t flag_delay_test = 0; + +//float P_GAIN_VALVE_POSITION_OPP = 0.0f; +//float I_GAIN_VALVE_POSITION_OPP= 0.0f; +//float D_GAIN_VALVE_POSITION_OPP= 0.0f; +//float P_GAIN_JOINT_POSITION_OPP = 0.0f; +//float I_GAIN_JOINT_POSITION_OPP = 0.0f; +//float D_GAIN_JOINT_POSITION_OPP = 0.0f; +//float P_GAIN_JOINT_TORQUE_OPP = 0.0f; +//float I_GAIN_JOINT_TORQUE_OPP = 0.0; +//float D_GAIN_JOINT_TORQUE_OPP = 0.0; + +float VALVE_DEADZONE_PLUS; +float VALVE_DEADZONE_MINUS; + +int16_t VELOCITY_COMP_GAIN; +int16_t COMPLIANCE_GAIN; + +int16_t VALVE_CENTER; + +int16_t VALVE_FF; + +int16_t BULK_MODULUS; + +int16_t CHAMBER_VOLUME_A; +int16_t CHAMBER_VOLUME_B; + +int16_t PISTON_AREA_A; +int16_t PISTON_AREA_B; +float PISTON_AREA_alpha; +float alpha3 = 1.0f; + + +int16_t PRES_SUPPLY; +int16_t PRES_RETURN; + +int16_t ENC_LIMIT_PLUS; +int16_t ENC_LIMIT_MINUS; + +int16_t STROKE; + + +//int16_t VALVE_LIMIT_PLUS; +//int16_t VALVE_LIMIT_MINUS; + +float ENC_PULSE_PER_POSITION; +float TORQUE_SENSOR_PULSE_PER_TORQUE; +float PRES_SENSOR_A_PULSE_PER_BAR = 4096.0f / 200.0f; +float PRES_SENSOR_B_PULSE_PER_BAR = 4096.0f / 200.0f; + +int HOMEPOS_OFFSET; +int HOMEPOS_VALVE_OPENING; + +float FRICTION; +float REF_PERIOD; +float REF_MAG; +int REF_NUM; + + +float DAC_REF; +float DAC_RESOL; + +int REF_POSITION; +int REF_VELOCITY; +int16_t REF_TORQUE; +int16_t REF_PRES_DIFF; +int16_t REF_PWM; +int16_t REF_VALVE_POSITION; +int16_t REF_CURRENT; + +int REF_MOVE_TIME_5k; +int INIT_REF_PWM; +int INIT_REF_VALVE_POS; +int INIT_REF_POS; +int INIT_REF_VEL; +int INIT_REF_TORQUE; +int INIT_REF_PRES_DIFF; +int INIT_REF_CURRENT; + +int CUR_POSITION; +int CUR_VELOCITY; +float CUR_TORQUE; +float CUR_PRES_A; +float CUR_PRES_B; +int CUR_VALVE_POSITION; + +unsigned int TMR2_COUNT_LED1; +unsigned int TMR2_COUNT_LED2; +unsigned int TMR2_COUNT_CAN_TX = 0; +unsigned int TMR3_COUNT_TEST = 0; + +int num_err; +int flag_err[8]; +int flag_err_old[8]; +int flag_err_rt; + +int flag_ref_enable; + +int flag_data_request[5]; + +int MODE_POS_FT_TRANS = 0; + +float CUR_CURRENT_mA = 0.0f; +float CUR_PRES_A_BAR = 0.0f; +float CUR_PRES_B_BAR = 0.0f; +float CUR_TORQUE_NM = 0.0f; +float CUR_TORQUE_NM_PRESS = 0.0f; + +float PRES_A_VREF = 0.0f; +float PRES_B_VREF = 0.0f; +float TORQUE_VREF = 0.0f; + +float VALVE_PWM_RAW_FB = 0.0f; +float VALVE_PWM_RAW_FF = 0.0f; +float VALVE_PWM_RAW = 0.0f; +int VALVE_PWM_VALVE_DZ = 0; + +float VALVE_GAIN_LPM_PER_V[10]; +float VALVE_POS_VS_PWM[25]; +long JOINT_VEL[100]; + +int VALVE_MAX_POS; +int VALVE_MIN_POS; +int VALVE_POS_NUM; +float VALVE_CENTER_OFFSET; +float VALVE_DZ_MINUS_OFFSET; +float VALVE_DZ_PLUS_OFFSET; + + + +//SPI device(PB_15, PB_14, PB_13); +//DigitalOut cs(PB_12); +SPI eeprom(PB_15, PB_14, PB_13); //MOSI, MISO, SCK +DigitalOut eeprom_cs(PB_12); // Chip select +//DigitalOut check(PA_10); +Serial pc(PA_9,PA_10); +int temp1, temp2; +void spi_eeprom_ready(void); +void spi_eeprom_write(unsigned int data); +void spi_eeprom_write_long(void); +void spi_eeprom_write_long_1(unsigned int add); +void spi_eeprom_write_long_2(unsigned int add); +void spi_eeprom_write_long_3(unsigned int add); +void spi_eeprom_write_long_4(unsigned int add); +void spi_eeprom_write_long_5(unsigned int add); +void spi_eeprom_write_long_6(unsigned int add); +void spi_eeprom_write_long_7(unsigned int add); +void spi_eeprom_write_long_8(unsigned int add); +void spi_eeprom_write_long_9(unsigned int add); +void spi_eeprom_write_long_10(unsigned int add); +void spi_eeprom_write_long_11(unsigned int add); +void spi_eeprom_write_long_12(unsigned int add); +void spi_eeprom_write_long_13(unsigned int add); +unsigned int spi_eeprom_read(void); +void spi_eeprom_read_long(void); +void spi_eeprom_read_long_1(unsigned int add); +void spi_eeprom_read_long_2(unsigned int add); +void spi_eeprom_read_long_3(unsigned int add); +void spi_eeprom_read_long_4(unsigned int add); +void spi_eeprom_read_long_5(unsigned int add); +void spi_eeprom_read_long_6(unsigned int add); +void spi_eeprom_read_long_7(unsigned int add); +void spi_eeprom_read_long_8(unsigned int add); +void spi_eeprom_read_long_9(unsigned int add); +void spi_eeprom_read_long_10(unsigned int add); +void spi_eeprom_read_long_11(unsigned int add); +void spi_eeprom_read_long_12(unsigned int add); +void spi_eeprom_read_long_13(unsigned int add); + int a=0x41233212; + int b=0x32222222; + int c=0x11112222; + int d=0x11111111; + int e=0x00002222; + +int main() { + eeprom.format(8,3); + eeprom.frequency(5000000); // max freq of eeprom + spi_eeprom_write_long(); + + + while(1){ + wait(3.0f); + spi_eeprom_read_long(); + pc.printf("right=%d, ans=%d\n",b,D_DAMPER); + for(int i=90; i<100; i++) { + pc.printf("%dth right=%d, ans=%d\n",i,b,JOINT_VEL[i]); + } + for(int i=0; i<15; i++) { + pc.printf("%dth right=%d, ans=%d\n",i,a,JOINT_VEL[i]); + } + wait(10.0f); + + /* + pc.printf("a right=%d, ans=%d\n",a,BNO); + pc.printf("a right=%d, ans=%f\n",a,P_GAIN_VALVE_POSITION); + pc.printf("a right=%d, ans=%f\n",a,D_GAIN_JOINT_TORQUE); + pc.printf("b right=%d, ans=%d\n",a,VALVE_FF); + */ + /* + pc.printf("c right=%d, ans=%f\n",c,VALVE_POS_VS_PWM[11]); + pc.printf("d right=%d, ans=%d\n",d,JOINT_VEL[99]); + pc.printf("e right=%d, ans=%d\n",e,D_DAMPER); + */ + } +} + +void spi_eeprom_ready(void){ + int temp1, temp2; + do{ + eeprom_cs=0; + eeprom.write(0x06); //write enable + eeprom_cs=1; + + eeprom_cs=0; + temp1 = eeprom.write(0x05); + temp2 = eeprom.write(0x00); + eeprom_cs=1; + temp2=(temp2&(0x03))!= 0x02; + } while(temp2); // before writing or reading +} + +void spi_eeprom_write(unsigned int data){ + eeprom.write(0xff&data); + eeprom.write(0xff&(data>>8)); + eeprom.write(0xff&(data>>16)); + eeprom.write(0xff&(data>>24)); +} + +void spi_eeprom_write_long(void){ + + spi_eeprom_write_long_1(0x0000); + spi_eeprom_write_long_2(0x0100); + spi_eeprom_write_long_3(0x0200); + spi_eeprom_write_long_4(0x0300); + spi_eeprom_write_long_5(0x0400); + spi_eeprom_write_long_6(0x0500); + spi_eeprom_write_long_7(0x0600); + spi_eeprom_write_long_8(0x0700); + spi_eeprom_write_long_9(0x0800); + spi_eeprom_write_long_10(0x0900); + spi_eeprom_write_long_11(0x1000); + spi_eeprom_write_long_12(0x1100); + spi_eeprom_write_long_13(0x1200); +} + + +void spi_eeprom_write_long_1(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + spi_eeprom_write((int) BNO); // write at address, 쓸때도 4byte씩 씀 + spi_eeprom_write((int) OPERATING_MODE); + spi_eeprom_write((int) SENSING_MODE); + spi_eeprom_write((int) CURRENT_CONTROL_MODE); + spi_eeprom_write((int) FLAG_VALVE_DEADZONE); + spi_eeprom_write((int) CAN_FREQ); + spi_eeprom_write((int) DIR_JOINT_ENC); + spi_eeprom_write((int) DIR_VALVE); + spi_eeprom_write((int) DIR_VALVE_ENC); + spi_eeprom_write((int) (SUPPLY_VOLTAGE * 10.0f)); + spi_eeprom_write((int) (VALVE_VOLTAGE_LIMIT * 10.0f)); + spi_eeprom_write((int) P_GAIN_VALVE_POSITION); + spi_eeprom_write((int) I_GAIN_VALVE_POSITION); + spi_eeprom_write((int) D_GAIN_VALVE_POSITION); + spi_eeprom_write((int) P_GAIN_JOINT_POSITION); + + eeprom_cs=1; +} + +void spi_eeprom_write_long_2(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + spi_eeprom_write((int) I_GAIN_JOINT_POSITION); + spi_eeprom_write((int) D_GAIN_JOINT_POSITION); + spi_eeprom_write((int) P_GAIN_JOINT_TORQUE); + spi_eeprom_write((int) I_GAIN_JOINT_TORQUE); + spi_eeprom_write((int) D_GAIN_JOINT_TORQUE); + spi_eeprom_write((int) (VALVE_DEADZONE_PLUS * 10.0f)); + spi_eeprom_write((int) (VALVE_DEADZONE_MINUS * 10.0f)); + spi_eeprom_write((int) VELOCITY_COMP_GAIN); + spi_eeprom_write((int) COMPLIANCE_GAIN); + spi_eeprom_write((int) VALVE_CENTER); + spi_eeprom_write((int) VALVE_FF); + spi_eeprom_write((int) BNO); + spi_eeprom_write((int) CHAMBER_VOLUME_A); + spi_eeprom_write((int) CHAMBER_VOLUME_B); + spi_eeprom_write((int) PISTON_AREA_A); + + eeprom_cs=1; +} + +void spi_eeprom_write_long_3(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + spi_eeprom_write((int) PISTON_AREA_B); + spi_eeprom_write((int) PRES_SUPPLY); + spi_eeprom_write((int) PRES_RETURN); + spi_eeprom_write((int) ENC_LIMIT_MINUS); + spi_eeprom_write((int) ENC_LIMIT_PLUS); + spi_eeprom_write((int) STROKE); + //writer.write(RID_VALVE_LIMIT_MINUS,(int) VALVE_LIMIT_MINUS); + //writer.write(RID_VALVE_LIMIT_PLUS,(int) VALVE_LIMIT_PLUS); + spi_eeprom_write((int) (ENC_PULSE_PER_POSITION*10.0f)); + spi_eeprom_write((int) (TORQUE_SENSOR_PULSE_PER_TORQUE * 10000.0f)); + spi_eeprom_write((int) (PRES_SENSOR_A_PULSE_PER_BAR * 100.0f)); + spi_eeprom_write((int) (PRES_SENSOR_B_PULSE_PER_BAR * 100.0f)); + spi_eeprom_write((int) (FRICTION * 10.0f)); + spi_eeprom_write((int) HOMEPOS_OFFSET); + spi_eeprom_write((int) HOMEPOS_VALVE_OPENING); + + eeprom_cs=1; +} + +void spi_eeprom_write_long_4(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + spi_eeprom_write((int) (TORQUE_VREF * 1000.0f)); + spi_eeprom_write( (int) (PRES_A_VREF * 1000.0f)); + spi_eeprom_write((int) (PRES_B_VREF * 1000.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[0] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[2] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[4] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[6] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[8] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[1] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[3] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[5] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[7] * 100.0f)); + spi_eeprom_write((int) (VALVE_GAIN_LPM_PER_V[9] * 100.0f)); + + eeprom_cs=1; +} + +void spi_eeprom_write_long_5(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=0; i<15; i++) { + spi_eeprom_write( (int) VALVE_POS_VS_PWM[i]); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_6(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=15; i<25; i++) { + spi_eeprom_write( (int) VALVE_POS_VS_PWM[i]); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_7(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=0; i<15; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_8(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=15; i<30; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} +void spi_eeprom_write_long_9(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=30; i<45; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_10(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=45; i<60; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_11(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=60; i<75; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_12(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=75; i<90; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + eeprom_cs=1; +} + +void spi_eeprom_write_long_13(unsigned int add){ + + spi_eeprom_ready(); + eeprom_cs=0; + eeprom.write(0x02); + eeprom.write(0xff&(add>>8)); + eeprom.write(0xff&add); + + for(int i=90; i<100; i++) { + spi_eeprom_write((int) (JOINT_VEL[i] & 0xFFFFFFFF)); + } + + spi_eeprom_write((int) VALVE_MAX_POS); + spi_eeprom_write((int) VALVE_MIN_POS); + //writer.write(RID_DDV_CENTER, (int) (DDV_CENTER * 10.0f)); + spi_eeprom_write((int) VALVE_POS_NUM); + spi_eeprom_write((int) K_SPRING); + spi_eeprom_write((int) D_DAMPER); + + eeprom_cs=1; +} + +unsigned int spi_eeprom_read(void){ + int a1 = eeprom.write(0x00); + int a2 = eeprom.write(0x00); + int a3 = eeprom.write(0x00); + int a4 = eeprom.write(0x00); + unsigned int final = (a4<<24)+(a3<<16) + (a2<<8) + a1; + return final; +} + +void spi_eeprom_read_long(void){ + spi_eeprom_read_long_1(0x0000); + spi_eeprom_read_long_2(0x0100); + spi_eeprom_read_long_3(0x0200); + spi_eeprom_read_long_4(0x0300); + spi_eeprom_read_long_5(0x0400); + spi_eeprom_read_long_6(0x0500); + spi_eeprom_read_long_7(0x0600); + spi_eeprom_read_long_8(0x0700); + spi_eeprom_read_long_9(0x0800); + spi_eeprom_read_long_10(0x0900); + spi_eeprom_read_long_11(0x1000); + spi_eeprom_read_long_12(0x1100); + spi_eeprom_read_long_13(0x1200); +} + +void spi_eeprom_read_long_1(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + BNO = spi_eeprom_read(); + BNO = 1; + OPERATING_MODE = spi_eeprom_read(); + SENSING_MODE = spi_eeprom_read(); + CURRENT_CONTROL_MODE = spi_eeprom_read(); + FLAG_VALVE_DEADZONE = spi_eeprom_read(); + CAN_FREQ = spi_eeprom_read(); + DIR_JOINT_ENC = spi_eeprom_read(); + DIR_VALVE = spi_eeprom_read(); + DIR_VALVE_ENC = spi_eeprom_read(); + SUPPLY_VOLTAGE = (float) (spi_eeprom_read()) *0.1f; + VALVE_VOLTAGE_LIMIT = (float) (spi_eeprom_read()) * 0.1f; + P_GAIN_VALVE_POSITION = spi_eeprom_read(); + I_GAIN_VALVE_POSITION = spi_eeprom_read(); + D_GAIN_VALVE_POSITION = spi_eeprom_read(); + P_GAIN_JOINT_POSITION = spi_eeprom_read(); + + eeprom_cs=1; +} + +void spi_eeprom_read_long_2(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + I_GAIN_JOINT_POSITION = spi_eeprom_read(); + D_GAIN_JOINT_POSITION = spi_eeprom_read(); + P_GAIN_JOINT_TORQUE = spi_eeprom_read(); + I_GAIN_JOINT_TORQUE = spi_eeprom_read(); + D_GAIN_JOINT_TORQUE = spi_eeprom_read(); + VALVE_DEADZONE_PLUS = (float) (spi_eeprom_read()) * 0.1f; + VALVE_DEADZONE_MINUS = (float) (spi_eeprom_read()) * 0.1f; + VELOCITY_COMP_GAIN = spi_eeprom_read(); + COMPLIANCE_GAIN = spi_eeprom_read(); + VALVE_CENTER = spi_eeprom_read(); + VALVE_FF = spi_eeprom_read(); + BULK_MODULUS = spi_eeprom_read(); + CHAMBER_VOLUME_A = spi_eeprom_read(); + CHAMBER_VOLUME_B = spi_eeprom_read(); + PISTON_AREA_A = spi_eeprom_read(); + + eeprom_cs=1; +} + +void spi_eeprom_read_long_3(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + PISTON_AREA_B = spi_eeprom_read(); + PISTON_AREA_alpha = (float)PISTON_AREA_B/(float)PISTON_AREA_A; + alpha3 = PISTON_AREA_alpha * PISTON_AREA_alpha*PISTON_AREA_alpha; + PRES_SUPPLY = spi_eeprom_read(); + PRES_RETURN = spi_eeprom_read(); + ENC_LIMIT_MINUS = spi_eeprom_read(); + ENC_LIMIT_PLUS = spi_eeprom_read(); + STROKE = spi_eeprom_read(); + //VALVE_LIMIT_MINUS = flashReadInt(Rom_Sector, RID_VALVE_LIMIT_MINUS); + //VALVE_LIMIT_PLUS = flashReadInt(Rom_Sector, RID_VALVE_LIMIT_PLUS); + ENC_PULSE_PER_POSITION = (float) (spi_eeprom_read()) * 0.1f; + // ENC_PULSE_PER_POSITION = (float) 1024.0f; + TORQUE_SENSOR_PULSE_PER_TORQUE = (float) (spi_eeprom_read()) * 0.0001f; + //TORQUE_SENSOR_PULSE_PER_TORQUE = (float) 0.41928f; //for ankle + // TORQUE_SENSOR_PULSE_PER_TORQUE = (float) 10000.0f/2048.0f; //for knee + PRES_SENSOR_A_PULSE_PER_BAR = (float) (spi_eeprom_read()) * 0.01f; + // PRES_SENSOR_A_PULSE_PER_BAR = 4096.0f / 200.0f; + PRES_SENSOR_B_PULSE_PER_BAR = (float) (spi_eeprom_read()) * 0.01f; + // PRES_SENSOR_B_PULSE_PER_BAR = 4096.0f / 200.0f; + FRICTION = (float) (spi_eeprom_read()) * 0.1f; + HOMEPOS_OFFSET = spi_eeprom_read(); + HOMEPOS_VALVE_OPENING = spi_eeprom_read(); + + eeprom_cs=1; +} + +void spi_eeprom_read_long_4(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + TORQUE_VREF = (float) (spi_eeprom_read()) *0.001f; + PRES_A_VREF = (float) spi_eeprom_read() * 0.001f; + PRES_B_VREF = (float) spi_eeprom_read() * 0.001f; + VALVE_GAIN_LPM_PER_V[0] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[2] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[4] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[6] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[8] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[1] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[3] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[5] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[7] = (float) (spi_eeprom_read()) * 0.01f; + VALVE_GAIN_LPM_PER_V[9] = (float) (spi_eeprom_read()) * 0.01f; + + eeprom_cs=1; +} + +void spi_eeprom_read_long_5(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=0; i<15; i++) { + VALVE_POS_VS_PWM[i] = (float) (spi_eeprom_read()); + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_6(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=15; i<25; i++) { + VALVE_POS_VS_PWM[i] = (float) (spi_eeprom_read()); + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_7(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=0; i<15; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_8(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=15; i<30; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_9(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=30; i<45; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_10(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=45; i<60; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_11(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=60; i<75; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_12(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=75; i<90; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + eeprom_cs=1; +} + +void spi_eeprom_read_long_13(unsigned int add){ + eeprom_cs=0; + eeprom.write(0x03); + eeprom.write(0xff&((add)>>8)); + eeprom.write(0xff&(add)); + + for(int i=90; i<100; i++) { + JOINT_VEL[i] = spi_eeprom_read() ; + } + + VALVE_MAX_POS = spi_eeprom_read(); + VALVE_MIN_POS = spi_eeprom_read(); + //DDV_CENTER = (float) (flashReadInt(Rom_Sector, RID_DDV_CENTER)) * 0.1f; + VALVE_POS_NUM = spi_eeprom_read(); + + K_SPRING = spi_eeprom_read(); + D_DAMPER = spi_eeprom_read(); + + eeprom_cs=1; +} \ No newline at end of file