Funcionando: FDC eixo x y z
Dependencies: ST_INTERFACES X_NUCLEO_COMMON
Fork of X_NUCLEO_IHM01A1 by
Revision 25:1c3146315f16, committed 2016-04-07
- Comitter:
- Davidroid
- Date:
- Thu Apr 07 16:31:49 2016 +0000
- Parent:
- 24:258f0f60d30c
- Child:
- 26:fd83fecf1ef5
- Commit message:
- + StepperMotor interface updated: step-modes added, getter/setter methods for parameters removed.
Changed in this revision
--- a/Components/Interfaces/StepperMotor_class.h Fri Mar 11 15:46:34 2016 +0000
+++ b/Components/Interfaces/StepperMotor_class.h Thu Apr 07 16:31:49 2016 +0000
@@ -2,8 +2,8 @@
******************************************************************************
* @file StepperMotor_class.h
* @author Davide Aliprandi, STMicroelectronics
- * @version V1.0.0
- * @date November 12th, 2015
+ * @version V1.1.0
+ * @date April 6th, 2016
* @brief This file contains the abstract class describing the interface of a
* stepper-motor component.
******************************************************************************
@@ -60,11 +60,29 @@
*/
typedef enum
{
- BWD = 0, /* Backward. */
- FWD = 1 /* Forward. */
+ BWD = 0, /* Backward. */
+ FWD = 1 /* Forward. */
} direction_t;
/**
+ * @brief Step modes.
+ */
+ typedef enum
+ {
+ STEP_MODE_FULL = 0, /* Full-step. */
+ STEP_MODE_HALF, /* Half-step. */
+ STEP_MODE_1_4, /* 1/4 microstep. */
+ STEP_MODE_1_8, /* 1/8 microstep. */
+ STEP_MODE_1_16, /* 1/16 microstep. */
+ STEP_MODE_1_32, /* 1/32 microstep. */
+ STEP_MODE_1_64, /* 1/64 microstep. */
+ STEP_MODE_1_128, /* 1/128 microstep. */
+ STEP_MODE_1_256, /* 1/256 microstep. */
+ STEP_MODE_UNKNOWN, /* Unknown. */
+ STEP_MODE_WAVE /* Full-step one-phase-on. */
+ } step_mode_t;
+
+ /**
* @brief Getting the status.
* @param None.
* @retval The status.
@@ -72,13 +90,6 @@
virtual unsigned int GetStatus(void) = 0;
/**
- * @brief Getting a parameter.
- * @param parameter The parameter's identifier (or its register address).
- * @retval The parameter's value.
- */
- virtual float GetParameter(unsigned int parameter) = 0;
-
- /**
* @brief Getting the position.
* @param None.
* @retval The position.
@@ -134,14 +145,6 @@
*/
virtual direction_t GetDirection(void) = 0;
- /**
- * @brief Setting a parameter.
- * @param parameter The parameter's identifier (or its register address).
- * @param value The parameter's value.
- * @retval None.
- */
- virtual void SetParameter(unsigned int parameter, float value) = 0;
-
/**
* @brief Setting the current position to be the home position.
* @param None.
@@ -159,30 +162,37 @@
/**
* @brief Setting the maximum speed in pps.
* @param speed The maximum speed in pps.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetMaxSpeed(unsigned int speed) = 0;
+ virtual bool SetMaxSpeed(unsigned int speed) = 0;
/**
* @brief Setting the minimum speed in pps.
* @param speed The minimum speed in pps.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetMinSpeed(unsigned int speed) = 0;
+ virtual bool SetMinSpeed(unsigned int speed) = 0;
/**
* @brief Setting the acceleration in pps^2.
* @param acceleration The acceleration in pps^2.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetAcceleration(unsigned int acceleration) = 0;
+ virtual bool SetAcceleration(unsigned int acceleration) = 0;
/**
* @brief Setting the deceleration in pps^2.
* @param deceleration The deceleration in pps^2.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetDeceleration(unsigned int deceleration) = 0;
+ virtual bool SetDeceleration(unsigned int deceleration) = 0;
+
+ /**
+ * @brief Setting the Step Mode.
+ * @param step_mode The Step Mode.
+ * @retval "true" in case of success, "false" otherwise.
+ */
+ virtual bool SetStepMode(step_mode_t step_mode) = 0;
/**
* @brief Going to a specified position.
--- a/Components/l6474/l6474_class.h Fri Mar 11 15:46:34 2016 +0000
+++ b/Components/l6474/l6474_class.h Thu Apr 07 16:31:49 2016 +0000
@@ -167,7 +167,8 @@
* @brief Getting the value of the Status Register.
* @param None.
* @retval None.
- * @note The Status Register's flags are cleared, contrary to ReadStatusRegister().
+ * @note The Status Register's flags are cleared, contrary to the
+ * ReadStatusRegister() method.
*/
virtual unsigned int GetStatus(void)
{
@@ -176,10 +177,11 @@
/**
* @brief Getting a parameter.
- * @param parameter A parameter's register adress.
+ * @param parameter A parameter's register address.
* @retval The parameter's value.
- * @note The Status Register's flags are cleared, contrary to ReadStatusRegister().
- * parameter can be one of the following:
+ * @note The Status Register's flags are cleared, contrary to the
+ * ReadStatusRegister() method.
+ * The parameter can be one of the following:
* + L6474_ABS_POS
* + L6474_EL_POS
* + L6474_MARK
@@ -312,11 +314,11 @@
}
/**
- * @brief Setting a parameter.
- * @param parameter A parameter's register adress.
- * @param value The parameter's value.
- * @retval None.
- * @note parameter can be one of the following:
+ * @brief Setting a parameter.
+ * @param parameter A parameter's register address.
+ * @param value The parameter's value.
+ * @retval None.
+ * @note The parameter can be one of the following:
* + L6474_ABS_POS
* + L6474_EL_POS
* + L6474_MARK
@@ -345,6 +347,22 @@
* + L6474_RESERVED_REG13
* + L6474_RESERVED_REG14
* + L6474_INEXISTENT_REG
+ * @warning Some registers can only be written in particular conditions (see L6474's datasheet).
+ * Any attempt to write one of those registers when the conditions are not satisfied
+ * causes the command to be ignored and the NOTPERF_CMD flag to rise at the end of the
+ * last argument byte. Any attempt to set an inexistent register (wrong address value)
+ * causes the command to be ignored and the WRONG_CMD flag to rise.
+ * For example, setting some parameters requires first to disable the power bridge;
+ * this can be done through the SoftHiZ() method.
+ * They are the following:
+ * + L6474_EL_POS
+ * + L6474_T_FAST
+ * + L6474_TON_MIN : value in us
+ * + L6474_TOFF_MIN : value in us
+ * + L6474_ADC_OUT
+ * + L6474_STEP_MODE
+ * + L6474_CONFIG
+ * + L6474_STATUS
*/
virtual void SetParameter(unsigned int parameter, float value)
{
@@ -390,41 +408,45 @@
/**
* @brief Setting the maximum speed in pps.
* @param speed The maximum speed in pps.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetMaxSpeed(unsigned int speed)
+ virtual bool SetMaxSpeed(unsigned int speed)
{
L6474_SetMaxSpeed((unsigned int) speed);
+ return true;
}
/**
* @brief Setting the minimum speed in pps.
* @param speed The minimum speed in pps.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetMinSpeed(unsigned int speed)
+ virtual bool SetMinSpeed(unsigned int speed)
{
L6474_SetMinSpeed((unsigned int) speed);
+ return true;
}
/**
* @brief Setting the acceleration in pps^2.
* @param acceleration The acceleration in pps^2.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetAcceleration(unsigned int acceleration)
+ virtual bool SetAcceleration(unsigned int acceleration)
{
L6474_SetAcceleration((unsigned int) acceleration);
+ return true;
}
/**
* @brief Setting the deceleration in pps^2.
* @param deceleration The deceleration in pps^2.
- * @retval None.
+ * @retval "true" in case of success, "false" otherwise.
*/
- virtual void SetDeceleration(unsigned int deceleration)
+ virtual bool SetDeceleration(unsigned int deceleration)
{
L6474_SetDeceleration((unsigned int) deceleration);
+ return true;
}
/**
@@ -549,7 +571,8 @@
* @brief Reading the Status Register.
* @param None.
* @retval None.
- * @note The Status Register's flags are not cleared, contrary to GetStatus().
+ * @note The Status Register's flags are not cleared, contrary to the
+ * GetStatus() method.
*/
virtual uint16_t ReadStatusRegister(void)
{
@@ -557,22 +580,22 @@
}
/**
- * @brief Setting the Step Mode.
- * @param step_mode The Step Mode.
- * @retval None.
- * @note step_mode can be one of the following:
- * + STEP_MODE_FULL
- * + STEP_MODE_HALF
- * + STEP_MODE_1_4
- * + STEP_MODE_1_8
- * + STEP_MODE_1_16
- * + STEP_MODE_1_32
- * + STEP_MODE_1_64
- * + STEP_MODE_1_128
+ * @brief Setting the Step Mode.
+ * @param step_mode The Step Mode.
+ * @retval "true" in case of success, "false" otherwise.
+ * @warning Setting the step mode implies first disabling the power bridge through
+ * the SoftHiZ() method.
+ * @warning Every time step mode is changed, the values of the home
+ * and mark positions lose meaning and are reset.
*/
- virtual void SetStepMode(motorStepMode_t step_mode)
+ virtual bool SetStepMode(step_mode_t step_mode)
{
+ if ((motorStepMode_t) step_mode > STEP_MODE_1_16)
+ return false;
+
+ SoftHiZ();
L6474_SelectStepMode((motorStepMode_t) step_mode);
+ return true;
}
/**
