aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2019-08-01 17:22:53 +0300
committerAvi Levkovich <avi@twine-s.com>2019-08-01 17:22:53 +0300
commit42471da0b2a19c964fc2c3df39cc2e8a6aaf5e2e (patch)
treefe233e51157d3d17a2eafe85f93df0b8b865826e /Software/Embedded_SW
parent293cca91ee3737b47424d1f7febd9dca8b0a9c03 (diff)
downloadTango-42471da0b2a19c964fc2c3df39cc2e8a6aaf5e2e.tar.gz
Tango-42471da0b2a19c964fc2c3df39cc2e8a6aaf5e2e.zip
update the new FPGA (17.6.19) addresses and the function Change_Motor_SPI_Direction
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Container.c9
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h5
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h7
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c124
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h2
7 files changed, 81 insertions, 70 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c
index 86e1b06c4..a920aa5b8 100644
--- a/Software/Embedded_SW/Embedded/Communication/Container.c
+++ b/Software/Embedded_SW/Embedded/Communication/Container.c
@@ -53,12 +53,11 @@
/*uint16_t TxmsgId[MAX_CONT_LOG+1] = {0};
uint16_t TxLength[MAX_CONT_LOG+1] = {0};
uint32_t TxAddr[MAX_CONT_LOG+1] = {0};
-uint16_t Txindex = 0;
+uint16_t Txindex = 0;*/
uint32_t msgId[MAX_CONT_LOG+1] = {0};
uint32_t Length[MAX_CONT_LOG+1] = {0};
uint32_t DataLength[MAX_CONT_LOG+1] = {0};
-byte RxIndex = 0;*/
-
+byte RxIndex = 0;
MessageContainer createContainer(MessageType type, char* token, protobuf_c_boolean completed, void* response, size_t (*packPtr)(void*, uint8_t*), size_t (*sizePtr)(void*))
{
@@ -137,11 +136,11 @@ void receive_callback(char* buffer, size_t length)
REPORT_MSG(requestContainer->type,"Message received");
}
KeepAliveOneSecondCounter = 0;
- /*msgId[RxIndex] = requestContainer->type;
+ msgId[RxIndex] = requestContainer->type;
Length[RxIndex] = length;
DataLength[RxIndex] = msec_millisecondCounter;
if (RxIndex++>=MAX_CONT_LOG)
- RxIndex = 0;*/
+ RxIndex = 0;
switch(requestContainer->type)
{
case MESSAGE_TYPE__CalculateRequest:
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index 768538971..0abb4bac3 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -152,6 +152,11 @@ typedef enum
Voltage = 0x00,
}MOTDRIVER_MODE;
+typedef enum
+{
+ Combinrd = 0x00,
+ Current_Or_Voltage = 0x01,
+}SPI_MOT_DRIVER_DIRECTION;
typedef enum
{
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
index 65803ba6e..ab73637f8 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
@@ -270,6 +270,9 @@
#define F1_MOTO_LPIVOT1_A1_RX_01 (*((volatile short *)(FPGA1_BASE | 0x306))) //The 16 Lsb bits of the shifted in data.
#define F1_MOTO_LPIVOT1_A1_WORDS (*((volatile short *)(FPGA1_BASE | 0x308))) //The amount of spi words (usually byte sized) per transmission.
+#define F1_Moto_Driver_SPI_DIRECTION1 (*((volatile short *)(FPGA1_BASE | 0x380))) //
+#define F1_Moto_Driver_SPI_DIRECTION2 (*((volatile short *)(FPGA1_BASE | 0x390))) //
+
//FPGA VER 050219
#define F1_gpo_cnt_A_reg (*((volatile short *)(FPGA1_BASE | 0x3B0))) //This Register stores the costumer Tacho counter A to A ( F1_gpo_cnt_A_reg must be greater than 1 => F1_gpo_cnt_A_reg>=1)
@@ -376,6 +379,8 @@
//Watchdog
#define F2_Watchdog_reg (*((volatile short *)(FPGA2_BASE | 0x140)))//Watchdog enable bit, watchdog value
+#define F2_Moto_Driver_SPI_DIRECTION1 (*((volatile short *)(FPGA2_BASE | 0x150))) //
+
//read SSR1 - SSR9
#define F2_CTRL_bus1_reg (*((volatile short *)(FPGA2_BASE | 0x170))) //This Register stores the ssr with n_heater_wd_expire value - read of the value of SSR1 - SSR9
@@ -695,6 +700,8 @@
#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))) //
+
//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
#define F3_high_var_LED1 (*((volatile short *)(FPGA3_BASE | 0x392))) //Parameter for prescaler divisions - 8bit high duty cycle value for pmw
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
index 07625d314..8ad5e7762 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
@@ -103,7 +103,7 @@ static FpgaMotMap_t FpgaMotMap[NUM_OF_MOTORS] =
//MOTOR_SPARE2_2 - Spare
{&F3_MOTO_SPARE2_2_A1_TX_00, &F3_MOTO_SPARE2_2_A1_TX_01, &F3_MOTO_SPARE2_2_A1_RX_00 ,&F3_MOTO_SPARE2_2_A1_RX_01 ,&F3_MOTO_SPARE2_2_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D},
//MOTOR_SPARE3_1 - Spare
- {&F3_MOTO_SPARE3_1_A1_TX_00, &F3_MOTO_SPARE3_1_A1_TX_01, &F3_MOTO_SPARE3_1_A1_RX_00 ,&F3_MOTO_SPARE3_1_A1_RX_01 ,&F3_MOTO_SPARE3_1_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D},
+ //{&F3_MOTO_SPARE3_1_A1_TX_00, &F3_MOTO_SPARE3_1_A1_TX_01, &F3_MOTO_SPARE3_1_A1_RX_00 ,&F3_MOTO_SPARE3_1_A1_RX_01 ,&F3_MOTO_SPARE3_1_A1_WORDS ,&F3_Moto_Driver_NBUSY1_D, &F3_SPI_Busy1_D},
};
@@ -154,50 +154,46 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i)
{
uint32_t status = OK;
- MotorDriverResponse[i].DriverType = UnKnownMotDriver;
- uint8_t counter = 0;
+ //First communicate with powerSTEP01
+ Read_Motors_Driver_ADC(i);
- do
+ if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24)
{
- counter = counter++;
-
+ MotorDriverResponse[i].DriverType = CombinrdMotDriver;
+ //default for dispensers, dryer-LID and DH-LID Voltage mode, for other motors Current mode
+ if(((i >= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1) && (i <= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8)) || (i == HARDWARE_MOTOR_TYPE__MOTO_DH_LID) || (i == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID))
+ MotorDriverResponse[i].DriverMode = Voltage;
+ else
+ MotorDriverResponse[i].DriverMode = Current;
+ }
+ else
+ {
+ //Change the SPI direction and check if this driver is Current or Voltage
+ Change_Motor_SPI_Direction(i,Current_Or_Voltage);
+ delayms(5);
Read_Motors_Driver_ADC(i);
- if(MotorDriverResponse[i].ADC < 14)
+ if((MotorDriverResponse[i].ADC >= 9) && (MotorDriverResponse[i].ADC < 13))
{
MotorDriverResponse[i].DriverType = CurrentMotDriver; //(L6472, ADC = 11)
MotorDriverResponse[i].DriverMode = Current;
}
else
- if((MotorDriverResponse[i].ADC >= 14) && (MotorDriverResponse[i].ADC < 20))
+ if((MotorDriverResponse[i].ADC >= 15) && (MotorDriverResponse[i].ADC < 19))
{
MotorDriverResponse[i].DriverType = VoltageMotDriver; //(L6470, ADC = 17)
MotorDriverResponse[i].DriverMode = Voltage;
}
else
- if(MotorDriverResponse[i].ADC >= 20) // //(powerSTEP01, ADC = 24)
- {
- MotorDriverResponse[i].DriverType = CombinrdMotDriver;
- //default for dispensers- Voltage mode, for other motors Current mode
- if((i >= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1) && (i <= HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8))
- MotorDriverResponse[i].DriverMode = Voltage;
- else
- MotorDriverResponse[i].DriverMode = Current;
- }
- else
{
- Change_Motor_SPI_Direction(i);
- delayms(5);
-
+ //UnKnownMotDriver
+ MotorDriverResponse[i].DriverType = UnKnownMotDriver;
+ LOG_ERROR (i, "Unable to recognize the motor's driver type");
+ status = ERROR;
}
}
- while((counter < 2) && (MotorDriverResponse[i].DriverType == UnKnownMotDriver));
- if(MotorDriverResponse[i].DriverType == UnKnownMotDriver)
- {
- status = ERROR;
- }
return status;
}
@@ -1669,148 +1665,150 @@ int SPIGetFPGAResponse(TEMPERATURE_SENSOR_ID_ENUM SensorId,uint32_t *Data) //re
return Status;
}
////////////////////////////////////////////////////////////////
-
+/*
//temporary till the FPGA change:
unsigned short F1_Moto_Driver_SPI_DIRECTION1 = 0;
unsigned short F1_Moto_Driver_SPI_DIRECTION2 = 0;
unsigned short F2_Moto_Driver_SPI_DIRECTION1 = 0;
unsigned short F3_Moto_Driver_SPI_DIRECTION1 = 0;
+*/
+F1_SPI_DIRECTION1 F1_SPI_Direction1;
+F1_SPI_DIRECTION2 F1_SPI_Direction2;
+F2_SPI_DIRECTION1 F2_SPI_Direction1;
+F3_SPI_DIRECTION1 F3_SPI_Direction1;
-void Change_Motor_SPI_Direction(TimerMotors_t _motorId)
+void Change_Motor_SPI_Direction(TimerMotors_t _motorId, SPI_MOT_DRIVER_DIRECTION Spi_Direction)
{
- F1_SPI_DIRECTION1 F1_SPI_Direction1;
- F1_SPI_DIRECTION2 F1_SPI_Direction2;
- F2_SPI_DIRECTION1 F2_SPI_Direction1;
- F3_SPI_DIRECTION1 F3_SPI_Direction1;
+/*
//read direction registers
F1_SPI_Direction1.ushort = F1_Moto_Driver_SPI_DIRECTION1;
F1_SPI_Direction2.ushort = F1_Moto_Driver_SPI_DIRECTION2;
F2_SPI_Direction1.ushort = F2_Moto_Driver_SPI_DIRECTION1;
F3_SPI_Direction1.ushort = F3_Moto_Driver_SPI_DIRECTION1;
-
+*/
//change direction
switch(_motorId)
{
case HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD:
//MOTOR_DH_CLEANHEAD - Cleaning head motor
- F1_SPI_Direction1.bits.F1_MOTO_DH_CLEANHEAD ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DH_CLEANHEAD = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH:
//MOTOR_DH_CLEANMECH - Cleaning mechanism
- F1_SPI_Direction1.bits.F1_MOTO_DH_CLEANMECH ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DH_CLEANMECH = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DH_LID:
//MOTOR_DH_LID - Dyeing head lid
- F1_SPI_Direction1.bits.F1_MOTO_DH_LID ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DH_LID = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING:
//MOTOR_DRYER_DRIVING - Dryer main motor
- F1_SPI_Direction1.bits.F1_MOTO_DRYER_DRIVING ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DRYER_DRIVING = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID:
//MOTOR_DRYER_LID - Drier lid
- F1_SPI_Direction1.bits.F1_MOTO_DRYER_LID ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DRYER_LID = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM:
//MOTOR_DRYER_LOADARM - Drier thread loading arm
- F1_SPI_Direction1.bits.F1_MOTO_DRYER_LOADARM ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_DRYER_LOADARM = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1:
//MOTOR_DISPENSER_1 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_1 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_1 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_2:
//MOTOR_DISPENSER_2 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_2 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_2 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_3:
//MOTOR_DISPENSER_3 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_3 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_3 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_4:
//MOTOR_DISPENSER_4 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_4 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_4 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_5:
//MOTOR_DISPENSER_5 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_5 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_5 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_6:
//MOTOR_DISPENSER_6 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_6 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_6 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_7:
//MOTOR_DISPENSER_7 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_7 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_7 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8:
//MOTOR_DISPENSER_8 - Dispenser
- F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_8 ^= 1;
+ F2_SPI_Direction1.bits.F2_MOTO_DISPENSER_8 = Spi_Direction;
case HARDWARE_MOTOR_TYPE__MOTO_SCREW:
//MOTOR_SCREW - Winder screw
- F1_SPI_Direction2.bits.F1_MOTO_SCREW ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_SCREW = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_WINDER:
//MOTOR_WINDER - Winder
- F1_SPI_Direction2.bits.F1_MOTO_WINDER ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_WINDER = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_LDANCER1:
//MOTOR_LDANCER1 -Pooler Dancer adjustment
- F1_SPI_Direction1.bits.F1_MOTO_LDANCER1 ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_LDANCER1 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_LDANCER2:
//MOTOR_LDANCER2 - Winder Dancer adjustment #1
- F1_SPI_Direction1.bits.F1_MOTO_LDANCER2 ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_LDANCER2 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_LDRIVING:
//MOTOR_LDRIVING - Pooler:
- F1_SPI_Direction1.bits.F1_MOTO_LDRIVING ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_LDRIVING = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_LLOADING:
//MOTOR_LLOADING - Pooler loading
- F1_SPI_Direction1.bits.F1_MOTO_LLOADING ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_LLOADING = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_LPIVOT1:
//MOTOR_LPIVOT1 - Pooler loading pivot arm
- F1_SPI_Direction1.bits.F1_MOTO_LPIVOT1 ^= 1;
+ F1_SPI_Direction1.bits.F1_MOTO_LPIVOT1 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_RDANCER:
//MOTOR_RDANCER - Feeder dancer adjustment:
- F1_SPI_Direction2.bits.F1_MOTO_RDANCER ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_RDANCER = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_RDRIVING:
//MOTOR_RDRIVING - Feeder:
- F1_SPI_Direction2.bits.F1_MOTO_RDRIVING ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_RDRIVING = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_RLOADARM:
//MOTOR_RLOADARM - Right loading arm:
- F1_SPI_Direction2.bits.F1_MOTO_RLOADARM ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_RLOADARM = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_RLOADING:
//MOTOR_RLOADING - Right Loading
- F1_SPI_Direction2.bits.F1_MOTO_RLOADING ^= 1;
+ F1_SPI_Direction2.bits.F1_MOTO_RLOADING = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_SPARE1_1:
//MOTOR_RLOADING - Right Loading
- F3_SPI_Direction1.bits.F3_MOTO_SPARE1_1 ^= 1;
+ F3_SPI_Direction1.bits.F3_MOTO_SPARE1_1 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_SPARE1_2:
//MOTOR_RLOADING - Right Loading
- F3_SPI_Direction1.bits.F3_MOTO_SPARE1_2 ^= 1;
+ F3_SPI_Direction1.bits.F3_MOTO_SPARE1_2 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_SPARE2_1:
//MOTOR_RLOADING - Right Loading
- F3_SPI_Direction1.bits.F3_MOTO_SPARE2_1 ^= 1;
+ F3_SPI_Direction1.bits.F3_MOTO_SPARE2_1 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_SPARE2_2:
//MOTOR_RLOADING - Right Loading
- F3_SPI_Direction1.bits.F3_MOTO_SPARE2_2 ^= 1;
+ F3_SPI_Direction1.bits.F3_MOTO_SPARE2_2 = Spi_Direction;
break;
case HARDWARE_MOTOR_TYPE__MOTO_SPARE3_1:
//MOTOR_RLOADING - Right Loading
- F3_SPI_Direction1.bits.F3_MOTO_SPARE3_1 ^= 1;
+ F3_SPI_Direction1.bits.F3_MOTO_SPARE3_1 = Spi_Direction;
break;
default:
break;
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h
index 40dbe3948..366485c95 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h
@@ -42,7 +42,7 @@ void FPGA_SetMotHome(TimerMotors_t _motorId);
extern SPI Fpga_Spi[NUM_OF_MOTORS];
void FPGA_SetGoToPosition(TimerMotors_t _motorId);//GoTo
-void Change_Motor_SPI_Direction(TimerMotors_t _motorId);
+void Change_Motor_SPI_Direction(TimerMotors_t _motorId, SPI_MOT_DRIVER_DIRECTION Spi_Direction);
void FPGA_SetMotPowerStwp01GateCfg(TimerMotors_t _motorId);
void FPGA_SetGoToDirPosition(TimerMotors_t _motorId);//GoTo_DIR command
diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c
index c58be6664..4f644bc90 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c
@@ -94,6 +94,7 @@ static FATFS g_sFatFs;
char FlashReadstring [35];
char FlashReadstring1 [35];
+extern Semaphore_Handle FFS_Sem;
FRESULT Init_Flash_File_System(bool Need_mkfs)
{
@@ -105,6 +106,7 @@ FRESULT Init_Flash_File_System(bool Need_mkfs)
//in C:\TI\TivaWare_C_Series-2.1.2.111\third_party\fatfs\src\ffconf.h
#endif
+ Semaphore_post(FFS_Sem);
// Mount the file system, using logical disk 0.
iFResult = f_mount(0, &g_sFatFs);
if(iFResult != FR_OK)
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
index 0c547142c..ee64fb9d8 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
@@ -21,7 +21,7 @@
//#define NUM_OF_MOTORS (HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1) // TODO After the integration with mulbery change to:
-#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE3_1+1
+#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE2_2+1
#define MINIMAL_MOTOR_SPEED 0.2
//typedef enum