Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: i2c_mbed_fpga.cpp
- Revision:
- 9:76a0b9f29a2d
- Parent:
- 8:2554218db1e6
- Child:
- 10:a8390614edcc
--- a/i2c_mbed_fpga.cpp Tue Jan 26 11:13:25 2021 +0000
+++ b/i2c_mbed_fpga.cpp Fri Feb 26 08:45:13 2021 +0000
@@ -57,14 +57,14 @@
/** i2c enter key to open I2C window
*/
int i2c_mbed_fpga::i2c_window_open(){
- char i2cKey[4] = {0x13, 0xA4, 0xD0, 0xD0};
+ char i2cKey[4] = {0x13, 0xFA, 0xD0, 0xD0};
return i2c_word_write(i2cKey);
}
/** i2c enter key to Start the motor
*/
int i2c_mbed_fpga::i2c_motor_start(){
- char i2cKey[4] = {0x13, 0xA4, 0xCA, 0xFE};
+ char i2cKey[4] = {0x13, 0xFA, 0xCA, 0xFE};
return i2c_word_write(i2cKey);
}
@@ -74,8 +74,8 @@
nv_positin_val &= ~NV_POSITION_PULSE_TIME_MASK;
nv_positin_val |= ((exponent_3b << 2) | mantisaa_2b) << NV_POSITION_PULSE_TIME_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -87,8 +87,8 @@
nv_positin_val &= ~NV_POSITION_DUTY_MASK;
nv_positin_val |= duty_2b << NV_POSITION_DUTY_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -100,8 +100,8 @@
nv_positin_val &= ~NV_POSI_MAJO_VOTE_MASK;
nv_positin_val |= maj_1b << NV_POSI_MAJO_VOTE_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -113,8 +113,8 @@
nv_positin_val &= ~NV_ANTI_COG_MASK;
nv_positin_val |= cog_1b << NV_ANTI_COG_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -127,8 +127,8 @@
nv_start_up_val &= ~NV_START_UP_TIME_MASK;
nv_start_up_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_START_UP_TIME_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -140,8 +140,8 @@
nv_start_up_val &= ~NV_START_DUTY_MASK;
nv_start_up_val |= duty_2b << NV_START_DUTY_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -153,8 +153,8 @@
nv_start_up_val &= ~NV_COMM_START_NUM_MASK;
nv_start_up_val |= comm << NV_COMM_START_NUM_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
return i2c_word_safe_write(i2cMessage);
@@ -173,20 +173,20 @@
nv_wind_brake_val &= ~NV_SOFT_NUM_STEP_MASK;
nv_wind_brake_val |= num_steps << NV_SOFT_NUM_STEP_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
- *(i2cMessage+0) = (char)(NV_WIND_BRAKE >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_WIND_BRAKE >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_WIND_BRAKE >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_WIND_BRAKE >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_wind_brake_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_wind_brake_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
@@ -203,14 +203,14 @@
nv_positin_val &= ~NV_FIRST_NON_FLAT_TIME_MASK;
nv_positin_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_FIRST_NON_FLAT_TIME_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
@@ -227,17 +227,50 @@
nv_positin_val &= ~NV_FIRST_NON_FLAT_TIME_MASK;
nv_positin_val |= ((exponent_3b << 3) | mantisaa_3b) << NV_FIRST_NON_FLAT_TIME_OFFSET;
char i2cMessage[4];
- *(i2cMessage+0) = (char)(NV_POSITION >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_POSITION >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_POSITION >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_POSITION >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_positin_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_positin_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
- *(i2cMessage+0) = (char)(NV_START_UP >> 8)& 0xff;
- *(i2cMessage+1) = (char)(NV_START_UP >> 0)& 0xff;
+ *(i2cMessage+0) = (char)(NVADDR_NV_START_UP >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_START_UP >> 0)& 0xff;
*(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
*(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
ack += i2c_word_safe_write(i2cMessage);
return ack;
-}
\ No newline at end of file
+}
+
+/** i2c to set the open loop mode
+*/
+int i2c_mbed_fpga::i2c_set_loop_mode(unsigned int openloop){
+ int ack = 0;
+ nv_spd_control_1_val &= ~NV_SPD_LOOP_MODE_MASK;
+ nv_spd_control_1_val |= openloop << NV_SPD_LOOP_MODE_OFFSET;
+ char i2cMessage[4];
+ *(i2cMessage+0) = (char)(NVADDR_NV_SPD_CTRL_1 >> 8)& 0xff;
+ *(i2cMessage+1) = (char)(NVADDR_NV_SPD_CTRL_1 >> 0)& 0xff;
+ *(i2cMessage+2) = (char)(nv_spd_control_1_val >> 8)& 0xff;
+ *(i2cMessage+3) = (char)(nv_spd_control_1_val >> 0)& 0xff;
+ ack += i2c_word_safe_write(i2cMessage);
+
+ return ack;
+}
+
+/** i2c to set the Single Pulse Start Up (pulse train)
+*/
+int i2c_mbed_fpga::i2c_set_open_loop_duty(unsigned int duty){
+ int ack = 0;
+ nv_start_up_val = duty;
+ char i2cMessage[4];
+ *(i2cMessage+0) = (char)(0x10)& 0xff;
+ *(i2cMessage+1) = (char)(0x3e)& 0xff;
+ *(i2cMessage+2) = (char)(nv_start_up_val >> 8)& 0xff;
+ *(i2cMessage+3) = (char)(nv_start_up_val >> 0)& 0xff;
+ ack += i2c_word_safe_write(i2cMessage);
+
+
+
+ return ack;
+}
