aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2019-05-16 12:32:57 +0300
committerAvi Levkovich <avi@twine-s.com>2019-05-16 12:32:57 +0300
commitef985768e4db09c305eead4e91f212ae20926c37 (patch)
tree4ccf08c452b8d557e315ce15dcdeb9eaaa414413 /Software/Embedded_SW
parentd2fe3001624ea3bb5e9d5eea9d69d6ec790ef0c0 (diff)
downloadTango-ef985768e4db09c305eead4e91f212ae20926c37.tar.gz
Tango-ef985768e4db09c305eead4e91f212ae20926c37.zip
update the screw enc logic
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c18
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
index e3eaf4547..e5a2c1cec 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
@@ -458,6 +458,7 @@ uint32_t Read_Screw_Encoder()//the value of Screw_RotEnc.Position is legal only
uint32_t status = OK;
uint16_t Save_M = 0;
+ uint16_t Save_L = 0;
SCREW_ENC_M Screw_Enc_M;
SCREW_POS Screw_Pos;
@@ -465,13 +466,18 @@ uint32_t Read_Screw_Encoder()//the value of Screw_RotEnc.Position is legal only
Screw_Enc_M.Word = F1_SCREW_ROTENC_M;;
Screw_Pos.Word.M = Screw_Enc_M.Bits.M;
Screw_Pos.Word.L = F1_SCREW_ROTENC_L;
+ //read again
Screw_Enc_M.Word = F1_SCREW_ROTENC_M;
Save_M = Screw_Enc_M.Bits.M;
+ Save_L = F1_SCREW_ROTENC_L;
if(Save_M != Screw_Pos.Word.M)
- status = ERROR;
- else
- Screw_RotEnc.Position = Screw_Pos.Position;
+ {
+ Screw_Pos.Word.M = Save_M;
+ Screw_Pos.Word.L = Save_L;
+ }
+
+ Screw_RotEnc.Position = Screw_Pos.Position;
Screw_RotEnc.Index_Counter = F1_SCREW_ROTENC_I;
@@ -479,3 +485,9 @@ uint32_t Read_Screw_Encoder()//the value of Screw_RotEnc.Position is legal only
}
+void Reset_Screw_Encoder()
+{
+ F1_SCREW_ROTENC_M = 0;
+}
+
+
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
index f225227f0..e660b450a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
@@ -20,6 +20,7 @@ void Set_Speed_Sensor_TypeII_Registers(uint32_t Counter, uint32_t Prescaler);
uint32_t Read_Speed_Sensor_TypeII();
uint32_t Read_Screw_Encoder();//the value of Screw_RotEnc.Position is legal only when the status is OK
+void Reset_Screw_Encoder();
typedef struct
{