aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-06-04 10:00:25 +0300
committerAvi Levkovich <avi@twine-s.com>2020-06-04 10:00:25 +0300
commita66202ccbf9b79219fe5d38e4e1e12311f8c07d1 (patch)
tree590ef6a94cdead955168db01e788d6f0323b747d /Software/Embedded_SW
parentb3d574ec6a0e07a3284f2b021f82f26c20430cbb (diff)
downloadTango-a66202ccbf9b79219fe5d38e4e1e12311f8c07d1.tar.gz
Tango-a66202ccbf9b79219fe5d38e4e1e12311f8c07d1.zip
update for 19MAY2020_FPGA_Delivery (the EMC issue)
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;
+}
+*/
+