Kim GiJeong
/
try8_spi_EEPROM_test
eeprom test
main.cpp
- Committer:
- GiJeongKim
- Date:
- 2020-07-17
- Revision:
- 0:7c814979a859
File content as of revision 0:7c814979a859:
#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; }