Ben Willems / Mbed 2 deprecated MLX90418_I2C_master_bwi

Dependencies:   mbed

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; 
+}