aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-06-04 17:10:23 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-06-04 17:10:23 +0300
commit04ae63e2b4f59eb350890ad8ca508e61df074d68 (patch)
tree7447c2a026f0e7fac92c5e81feeb03971751f375 /Software/Embedded_SW
parent46f46d91c521e66c203b31110a21b94024b2166d (diff)
parent4be8df6d96e46f75834752f54e50dcdb71faa002 (diff)
downloadTango-04ae63e2b4f59eb350890ad8ca508e61df074d68.tar.gz
Tango-04ae63e2b4f59eb350890ad8ca508e61df074d68.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h3
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h20
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c36
3 files changed, 58 insertions, 1 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index ecd04b742..c5371b413 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -47,6 +47,9 @@ extern bool Special_Dispensers;
#define ON 1
#define OFF 0
+#define INTERNAL 0
+#define EXTERNAL 1
+
enum
{
PASSED = 0,
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
index 4a5b14a5d..abbbd1429 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
@@ -700,7 +700,10 @@
#define F3_SPARE2_ROTENC_DATA_p_2_RX_msb (*((volatile short *)(FPGA3_BASE | 0x2D2))) //16 bit MSB if nessesary
#define F3_SPARE2_ROTENC_DATA_p_2_TX (*((volatile short *)(FPGA3_BASE | 0x2DE))) //This register triggers a TX transmission
-#define F3_Moto_Driver_SPI_DIRECTION1 (*((volatile short *)(FPGA3_BASE | 0x380))) //
+//Control the motors clock source due to EMC issues
+#define F3_MOTO_CLK_SRC_SEL (*((volatile short *)(FPGA3_BASE | 0x370))) //bit that control motors source selects 32Mhz or low
+
+#define F3_Moto_Driver_SPI_DIRECTION1 (*((volatile short *)(FPGA3_BASE | 0x380))) //This bit control of the direction of SDIO 0-4
//PWM LEDS FPGA VER 050219
#define F3_low_var_LED1 (*((volatile short *)(FPGA3_BASE | 0x390))) //Parameter for prescaler divisions - 8bit low duty cycle value for pmw
@@ -1770,6 +1773,21 @@ typedef union
unsigned short ushort;
}F3_SPI_DIRECTION1;
+//F3_MOTO_CLK_SRC_SEL
+typedef union
+{
+ struct
+ {
+ bool RDRIVING : 1; //0 (MOTO_CLK1_2)
+ bool LDRIVING : 1; //1 (MOTO_CLK2_1)
+ bool SCREW : 1; //2 (MOTO_CLK5_1)
+ bool WINDER : 1; //3 (MOTO_CLK5_2)
+ uint16_t RESERVE : 12; //4-16
+ }Motor;
+ unsigned short ushort;
+}F3MotoClkSrcSel;
+
+F3MotoClkSrcSel F3_Moto_Clk_Src_Sel;
//L6470_MOSI = 0x00;
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
index 2ff84c4a6..6a51d8e10 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c
@@ -72,6 +72,12 @@ uint32_t MotorsInit(void)
MotorConfigState[i] = false;
}
+ //option to change itafter initialization (to solve EMC issues) in the function Control_motors_clock_source
+ F3_Moto_Clk_Src_Sel.Motor.LDRIVING = EXTERNAL;
+ F3_Moto_Clk_Src_Sel.Motor.RDRIVING = EXTERNAL;
+ F3_Moto_Clk_Src_Sel.Motor.SCREW = EXTERNAL;
+ F3_Moto_Clk_Src_Sel.Motor.WINDER = EXTERNAL;
+ F3_MOTO_CLK_SRC_SEL = F3_Moto_Clk_Src_Sel.ushort;
return OK;
}
@@ -599,3 +605,33 @@ void test_Home_Pos()
}
*/
}
+
+/* no need can be done with stub directly to the fpga address
+uint32_t Control_motors_clock_source(TimerMotors_t motorId, bool Inetrnal_Or_External)// INTERNAL / EXTERNAL
+{
+ uint32_t Status = OK;
+ switch(motorId)
+ {
+ case HARDWARE_MOTOR_TYPE__MOTO_RDRIVING:
+ F3_Moto_Clk_Src_Sel.Motor.RDRIVING = Inetrnal_Or_External;
+ break;
+ case HARDWARE_MOTOR_TYPE__MOTO_LDRIVING:
+ F3_Moto_Clk_Src_Sel.Motor.LDRIVING = Inetrnal_Or_External;
+ break;
+ case HARDWARE_MOTOR_TYPE__MOTO_SCREW:
+ F3_Moto_Clk_Src_Sel.Motor.SCREW = Inetrnal_Or_External;
+ break;
+ case HARDWARE_MOTOR_TYPE__MOTO_WINDER:
+ F3_Moto_Clk_Src_Sel.Motor.WINDER = Inetrnal_Or_External;
+ break;
+ default:
+ Status = ERROR;
+ break;
+ }
+
+ F3_MOTO_CLK_SRC_SEL = F3_Moto_Clk_Src_Sel.ushort;
+
+ return Status;
+}
+*/
+