Código finalizado do projeto!!

Dependencies:   ST_INTERFACES X_NUCLEO_COMMON

Fork of X_NUCLEO_IHM01A1 by ST

Files at this revision

API Documentation at this revision

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

Components/Interfaces/StepperMotor_class.h Show annotated file Show diff for this revision Revisions of this file
Components/l6474/l6474_class.h Show annotated file Show diff for this revision Revisions of this file
--- 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;
     }
 
     /**