Davide Aliprandi / X-NUCLEO-IHM05A1

Dependencies:   ST_INTERFACES

Fork of X-NUCLEO-IHM05A1 by ST

Committer:
nucleosam
Date:
Fri Apr 08 15:30:36 2016 +0000
Revision:
0:52a66fac0f64
Initial version with empty files in l6208 folder.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucleosam 0:52a66fac0f64 1 /**
nucleosam 0:52a66fac0f64 2 ******************************************************************************
nucleosam 0:52a66fac0f64 3 * @file StepperMotor_class.h
nucleosam 0:52a66fac0f64 4 * @author Davide Aliprandi, STMicroelectronics
nucleosam 0:52a66fac0f64 5 * @version V1.1.0
nucleosam 0:52a66fac0f64 6 * @date April 6th, 2016
nucleosam 0:52a66fac0f64 7 * @brief This file contains the abstract class describing the interface of a
nucleosam 0:52a66fac0f64 8 * stepper-motor component.
nucleosam 0:52a66fac0f64 9 ******************************************************************************
nucleosam 0:52a66fac0f64 10 * @attention
nucleosam 0:52a66fac0f64 11 *
nucleosam 0:52a66fac0f64 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
nucleosam 0:52a66fac0f64 13 *
nucleosam 0:52a66fac0f64 14 * Redistribution and use in source and binary forms, with or without modification,
nucleosam 0:52a66fac0f64 15 * are permitted provided that the following conditions are met:
nucleosam 0:52a66fac0f64 16 * 1. Redistributions of source code must retain the above copyright notice,
nucleosam 0:52a66fac0f64 17 * this list of conditions and the following disclaimer.
nucleosam 0:52a66fac0f64 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
nucleosam 0:52a66fac0f64 19 * this list of conditions and the following disclaimer in the documentation
nucleosam 0:52a66fac0f64 20 * and/or other materials provided with the distribution.
nucleosam 0:52a66fac0f64 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
nucleosam 0:52a66fac0f64 22 * may be used to endorse or promote products derived from this software
nucleosam 0:52a66fac0f64 23 * without specific prior written permission.
nucleosam 0:52a66fac0f64 24 *
nucleosam 0:52a66fac0f64 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
nucleosam 0:52a66fac0f64 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
nucleosam 0:52a66fac0f64 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
nucleosam 0:52a66fac0f64 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
nucleosam 0:52a66fac0f64 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
nucleosam 0:52a66fac0f64 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
nucleosam 0:52a66fac0f64 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
nucleosam 0:52a66fac0f64 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
nucleosam 0:52a66fac0f64 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nucleosam 0:52a66fac0f64 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nucleosam 0:52a66fac0f64 35 *
nucleosam 0:52a66fac0f64 36 ******************************************************************************
nucleosam 0:52a66fac0f64 37 */
nucleosam 0:52a66fac0f64 38
nucleosam 0:52a66fac0f64 39
nucleosam 0:52a66fac0f64 40 /* Define to prevent from recursive inclusion --------------------------------*/
nucleosam 0:52a66fac0f64 41
nucleosam 0:52a66fac0f64 42 #ifndef __STEPPERMOTOR_CLASS_H
nucleosam 0:52a66fac0f64 43 #define __STEPPERMOTOR_CLASS_H
nucleosam 0:52a66fac0f64 44
nucleosam 0:52a66fac0f64 45
nucleosam 0:52a66fac0f64 46 /* Includes ------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 47
nucleosam 0:52a66fac0f64 48 #include <Component_class.h>
nucleosam 0:52a66fac0f64 49
nucleosam 0:52a66fac0f64 50
nucleosam 0:52a66fac0f64 51 /* Classes ------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 52
nucleosam 0:52a66fac0f64 53 /** An abstract class for StepperMotor components.
nucleosam 0:52a66fac0f64 54 */
nucleosam 0:52a66fac0f64 55 class StepperMotor : public Component
nucleosam 0:52a66fac0f64 56 {
nucleosam 0:52a66fac0f64 57 public:
nucleosam 0:52a66fac0f64 58 /**
nucleosam 0:52a66fac0f64 59 * @brief Rotation modes.
nucleosam 0:52a66fac0f64 60 */
nucleosam 0:52a66fac0f64 61 typedef enum
nucleosam 0:52a66fac0f64 62 {
nucleosam 0:52a66fac0f64 63 BWD = 0, /* Backward. */
nucleosam 0:52a66fac0f64 64 FWD = 1 /* Forward. */
nucleosam 0:52a66fac0f64 65 } direction_t;
nucleosam 0:52a66fac0f64 66
nucleosam 0:52a66fac0f64 67 /**
nucleosam 0:52a66fac0f64 68 * @brief Step modes.
nucleosam 0:52a66fac0f64 69 */
nucleosam 0:52a66fac0f64 70 typedef enum
nucleosam 0:52a66fac0f64 71 {
nucleosam 0:52a66fac0f64 72 STEP_MODE_FULL = 0, /* Full-step. */
nucleosam 0:52a66fac0f64 73 STEP_MODE_HALF, /* Half-step. */
nucleosam 0:52a66fac0f64 74 STEP_MODE_1_4, /* 1/4 microstep. */
nucleosam 0:52a66fac0f64 75 STEP_MODE_1_8, /* 1/8 microstep. */
nucleosam 0:52a66fac0f64 76 STEP_MODE_1_16, /* 1/16 microstep. */
nucleosam 0:52a66fac0f64 77 STEP_MODE_1_32, /* 1/32 microstep. */
nucleosam 0:52a66fac0f64 78 STEP_MODE_1_64, /* 1/64 microstep. */
nucleosam 0:52a66fac0f64 79 STEP_MODE_1_128, /* 1/128 microstep. */
nucleosam 0:52a66fac0f64 80 STEP_MODE_1_256, /* 1/256 microstep. */
nucleosam 0:52a66fac0f64 81 STEP_MODE_UNKNOWN,
nucleosam 0:52a66fac0f64 82 STEP_MODE_WAVE /* Full-step one-phase-on*/
nucleosam 0:52a66fac0f64 83 } step_mode_t;
nucleosam 0:52a66fac0f64 84
nucleosam 0:52a66fac0f64 85 /**
nucleosam 0:52a66fac0f64 86 * @brief Getting the status.
nucleosam 0:52a66fac0f64 87 * @param None.
nucleosam 0:52a66fac0f64 88 * @retval The status.
nucleosam 0:52a66fac0f64 89 */
nucleosam 0:52a66fac0f64 90 virtual unsigned int GetStatus(void) = 0;
nucleosam 0:52a66fac0f64 91
nucleosam 0:52a66fac0f64 92 /**
nucleosam 0:52a66fac0f64 93 * @brief Getting the position.
nucleosam 0:52a66fac0f64 94 * @param None.
nucleosam 0:52a66fac0f64 95 * @retval The position.
nucleosam 0:52a66fac0f64 96 */
nucleosam 0:52a66fac0f64 97 virtual signed int GetPosition(void) = 0;
nucleosam 0:52a66fac0f64 98
nucleosam 0:52a66fac0f64 99 /**
nucleosam 0:52a66fac0f64 100 * @brief Getting the marked position.
nucleosam 0:52a66fac0f64 101 * @param None.
nucleosam 0:52a66fac0f64 102 * @retval The marked position.
nucleosam 0:52a66fac0f64 103 */
nucleosam 0:52a66fac0f64 104 virtual signed int GetMark(void) = 0;
nucleosam 0:52a66fac0f64 105
nucleosam 0:52a66fac0f64 106 /**
nucleosam 0:52a66fac0f64 107 * @brief Getting the current speed in pps.
nucleosam 0:52a66fac0f64 108 * @param None.
nucleosam 0:52a66fac0f64 109 * @retval The current speed in pps.
nucleosam 0:52a66fac0f64 110 */
nucleosam 0:52a66fac0f64 111 virtual unsigned int GetSpeed(void) = 0;
nucleosam 0:52a66fac0f64 112
nucleosam 0:52a66fac0f64 113 /**
nucleosam 0:52a66fac0f64 114 * @brief Getting the maximum speed in pps.
nucleosam 0:52a66fac0f64 115 * @param None.
nucleosam 0:52a66fac0f64 116 * @retval The maximum speed in pps.
nucleosam 0:52a66fac0f64 117 */
nucleosam 0:52a66fac0f64 118 virtual unsigned int GetMaxSpeed(void) = 0;
nucleosam 0:52a66fac0f64 119
nucleosam 0:52a66fac0f64 120 /**
nucleosam 0:52a66fac0f64 121 * @brief Getting the minimum speed in pps.
nucleosam 0:52a66fac0f64 122 * @param None.
nucleosam 0:52a66fac0f64 123 * @retval The minimum speed in pps.
nucleosam 0:52a66fac0f64 124 */
nucleosam 0:52a66fac0f64 125 virtual unsigned int GetMinSpeed(void) = 0;
nucleosam 0:52a66fac0f64 126
nucleosam 0:52a66fac0f64 127 /**
nucleosam 0:52a66fac0f64 128 * @brief Getting the acceleration in pps^2.
nucleosam 0:52a66fac0f64 129 * @param None.
nucleosam 0:52a66fac0f64 130 * @retval The acceleration in pps^2.
nucleosam 0:52a66fac0f64 131 */
nucleosam 0:52a66fac0f64 132 virtual unsigned int GetAcceleration(void) = 0;
nucleosam 0:52a66fac0f64 133
nucleosam 0:52a66fac0f64 134 /**
nucleosam 0:52a66fac0f64 135 * @brief Getting the deceleration in pps^2.
nucleosam 0:52a66fac0f64 136 * @param None.
nucleosam 0:52a66fac0f64 137 * @retval The deceleration in pps^2.
nucleosam 0:52a66fac0f64 138 */
nucleosam 0:52a66fac0f64 139 virtual unsigned int GetDeceleration(void) = 0;
nucleosam 0:52a66fac0f64 140
nucleosam 0:52a66fac0f64 141 /**
nucleosam 0:52a66fac0f64 142 * @brief Getting the direction of rotation.
nucleosam 0:52a66fac0f64 143 * @param None.
nucleosam 0:52a66fac0f64 144 * @retval The direction of rotation.
nucleosam 0:52a66fac0f64 145 */
nucleosam 0:52a66fac0f64 146 virtual direction_t GetDirection(void) = 0;
nucleosam 0:52a66fac0f64 147
nucleosam 0:52a66fac0f64 148 /**
nucleosam 0:52a66fac0f64 149 * @brief Setting the current position to be the home position.
nucleosam 0:52a66fac0f64 150 * @param None.
nucleosam 0:52a66fac0f64 151 * @retval None.
nucleosam 0:52a66fac0f64 152 */
nucleosam 0:52a66fac0f64 153 virtual void SetHome(void) = 0;
nucleosam 0:52a66fac0f64 154
nucleosam 0:52a66fac0f64 155 /**
nucleosam 0:52a66fac0f64 156 * @brief Setting the current position to be the marked position.
nucleosam 0:52a66fac0f64 157 * @param None.
nucleosam 0:52a66fac0f64 158 * @retval None.
nucleosam 0:52a66fac0f64 159 */
nucleosam 0:52a66fac0f64 160 virtual void SetMark(void) = 0;
nucleosam 0:52a66fac0f64 161
nucleosam 0:52a66fac0f64 162 /**
nucleosam 0:52a66fac0f64 163 * @brief Setting the maximum speed in pps.
nucleosam 0:52a66fac0f64 164 * @param speed The maximum speed in pps.
nucleosam 0:52a66fac0f64 165 * @retval "true" in case of success, "false" otherwise.
nucleosam 0:52a66fac0f64 166 */
nucleosam 0:52a66fac0f64 167 virtual bool SetMaxSpeed(unsigned int speed) = 0;
nucleosam 0:52a66fac0f64 168
nucleosam 0:52a66fac0f64 169 /**
nucleosam 0:52a66fac0f64 170 * @brief Setting the minimum speed in pps.
nucleosam 0:52a66fac0f64 171 * @param speed The minimum speed in pps.
nucleosam 0:52a66fac0f64 172 * @retval "true" in case of success, "false" otherwise.
nucleosam 0:52a66fac0f64 173 */
nucleosam 0:52a66fac0f64 174 virtual bool SetMinSpeed(unsigned int speed) = 0;
nucleosam 0:52a66fac0f64 175
nucleosam 0:52a66fac0f64 176 /**
nucleosam 0:52a66fac0f64 177 * @brief Setting the acceleration in pps^2.
nucleosam 0:52a66fac0f64 178 * @param acceleration The acceleration in pps^2.
nucleosam 0:52a66fac0f64 179 * @retval "true" in case of success, "false" otherwise.
nucleosam 0:52a66fac0f64 180 */
nucleosam 0:52a66fac0f64 181 virtual bool SetAcceleration(unsigned int acceleration) = 0;
nucleosam 0:52a66fac0f64 182
nucleosam 0:52a66fac0f64 183 /**
nucleosam 0:52a66fac0f64 184 * @brief Setting the deceleration in pps^2.
nucleosam 0:52a66fac0f64 185 * @param deceleration The deceleration in pps^2.
nucleosam 0:52a66fac0f64 186 * @retval "true" in case of success, "false" otherwise.
nucleosam 0:52a66fac0f64 187 */
nucleosam 0:52a66fac0f64 188 virtual bool SetDeceleration(unsigned int deceleration) = 0;
nucleosam 0:52a66fac0f64 189
nucleosam 0:52a66fac0f64 190 /**
nucleosam 0:52a66fac0f64 191 * @brief Setting the Step Mode.
nucleosam 0:52a66fac0f64 192 * @param step_mode The Step Mode.
nucleosam 0:52a66fac0f64 193 * @retval "true" in case of success, "false" otherwise.
nucleosam 0:52a66fac0f64 194 */
nucleosam 0:52a66fac0f64 195 virtual bool SetStepMode(step_mode_t step_mode) = 0;
nucleosam 0:52a66fac0f64 196
nucleosam 0:52a66fac0f64 197 /**
nucleosam 0:52a66fac0f64 198 * @brief Going to a specified position.
nucleosam 0:52a66fac0f64 199 * @param position The desired position.
nucleosam 0:52a66fac0f64 200 * @retval None.
nucleosam 0:52a66fac0f64 201 */
nucleosam 0:52a66fac0f64 202 virtual void GoTo(signed int position) = 0;
nucleosam 0:52a66fac0f64 203
nucleosam 0:52a66fac0f64 204 /**
nucleosam 0:52a66fac0f64 205 * @brief Going to the home position.
nucleosam 0:52a66fac0f64 206 * @param None.
nucleosam 0:52a66fac0f64 207 * @retval None.
nucleosam 0:52a66fac0f64 208 */
nucleosam 0:52a66fac0f64 209 virtual void GoHome(void) = 0;
nucleosam 0:52a66fac0f64 210
nucleosam 0:52a66fac0f64 211 /**
nucleosam 0:52a66fac0f64 212 * @brief Going to the marked position.
nucleosam 0:52a66fac0f64 213 * @param None.
nucleosam 0:52a66fac0f64 214 * @retval None.
nucleosam 0:52a66fac0f64 215 */
nucleosam 0:52a66fac0f64 216 virtual void GoMark(void) = 0;
nucleosam 0:52a66fac0f64 217
nucleosam 0:52a66fac0f64 218 /**
nucleosam 0:52a66fac0f64 219 * @brief Running the motor towards a specified direction.
nucleosam 0:52a66fac0f64 220 * @param direction The direction of rotation.
nucleosam 0:52a66fac0f64 221 * @retval None.
nucleosam 0:52a66fac0f64 222 */
nucleosam 0:52a66fac0f64 223 virtual void Run(direction_t direction) = 0;
nucleosam 0:52a66fac0f64 224
nucleosam 0:52a66fac0f64 225 /**
nucleosam 0:52a66fac0f64 226 * @brief Moving the motor towards a specified direction for a certain number of steps.
nucleosam 0:52a66fac0f64 227 * @param direction The direction of rotation.
nucleosam 0:52a66fac0f64 228 * @param steps The desired number of steps.
nucleosam 0:52a66fac0f64 229 * @retval None.
nucleosam 0:52a66fac0f64 230 */
nucleosam 0:52a66fac0f64 231 virtual void Move(direction_t direction, unsigned int steps) = 0;
nucleosam 0:52a66fac0f64 232
nucleosam 0:52a66fac0f64 233 /**
nucleosam 0:52a66fac0f64 234 * @brief Stopping the motor through an immediate deceleration up to zero speed.
nucleosam 0:52a66fac0f64 235 * @param None.
nucleosam 0:52a66fac0f64 236 * @retval None.
nucleosam 0:52a66fac0f64 237 */
nucleosam 0:52a66fac0f64 238 virtual void SoftStop(void) = 0;
nucleosam 0:52a66fac0f64 239
nucleosam 0:52a66fac0f64 240 /**
nucleosam 0:52a66fac0f64 241 * @brief Stopping the motor through an immediate infinite deceleration.
nucleosam 0:52a66fac0f64 242 * @param None.
nucleosam 0:52a66fac0f64 243 * @retval None.
nucleosam 0:52a66fac0f64 244 */
nucleosam 0:52a66fac0f64 245 virtual void HardStop(void) = 0;
nucleosam 0:52a66fac0f64 246
nucleosam 0:52a66fac0f64 247 /**
nucleosam 0:52a66fac0f64 248 * @brief Disabling the power bridge after performing a deceleration to zero.
nucleosam 0:52a66fac0f64 249 * @param None.
nucleosam 0:52a66fac0f64 250 * @retval None.
nucleosam 0:52a66fac0f64 251 */
nucleosam 0:52a66fac0f64 252 virtual void SoftHiZ(void) = 0;
nucleosam 0:52a66fac0f64 253
nucleosam 0:52a66fac0f64 254 /**
nucleosam 0:52a66fac0f64 255 * @brief Disabling the power bridge immediately.
nucleosam 0:52a66fac0f64 256 * @param None.
nucleosam 0:52a66fac0f64 257 * @retval None.
nucleosam 0:52a66fac0f64 258 */
nucleosam 0:52a66fac0f64 259 virtual void HardHiZ(void) = 0;
nucleosam 0:52a66fac0f64 260
nucleosam 0:52a66fac0f64 261 /**
nucleosam 0:52a66fac0f64 262 * @brief Waiting while the motor is active.
nucleosam 0:52a66fac0f64 263 * @param None.
nucleosam 0:52a66fac0f64 264 * @retval None.
nucleosam 0:52a66fac0f64 265 */
nucleosam 0:52a66fac0f64 266 virtual void WaitWhileActive(void) = 0;
nucleosam 0:52a66fac0f64 267 };
nucleosam 0:52a66fac0f64 268
nucleosam 0:52a66fac0f64 269 #endif /* __STEPPERMOTOR_CLASS_H */
nucleosam 0:52a66fac0f64 270
nucleosam 0:52a66fac0f64 271 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/