Added ST_INTERFACES library.
Fork of X_NUCLEO_IHM06A1 by
Components/stspin220/stspin220_class.h@3:3cc66577af9b, 2016-09-29 (annotated)
- Committer:
- Davidroid
- Date:
- Thu Sep 29 10:00:17 2016 +0000
- Revision:
- 3:3cc66577af9b
- Parent:
- 2:2ba230b24f25
Added ST_INTERFACES library.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nucleosam | 0:0ccd34c56c66 | 1 | /** |
nucleosam | 0:0ccd34c56c66 | 2 | ****************************************************************************** |
nucleosam | 0:0ccd34c56c66 | 3 | * @file stspin220_class.h |
nucleosam | 0:0ccd34c56c66 | 4 | * @author IPC Rennes |
nucleosam | 0:0ccd34c56c66 | 5 | * @version V1.0.0 |
nucleosam | 2:2ba230b24f25 | 6 | * @date July 27th, 2016 |
nucleosam | 0:0ccd34c56c66 | 7 | * @brief This file contains the class of a STSPIN220 Motor Control component. |
nucleosam | 0:0ccd34c56c66 | 8 | * @note (C) COPYRIGHT 2016 STMicroelectronics |
nucleosam | 0:0ccd34c56c66 | 9 | ****************************************************************************** |
nucleosam | 0:0ccd34c56c66 | 10 | * @attention |
nucleosam | 0:0ccd34c56c66 | 11 | * |
nucleosam | 0:0ccd34c56c66 | 12 | * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> |
nucleosam | 0:0ccd34c56c66 | 13 | * |
nucleosam | 0:0ccd34c56c66 | 14 | * Redistribution and use in source and binary forms, with or without modification, |
nucleosam | 0:0ccd34c56c66 | 15 | * are permitted provided that the following conditions are met: |
nucleosam | 0:0ccd34c56c66 | 16 | * 1. Redistributions of source code must retain the above copyright notice, |
nucleosam | 0:0ccd34c56c66 | 17 | * this list of conditions and the following disclaimer. |
nucleosam | 0:0ccd34c56c66 | 18 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
nucleosam | 0:0ccd34c56c66 | 19 | * this list of conditions and the following disclaimer in the documentation |
nucleosam | 0:0ccd34c56c66 | 20 | * and/or other materials provided with the distribution. |
nucleosam | 0:0ccd34c56c66 | 21 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
nucleosam | 0:0ccd34c56c66 | 22 | * may be used to endorse or promote products derived from this software |
nucleosam | 0:0ccd34c56c66 | 23 | * without specific prior written permission. |
nucleosam | 0:0ccd34c56c66 | 24 | * |
nucleosam | 0:0ccd34c56c66 | 25 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
nucleosam | 0:0ccd34c56c66 | 26 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
nucleosam | 0:0ccd34c56c66 | 27 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
nucleosam | 0:0ccd34c56c66 | 28 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
nucleosam | 0:0ccd34c56c66 | 29 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
nucleosam | 0:0ccd34c56c66 | 30 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
nucleosam | 0:0ccd34c56c66 | 31 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
nucleosam | 0:0ccd34c56c66 | 32 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
nucleosam | 0:0ccd34c56c66 | 33 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
nucleosam | 0:0ccd34c56c66 | 34 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
nucleosam | 0:0ccd34c56c66 | 35 | * |
nucleosam | 0:0ccd34c56c66 | 36 | ****************************************************************************** |
nucleosam | 0:0ccd34c56c66 | 37 | */ |
nucleosam | 0:0ccd34c56c66 | 38 | |
nucleosam | 0:0ccd34c56c66 | 39 | |
nucleosam | 0:0ccd34c56c66 | 40 | /* Define to prevent recursive inclusion -------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 41 | |
nucleosam | 0:0ccd34c56c66 | 42 | #ifndef __STSPIN220_CLASS_H |
nucleosam | 0:0ccd34c56c66 | 43 | #define __STSPIN220_CLASS_H |
nucleosam | 0:0ccd34c56c66 | 44 | |
nucleosam | 0:0ccd34c56c66 | 45 | |
nucleosam | 0:0ccd34c56c66 | 46 | /* Includes ------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 47 | |
nucleosam | 0:0ccd34c56c66 | 48 | /* ACTION 1 ------------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 49 | * Include here platform specific header files. * |
nucleosam | 0:0ccd34c56c66 | 50 | *----------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 51 | #include "mbed.h" |
nucleosam | 0:0ccd34c56c66 | 52 | |
nucleosam | 0:0ccd34c56c66 | 53 | /* ACTION 2 ------------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 54 | * Include here component specific header files. * |
nucleosam | 0:0ccd34c56c66 | 55 | *----------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 56 | #include "stspin220.h" |
nucleosam | 0:0ccd34c56c66 | 57 | /* ACTION 3 ------------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 58 | * Include here interface specific header files. * |
nucleosam | 0:0ccd34c56c66 | 59 | * * |
nucleosam | 0:0ccd34c56c66 | 60 | * Example: * |
Davidroid | 3:3cc66577af9b | 61 | * #include "HumiditySensor.h" * |
Davidroid | 3:3cc66577af9b | 62 | * #include "TemperatureSensor.h" * |
nucleosam | 0:0ccd34c56c66 | 63 | *----------------------------------------------------------------------------*/ |
Davidroid | 3:3cc66577af9b | 64 | #include "StepperMotor.h" |
nucleosam | 0:0ccd34c56c66 | 65 | |
nucleosam | 0:0ccd34c56c66 | 66 | |
nucleosam | 0:0ccd34c56c66 | 67 | /* Classes -------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 68 | |
nucleosam | 0:0ccd34c56c66 | 69 | /** |
nucleosam | 0:0ccd34c56c66 | 70 | * @brief Class representing a STSPIN220 component. |
nucleosam | 0:0ccd34c56c66 | 71 | */ |
nucleosam | 0:0ccd34c56c66 | 72 | class STSPIN220 : public StepperMotor |
nucleosam | 0:0ccd34c56c66 | 73 | { |
nucleosam | 0:0ccd34c56c66 | 74 | public: |
nucleosam | 0:0ccd34c56c66 | 75 | /*** Constructor and Destructor Methods ***/ |
nucleosam | 0:0ccd34c56c66 | 76 | /** |
nucleosam | 0:0ccd34c56c66 | 77 | * @brief Constructor. |
nucleosam | 0:0ccd34c56c66 | 78 | * @param fault_and_enable_pin pin name of the EN\FAULT pin of the component. |
nucleosam | 0:0ccd34c56c66 | 79 | * @param stby_reset_pin pin name of the STBY\RESET pin of the component. |
nucleosam | 0:0ccd34c56c66 | 80 | * @param direction_mode4_pin pin name of the MODE4\DIR pin of the component. |
nucleosam | 0:0ccd34c56c66 | 81 | * @param mode1_pin pin name of the MODE1 pin of the component. |
nucleosam | 0:0ccd34c56c66 | 82 | * @param mode2_pin pin name of the MODE2 pin of the component. |
nucleosam | 0:0ccd34c56c66 | 83 | * @param stck_mode3_pin pin name of the MODE3\STCK pin of the component. |
nucleosam | 0:0ccd34c56c66 | 84 | * @param pwm_ref_pin pin name of the PWM connected to the REF pin of the component. |
nucleosam | 0:0ccd34c56c66 | 85 | * @param Monitor_pin pin name for the step clock handler duration Monitoring. |
nucleosam | 0:0ccd34c56c66 | 86 | */ |
nucleosam | 0:0ccd34c56c66 | 87 | STSPIN220(PinName fault_and_enable_pin, |
nucleosam | 0:0ccd34c56c66 | 88 | PinName stby_reset_pin, |
nucleosam | 0:0ccd34c56c66 | 89 | PinName direction_mode4_pin, |
nucleosam | 0:0ccd34c56c66 | 90 | PinName mode1_pin, |
nucleosam | 0:0ccd34c56c66 | 91 | PinName mode2_pin, |
nucleosam | 0:0ccd34c56c66 | 92 | PinName stck_mode3_pin, |
nucleosam | 0:0ccd34c56c66 | 93 | PinName pwm_ref_pin, |
nucleosam | 0:0ccd34c56c66 | 94 | PinName monitor_pin = NC) : StepperMotor(), |
nucleosam | 0:0ccd34c56c66 | 95 | fault_and_enable(fault_and_enable_pin), |
nucleosam | 0:0ccd34c56c66 | 96 | stby_reset(stby_reset_pin), |
nucleosam | 0:0ccd34c56c66 | 97 | direction_mode4(direction_mode4_pin), |
nucleosam | 0:0ccd34c56c66 | 98 | mode1(mode1_pin), |
nucleosam | 0:0ccd34c56c66 | 99 | mode2(mode2_pin), |
nucleosam | 0:0ccd34c56c66 | 100 | stck_mode3(stck_mode3_pin), |
nucleosam | 0:0ccd34c56c66 | 101 | pwm_ref(pwm_ref_pin), |
nucleosam | 0:0ccd34c56c66 | 102 | monitor(monitor_pin) |
nucleosam | 0:0ccd34c56c66 | 103 | { |
nucleosam | 0:0ccd34c56c66 | 104 | /* Checking stackability. */ |
nucleosam | 0:0ccd34c56c66 | 105 | if (numberOfDevices!=0) |
nucleosam | 0:0ccd34c56c66 | 106 | error("Instantiation of the STSPIN220 component failed: it can't be stacked on itself.\r\n"); |
nucleosam | 0:0ccd34c56c66 | 107 | |
nucleosam | 0:0ccd34c56c66 | 108 | /* ACTION 4 ----------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 109 | * Initialize here the component's member variables, one variable per * |
nucleosam | 0:0ccd34c56c66 | 110 | * line. * |
nucleosam | 0:0ccd34c56c66 | 111 | * * |
nucleosam | 0:0ccd34c56c66 | 112 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 113 | * measure = 0; * |
nucleosam | 0:0ccd34c56c66 | 114 | * instance_id = number_of_instances++; * |
nucleosam | 0:0ccd34c56c66 | 115 | *--------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 116 | errorHandlerCallback = 0; |
nucleosam | 0:0ccd34c56c66 | 117 | memset(&devicePrm, 0, sizeof(devicePrm)); |
nucleosam | 0:0ccd34c56c66 | 118 | deviceInstance = numberOfDevices++; |
nucleosam | 0:0ccd34c56c66 | 119 | |
nucleosam | 0:0ccd34c56c66 | 120 | fault_and_enable_pinName = fault_and_enable_pin; |
nucleosam | 0:0ccd34c56c66 | 121 | } |
nucleosam | 0:0ccd34c56c66 | 122 | |
nucleosam | 0:0ccd34c56c66 | 123 | /** |
nucleosam | 0:0ccd34c56c66 | 124 | * @brief Destructor. |
nucleosam | 0:0ccd34c56c66 | 125 | */ |
nucleosam | 0:0ccd34c56c66 | 126 | virtual ~STSPIN220(void) {} |
nucleosam | 0:0ccd34c56c66 | 127 | |
nucleosam | 0:0ccd34c56c66 | 128 | |
nucleosam | 0:0ccd34c56c66 | 129 | /*** Public Component Related Methods ***/ |
nucleosam | 0:0ccd34c56c66 | 130 | |
nucleosam | 0:0ccd34c56c66 | 131 | /* ACTION 5 --------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 132 | * Implement here the component's public methods, as wrappers of the C * |
nucleosam | 0:0ccd34c56c66 | 133 | * component's functions. * |
nucleosam | 0:0ccd34c56c66 | 134 | * They should be: * |
nucleosam | 0:0ccd34c56c66 | 135 | * + Methods with the same name of the C component's virtual table's * |
nucleosam | 0:0ccd34c56c66 | 136 | * functions (1); * |
nucleosam | 0:0ccd34c56c66 | 137 | * + Methods with the same name of the C component's extended virtual * |
nucleosam | 0:0ccd34c56c66 | 138 | * table's functions, if any (2). * |
nucleosam | 0:0ccd34c56c66 | 139 | * * |
nucleosam | 0:0ccd34c56c66 | 140 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 141 | * virtual int GetValue(float *pData) //(1) * |
nucleosam | 0:0ccd34c56c66 | 142 | * { * |
nucleosam | 0:0ccd34c56c66 | 143 | * return COMPONENT_GetValue(float *pfData); * |
nucleosam | 0:0ccd34c56c66 | 144 | * } * |
nucleosam | 0:0ccd34c56c66 | 145 | * * |
nucleosam | 0:0ccd34c56c66 | 146 | * virtual int EnableFeature(void) //(2) * |
nucleosam | 0:0ccd34c56c66 | 147 | * { * |
nucleosam | 0:0ccd34c56c66 | 148 | * return COMPONENT_EnableFeature(); * |
nucleosam | 0:0ccd34c56c66 | 149 | * } * |
nucleosam | 0:0ccd34c56c66 | 150 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 151 | |
nucleosam | 0:0ccd34c56c66 | 152 | /** |
nucleosam | 0:0ccd34c56c66 | 153 | * @brief Public functions inherited from the Component Class |
nucleosam | 0:0ccd34c56c66 | 154 | */ |
nucleosam | 0:0ccd34c56c66 | 155 | |
nucleosam | 0:0ccd34c56c66 | 156 | /** |
nucleosam | 0:0ccd34c56c66 | 157 | * @brief Initialize the component. |
nucleosam | 0:0ccd34c56c66 | 158 | * @param init Pointer to device specific initalization structure. |
nucleosam | 0:0ccd34c56c66 | 159 | * @retval "0" in case of success, an error code otherwise. |
nucleosam | 0:0ccd34c56c66 | 160 | */ |
nucleosam | 0:0ccd34c56c66 | 161 | virtual int Init(void *init = NULL) |
nucleosam | 0:0ccd34c56c66 | 162 | { |
nucleosam | 0:0ccd34c56c66 | 163 | return (int) Stspin220_Init((void *) init); |
nucleosam | 0:0ccd34c56c66 | 164 | } |
nucleosam | 0:0ccd34c56c66 | 165 | |
nucleosam | 0:0ccd34c56c66 | 166 | /** |
nucleosam | 0:0ccd34c56c66 | 167 | * @brief Getting the ID of the component. |
nucleosam | 0:0ccd34c56c66 | 168 | * @param id Pointer to an allocated variable to store the ID into. |
nucleosam | 0:0ccd34c56c66 | 169 | * @retval "0" in case of success, an error code otherwise. |
nucleosam | 0:0ccd34c56c66 | 170 | */ |
nucleosam | 0:0ccd34c56c66 | 171 | virtual int ReadID(uint8_t *id = NULL) |
nucleosam | 0:0ccd34c56c66 | 172 | { |
nucleosam | 0:0ccd34c56c66 | 173 | return (int) Stspin220_ReadID((uint8_t *) id); |
nucleosam | 0:0ccd34c56c66 | 174 | } |
nucleosam | 0:0ccd34c56c66 | 175 | |
nucleosam | 0:0ccd34c56c66 | 176 | /** |
nucleosam | 0:0ccd34c56c66 | 177 | * @brief Public functions inherited from the StepperMotor Class |
nucleosam | 0:0ccd34c56c66 | 178 | */ |
nucleosam | 0:0ccd34c56c66 | 179 | |
nucleosam | 0:0ccd34c56c66 | 180 | /** |
nucleosam | 0:0ccd34c56c66 | 181 | * @brief Getting the value of the motor state . |
nucleosam | 0:0ccd34c56c66 | 182 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 183 | * @retval The motor state accoring to motorState_t in motor.h |
nucleosam | 0:0ccd34c56c66 | 184 | */ |
nucleosam | 0:0ccd34c56c66 | 185 | virtual unsigned int GetStatus(void) |
nucleosam | 0:0ccd34c56c66 | 186 | { |
nucleosam | 0:0ccd34c56c66 | 187 | return (unsigned int) Stspin220_GetDeviceState(); |
nucleosam | 0:0ccd34c56c66 | 188 | } |
nucleosam | 0:0ccd34c56c66 | 189 | |
nucleosam | 0:0ccd34c56c66 | 190 | /** |
nucleosam | 0:0ccd34c56c66 | 191 | * @brief Getting the position. |
nucleosam | 0:0ccd34c56c66 | 192 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 193 | * @retval The position. |
nucleosam | 0:0ccd34c56c66 | 194 | */ |
nucleosam | 0:0ccd34c56c66 | 195 | virtual signed int GetPosition(void) |
nucleosam | 0:0ccd34c56c66 | 196 | { |
nucleosam | 0:0ccd34c56c66 | 197 | return (signed int)Stspin220_GetPosition(); |
nucleosam | 0:0ccd34c56c66 | 198 | } |
nucleosam | 0:0ccd34c56c66 | 199 | |
nucleosam | 0:0ccd34c56c66 | 200 | /** |
nucleosam | 0:0ccd34c56c66 | 201 | * @brief Getting the marked position. |
nucleosam | 0:0ccd34c56c66 | 202 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 203 | * @retval The marked position. |
nucleosam | 0:0ccd34c56c66 | 204 | */ |
nucleosam | 0:0ccd34c56c66 | 205 | virtual signed int GetMark(void) |
nucleosam | 0:0ccd34c56c66 | 206 | { |
nucleosam | 0:0ccd34c56c66 | 207 | return (signed int)Stspin220_GetMark(); |
nucleosam | 0:0ccd34c56c66 | 208 | } |
nucleosam | 0:0ccd34c56c66 | 209 | |
nucleosam | 0:0ccd34c56c66 | 210 | /** |
nucleosam | 0:0ccd34c56c66 | 211 | * @brief Getting the current speed in pps. |
nucleosam | 0:0ccd34c56c66 | 212 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 213 | * @retval The current speed in pps. |
nucleosam | 0:0ccd34c56c66 | 214 | */ |
nucleosam | 0:0ccd34c56c66 | 215 | virtual unsigned int GetSpeed(void) |
nucleosam | 0:0ccd34c56c66 | 216 | { |
nucleosam | 0:0ccd34c56c66 | 217 | return (unsigned int)Stspin220_GetCurrentSpeed(); |
nucleosam | 0:0ccd34c56c66 | 218 | } |
nucleosam | 0:0ccd34c56c66 | 219 | |
nucleosam | 0:0ccd34c56c66 | 220 | /** |
nucleosam | 0:0ccd34c56c66 | 221 | * @brief Getting the maximum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 222 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 223 | * @retval The maximum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 224 | */ |
nucleosam | 0:0ccd34c56c66 | 225 | virtual unsigned int GetMaxSpeed(void) |
nucleosam | 0:0ccd34c56c66 | 226 | { |
nucleosam | 0:0ccd34c56c66 | 227 | return (unsigned int)Stspin220_GetMaxSpeed(); |
nucleosam | 0:0ccd34c56c66 | 228 | } |
nucleosam | 0:0ccd34c56c66 | 229 | |
nucleosam | 0:0ccd34c56c66 | 230 | /** |
nucleosam | 0:0ccd34c56c66 | 231 | * @brief Getting the minimum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 232 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 233 | * @retval The minimum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 234 | */ |
nucleosam | 0:0ccd34c56c66 | 235 | virtual unsigned int GetMinSpeed(void) |
nucleosam | 0:0ccd34c56c66 | 236 | { |
nucleosam | 0:0ccd34c56c66 | 237 | return (unsigned int)Stspin220_GetMinSpeed(); |
nucleosam | 0:0ccd34c56c66 | 238 | } |
nucleosam | 0:0ccd34c56c66 | 239 | |
nucleosam | 0:0ccd34c56c66 | 240 | /** |
nucleosam | 0:0ccd34c56c66 | 241 | * @brief Getting the acceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 242 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 243 | * @retval The acceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 244 | */ |
nucleosam | 0:0ccd34c56c66 | 245 | virtual unsigned int GetAcceleration(void) |
nucleosam | 0:0ccd34c56c66 | 246 | { |
nucleosam | 0:0ccd34c56c66 | 247 | return (unsigned int)Stspin220_GetAcceleration(); |
nucleosam | 0:0ccd34c56c66 | 248 | } |
nucleosam | 0:0ccd34c56c66 | 249 | |
nucleosam | 0:0ccd34c56c66 | 250 | /** |
nucleosam | 0:0ccd34c56c66 | 251 | * @brief Getting the deceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 252 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 253 | * @retval The deceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 254 | */ |
nucleosam | 0:0ccd34c56c66 | 255 | virtual unsigned int GetDeceleration(void) |
nucleosam | 0:0ccd34c56c66 | 256 | { |
nucleosam | 0:0ccd34c56c66 | 257 | return (unsigned int)Stspin220_GetDeceleration(); |
nucleosam | 0:0ccd34c56c66 | 258 | } |
nucleosam | 0:0ccd34c56c66 | 259 | |
nucleosam | 0:0ccd34c56c66 | 260 | /** |
nucleosam | 0:0ccd34c56c66 | 261 | * @brief Getting the direction of rotation. |
nucleosam | 0:0ccd34c56c66 | 262 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 263 | * @retval The direction of rotation. |
nucleosam | 0:0ccd34c56c66 | 264 | */ |
nucleosam | 0:0ccd34c56c66 | 265 | virtual direction_t GetDirection(void) |
nucleosam | 0:0ccd34c56c66 | 266 | { |
nucleosam | 0:0ccd34c56c66 | 267 | if (Stspin220_GetDirection()!=BACKWARD) |
nucleosam | 0:0ccd34c56c66 | 268 | { |
nucleosam | 0:0ccd34c56c66 | 269 | return FWD; |
nucleosam | 0:0ccd34c56c66 | 270 | } |
nucleosam | 0:0ccd34c56c66 | 271 | else |
nucleosam | 0:0ccd34c56c66 | 272 | { |
nucleosam | 0:0ccd34c56c66 | 273 | return BWD; |
nucleosam | 0:0ccd34c56c66 | 274 | } |
nucleosam | 0:0ccd34c56c66 | 275 | } |
nucleosam | 0:0ccd34c56c66 | 276 | |
nucleosam | 0:0ccd34c56c66 | 277 | /** |
nucleosam | 0:0ccd34c56c66 | 278 | * @brief Setting the current position to be the home position. |
nucleosam | 0:0ccd34c56c66 | 279 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 280 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 281 | */ |
nucleosam | 0:0ccd34c56c66 | 282 | virtual void SetHome(void) |
nucleosam | 0:0ccd34c56c66 | 283 | { |
nucleosam | 0:0ccd34c56c66 | 284 | Stspin220_SetHome(); |
nucleosam | 0:0ccd34c56c66 | 285 | } |
nucleosam | 0:0ccd34c56c66 | 286 | |
nucleosam | 0:0ccd34c56c66 | 287 | /** |
nucleosam | 0:0ccd34c56c66 | 288 | * @brief Setting the current position to be the marked position. |
nucleosam | 0:0ccd34c56c66 | 289 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 290 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 291 | */ |
nucleosam | 0:0ccd34c56c66 | 292 | virtual void SetMark(void) |
nucleosam | 0:0ccd34c56c66 | 293 | { |
nucleosam | 0:0ccd34c56c66 | 294 | Stspin220_SetMark(); |
nucleosam | 0:0ccd34c56c66 | 295 | } |
nucleosam | 0:0ccd34c56c66 | 296 | |
nucleosam | 0:0ccd34c56c66 | 297 | /** |
nucleosam | 0:0ccd34c56c66 | 298 | * @brief Setting the maximum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 299 | * @param speed The maximum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 300 | * @retval "true" in case of success, "false" otherwise. |
nucleosam | 0:0ccd34c56c66 | 301 | */ |
nucleosam | 0:0ccd34c56c66 | 302 | virtual bool SetMaxSpeed(unsigned int speed) |
nucleosam | 0:0ccd34c56c66 | 303 | { |
nucleosam | 0:0ccd34c56c66 | 304 | if (speed <= 0xFFFF) |
nucleosam | 0:0ccd34c56c66 | 305 | { |
nucleosam | 0:0ccd34c56c66 | 306 | return Stspin220_SetMaxSpeed((uint16_t) speed); |
nucleosam | 0:0ccd34c56c66 | 307 | } |
nucleosam | 0:0ccd34c56c66 | 308 | else |
nucleosam | 0:0ccd34c56c66 | 309 | { |
nucleosam | 0:0ccd34c56c66 | 310 | return false; |
nucleosam | 0:0ccd34c56c66 | 311 | } |
nucleosam | 0:0ccd34c56c66 | 312 | } |
nucleosam | 0:0ccd34c56c66 | 313 | |
nucleosam | 0:0ccd34c56c66 | 314 | /** |
nucleosam | 0:0ccd34c56c66 | 315 | * @brief Setting the minimum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 316 | * @param speed The minimum speed in pps. |
nucleosam | 0:0ccd34c56c66 | 317 | * @retval "true" in case of success, "false" otherwise. |
nucleosam | 0:0ccd34c56c66 | 318 | */ |
nucleosam | 0:0ccd34c56c66 | 319 | virtual bool SetMinSpeed(unsigned int speed) |
nucleosam | 0:0ccd34c56c66 | 320 | { |
nucleosam | 0:0ccd34c56c66 | 321 | if (speed <= 0xFFFF) |
nucleosam | 0:0ccd34c56c66 | 322 | { |
nucleosam | 0:0ccd34c56c66 | 323 | return Stspin220_SetMinSpeed((uint16_t) speed); |
nucleosam | 0:0ccd34c56c66 | 324 | } |
nucleosam | 0:0ccd34c56c66 | 325 | else |
nucleosam | 0:0ccd34c56c66 | 326 | { |
nucleosam | 0:0ccd34c56c66 | 327 | return false; |
nucleosam | 0:0ccd34c56c66 | 328 | } |
nucleosam | 0:0ccd34c56c66 | 329 | } |
nucleosam | 0:0ccd34c56c66 | 330 | |
nucleosam | 0:0ccd34c56c66 | 331 | /** |
nucleosam | 0:0ccd34c56c66 | 332 | * @brief Setting the acceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 333 | * @param acceleration The acceleration in pps/s^2. |
nucleosam | 0:0ccd34c56c66 | 334 | * @retval "true" in case of success, "false" otherwise. |
nucleosam | 0:0ccd34c56c66 | 335 | */ |
nucleosam | 0:0ccd34c56c66 | 336 | virtual bool SetAcceleration(unsigned int acceleration) |
nucleosam | 0:0ccd34c56c66 | 337 | { |
nucleosam | 0:0ccd34c56c66 | 338 | if (acceleration <= 0xFFFF) |
nucleosam | 0:0ccd34c56c66 | 339 | { |
nucleosam | 0:0ccd34c56c66 | 340 | return Stspin220_SetAcceleration((uint16_t) acceleration); |
nucleosam | 0:0ccd34c56c66 | 341 | } |
nucleosam | 0:0ccd34c56c66 | 342 | else |
nucleosam | 0:0ccd34c56c66 | 343 | { |
nucleosam | 0:0ccd34c56c66 | 344 | return false; |
nucleosam | 0:0ccd34c56c66 | 345 | } |
nucleosam | 0:0ccd34c56c66 | 346 | } |
nucleosam | 0:0ccd34c56c66 | 347 | |
nucleosam | 0:0ccd34c56c66 | 348 | /** |
nucleosam | 0:0ccd34c56c66 | 349 | * @brief Setting the deceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 350 | * @param deceleration The deceleration in pps^2. |
nucleosam | 0:0ccd34c56c66 | 351 | * @retval "true" in case of success, "false" otherwise. |
nucleosam | 0:0ccd34c56c66 | 352 | */ |
nucleosam | 0:0ccd34c56c66 | 353 | virtual bool SetDeceleration(unsigned int deceleration) |
nucleosam | 0:0ccd34c56c66 | 354 | { |
nucleosam | 0:0ccd34c56c66 | 355 | if (deceleration <= 0xFFFF) |
nucleosam | 0:0ccd34c56c66 | 356 | { |
nucleosam | 0:0ccd34c56c66 | 357 | return Stspin220_SetDeceleration((uint16_t) deceleration); |
nucleosam | 0:0ccd34c56c66 | 358 | } |
nucleosam | 0:0ccd34c56c66 | 359 | else |
nucleosam | 0:0ccd34c56c66 | 360 | { |
nucleosam | 0:0ccd34c56c66 | 361 | return false; |
nucleosam | 0:0ccd34c56c66 | 362 | } |
nucleosam | 0:0ccd34c56c66 | 363 | } |
nucleosam | 0:0ccd34c56c66 | 364 | |
nucleosam | 0:0ccd34c56c66 | 365 | /** |
nucleosam | 0:0ccd34c56c66 | 366 | * @brief Setting the Step Mode. |
nucleosam | 0:0ccd34c56c66 | 367 | * @param step_mode The Step Mode. |
nucleosam | 0:0ccd34c56c66 | 368 | * @retval "true" in case of success, "false" otherwise. |
nucleosam | 0:0ccd34c56c66 | 369 | * @note step_mode can be one of the following: |
nucleosam | 0:0ccd34c56c66 | 370 | * + STEP_MODE_FULL |
nucleosam | 0:0ccd34c56c66 | 371 | * + STEP_MODE_WAVE |
nucleosam | 0:0ccd34c56c66 | 372 | * + STEP_MODE_HALF |
nucleosam | 0:0ccd34c56c66 | 373 | * + STEP_MODE_1_4 |
nucleosam | 0:0ccd34c56c66 | 374 | * + STEP_MODE_1_8 |
nucleosam | 0:0ccd34c56c66 | 375 | * + STEP_MODE_1_16 |
nucleosam | 0:0ccd34c56c66 | 376 | */ |
nucleosam | 0:0ccd34c56c66 | 377 | virtual bool SetStepMode(step_mode_t step_mode) |
nucleosam | 0:0ccd34c56c66 | 378 | { |
nucleosam | 0:0ccd34c56c66 | 379 | return Stspin220_SetStepMode((motorStepMode_t) step_mode); |
nucleosam | 0:0ccd34c56c66 | 380 | } |
nucleosam | 0:0ccd34c56c66 | 381 | |
nucleosam | 0:0ccd34c56c66 | 382 | /** |
nucleosam | 0:0ccd34c56c66 | 383 | * @brief Going to a specified position. |
nucleosam | 0:0ccd34c56c66 | 384 | * @param position The desired position. |
nucleosam | 0:0ccd34c56c66 | 385 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 386 | */ |
nucleosam | 0:0ccd34c56c66 | 387 | virtual void GoTo(signed int position) |
nucleosam | 0:0ccd34c56c66 | 388 | { |
nucleosam | 0:0ccd34c56c66 | 389 | Stspin220_GoTo((int32_t)position); |
nucleosam | 0:0ccd34c56c66 | 390 | } |
nucleosam | 0:0ccd34c56c66 | 391 | |
nucleosam | 0:0ccd34c56c66 | 392 | /** |
nucleosam | 0:0ccd34c56c66 | 393 | * @brief Going to the home position. |
nucleosam | 0:0ccd34c56c66 | 394 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 395 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 396 | */ |
nucleosam | 0:0ccd34c56c66 | 397 | virtual void GoHome(void) |
nucleosam | 0:0ccd34c56c66 | 398 | { |
nucleosam | 0:0ccd34c56c66 | 399 | Stspin220_GoHome(); |
nucleosam | 0:0ccd34c56c66 | 400 | } |
nucleosam | 0:0ccd34c56c66 | 401 | |
nucleosam | 0:0ccd34c56c66 | 402 | /** |
nucleosam | 0:0ccd34c56c66 | 403 | * @brief Going to the marked position. |
nucleosam | 0:0ccd34c56c66 | 404 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 405 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 406 | */ |
nucleosam | 0:0ccd34c56c66 | 407 | virtual void GoMark(void) |
nucleosam | 0:0ccd34c56c66 | 408 | { |
nucleosam | 0:0ccd34c56c66 | 409 | Stspin220_GoMark(); |
nucleosam | 0:0ccd34c56c66 | 410 | } |
nucleosam | 0:0ccd34c56c66 | 411 | |
nucleosam | 0:0ccd34c56c66 | 412 | /** |
nucleosam | 0:0ccd34c56c66 | 413 | * @brief Running the motor towards a specified direction. |
nucleosam | 0:0ccd34c56c66 | 414 | * @param direction The direction of rotation. |
nucleosam | 0:0ccd34c56c66 | 415 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 416 | */ |
nucleosam | 0:0ccd34c56c66 | 417 | virtual void Run(direction_t direction) |
nucleosam | 0:0ccd34c56c66 | 418 | { |
nucleosam | 0:0ccd34c56c66 | 419 | Stspin220_Run((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD)); |
nucleosam | 0:0ccd34c56c66 | 420 | } |
nucleosam | 0:0ccd34c56c66 | 421 | |
nucleosam | 0:0ccd34c56c66 | 422 | /** |
nucleosam | 0:0ccd34c56c66 | 423 | * @brief Moving the motor towards a specified direction for a certain number of steps. |
nucleosam | 0:0ccd34c56c66 | 424 | * @param direction The direction of rotation. |
nucleosam | 0:0ccd34c56c66 | 425 | * @param steps The desired number of steps. |
nucleosam | 0:0ccd34c56c66 | 426 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 427 | */ |
nucleosam | 0:0ccd34c56c66 | 428 | virtual void Move(direction_t direction, unsigned int steps) |
nucleosam | 0:0ccd34c56c66 | 429 | { |
nucleosam | 0:0ccd34c56c66 | 430 | Stspin220_Move((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD), (uint32_t)steps); |
nucleosam | 0:0ccd34c56c66 | 431 | } |
nucleosam | 0:0ccd34c56c66 | 432 | |
nucleosam | 0:0ccd34c56c66 | 433 | /** |
nucleosam | 0:0ccd34c56c66 | 434 | * @brief Stopping the motor through an immediate deceleration up to zero speed. |
nucleosam | 0:0ccd34c56c66 | 435 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 436 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 437 | */ |
nucleosam | 0:0ccd34c56c66 | 438 | virtual void SoftStop(void) |
nucleosam | 0:0ccd34c56c66 | 439 | { |
nucleosam | 0:0ccd34c56c66 | 440 | Stspin220_SoftStop(); |
nucleosam | 0:0ccd34c56c66 | 441 | } |
nucleosam | 0:0ccd34c56c66 | 442 | |
nucleosam | 0:0ccd34c56c66 | 443 | /** |
nucleosam | 0:0ccd34c56c66 | 444 | * @brief Stopping the motor through an immediate infinite deceleration. |
nucleosam | 0:0ccd34c56c66 | 445 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 446 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 447 | */ |
nucleosam | 0:0ccd34c56c66 | 448 | virtual void HardStop(void) |
nucleosam | 0:0ccd34c56c66 | 449 | { |
nucleosam | 0:0ccd34c56c66 | 450 | Stspin220_HardStop(); |
nucleosam | 0:0ccd34c56c66 | 451 | } |
nucleosam | 0:0ccd34c56c66 | 452 | |
nucleosam | 0:0ccd34c56c66 | 453 | /** |
nucleosam | 0:0ccd34c56c66 | 454 | * @brief Disabling the power bridge after performing a deceleration to zero. |
nucleosam | 0:0ccd34c56c66 | 455 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 456 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 457 | */ |
nucleosam | 0:0ccd34c56c66 | 458 | virtual void SoftHiZ(void) |
nucleosam | 0:0ccd34c56c66 | 459 | { |
nucleosam | 0:0ccd34c56c66 | 460 | Stspin220_SetStopMode(HIZ_MODE); |
nucleosam | 0:0ccd34c56c66 | 461 | Stspin220_SoftStop(); |
nucleosam | 0:0ccd34c56c66 | 462 | } |
nucleosam | 0:0ccd34c56c66 | 463 | |
nucleosam | 0:0ccd34c56c66 | 464 | /** |
nucleosam | 0:0ccd34c56c66 | 465 | * @brief Disabling the power bridge immediately. |
nucleosam | 0:0ccd34c56c66 | 466 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 467 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 468 | */ |
nucleosam | 0:0ccd34c56c66 | 469 | virtual void HardHiZ(void) |
nucleosam | 0:0ccd34c56c66 | 470 | { |
nucleosam | 0:0ccd34c56c66 | 471 | Stspin220_HardHiZ(); |
nucleosam | 0:0ccd34c56c66 | 472 | } |
nucleosam | 0:0ccd34c56c66 | 473 | |
nucleosam | 0:0ccd34c56c66 | 474 | /** |
nucleosam | 0:0ccd34c56c66 | 475 | * @brief Waiting while the motor is active. |
nucleosam | 0:0ccd34c56c66 | 476 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 477 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 478 | */ |
nucleosam | 0:0ccd34c56c66 | 479 | virtual void WaitWhileActive(void) |
nucleosam | 0:0ccd34c56c66 | 480 | { |
nucleosam | 0:0ccd34c56c66 | 481 | Stspin220_WaitWhileActive(); |
nucleosam | 0:0ccd34c56c66 | 482 | } |
nucleosam | 0:0ccd34c56c66 | 483 | |
nucleosam | 0:0ccd34c56c66 | 484 | /** |
nucleosam | 0:0ccd34c56c66 | 485 | * @brief Public functions NOT inherited |
nucleosam | 0:0ccd34c56c66 | 486 | */ |
nucleosam | 0:0ccd34c56c66 | 487 | |
nucleosam | 0:0ccd34c56c66 | 488 | /** |
nucleosam | 0:0ccd34c56c66 | 489 | * @brief Attaching an error handler. |
nucleosam | 0:0ccd34c56c66 | 490 | * @param fptr An error handler. |
nucleosam | 0:0ccd34c56c66 | 491 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 492 | */ |
nucleosam | 0:0ccd34c56c66 | 493 | virtual void AttachErrorHandler(void (*fptr)(uint16_t error)) |
nucleosam | 0:0ccd34c56c66 | 494 | { |
nucleosam | 0:0ccd34c56c66 | 495 | Stspin220_AttachErrorHandler((void (*)(uint16_t error)) fptr); |
nucleosam | 0:0ccd34c56c66 | 496 | } |
nucleosam | 0:0ccd34c56c66 | 497 | |
nucleosam | 0:0ccd34c56c66 | 498 | /** |
nucleosam | 0:0ccd34c56c66 | 499 | * @brief Checks if the device is disabled or/and has an alarm flag set |
nucleosam | 0:0ccd34c56c66 | 500 | * by reading the EN FAULT pin position. |
nucleosam | 0:0ccd34c56c66 | 501 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 502 | * @retval One if the EN FAULT pin is low (the device is disabled or/and |
nucleosam | 0:0ccd34c56c66 | 503 | * has an alarm flag set), otherwise zero. |
nucleosam | 0:0ccd34c56c66 | 504 | */ |
nucleosam | 0:0ccd34c56c66 | 505 | virtual unsigned int CheckStatusHw(void) |
nucleosam | 0:0ccd34c56c66 | 506 | { |
nucleosam | 0:0ccd34c56c66 | 507 | if (!fault_and_enable.read()) return 0x01; |
nucleosam | 0:0ccd34c56c66 | 508 | else return 0x00; |
nucleosam | 0:0ccd34c56c66 | 509 | } |
nucleosam | 0:0ccd34c56c66 | 510 | |
nucleosam | 0:0ccd34c56c66 | 511 | /** |
nucleosam | 0:0ccd34c56c66 | 512 | * @brief Disabling the device. |
nucleosam | 0:0ccd34c56c66 | 513 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 514 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 515 | */ |
nucleosam | 0:0ccd34c56c66 | 516 | virtual void Disable(void) |
nucleosam | 0:0ccd34c56c66 | 517 | { |
nucleosam | 0:0ccd34c56c66 | 518 | Stspin220_Disable(); |
nucleosam | 0:0ccd34c56c66 | 519 | } |
nucleosam | 0:0ccd34c56c66 | 520 | |
nucleosam | 0:0ccd34c56c66 | 521 | /** |
nucleosam | 0:0ccd34c56c66 | 522 | * @brief Enabling the device. |
nucleosam | 0:0ccd34c56c66 | 523 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 524 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 525 | */ |
nucleosam | 0:0ccd34c56c66 | 526 | virtual void Enable(void) |
nucleosam | 0:0ccd34c56c66 | 527 | { |
nucleosam | 0:0ccd34c56c66 | 528 | Stspin220_Enable(); |
nucleosam | 0:0ccd34c56c66 | 529 | } |
nucleosam | 0:0ccd34c56c66 | 530 | |
nucleosam | 0:0ccd34c56c66 | 531 | /** |
nucleosam | 0:0ccd34c56c66 | 532 | * @brief Exit STSPIN220 device from standby (low power consumption) by |
nucleosam | 0:0ccd34c56c66 | 533 | * setting STBY\RESET pin to high level and changing the motion state to |
nucleosam | 0:0ccd34c56c66 | 534 | * INACTIVE. |
nucleosam | 0:0ccd34c56c66 | 535 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 536 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 537 | */ |
nucleosam | 0:0ccd34c56c66 | 538 | virtual void ExitDeviceFromStandby(void) |
nucleosam | 0:0ccd34c56c66 | 539 | { |
nucleosam | 0:0ccd34c56c66 | 540 | Stspin220_ExitDeviceFromStandby(); |
nucleosam | 0:0ccd34c56c66 | 541 | } |
nucleosam | 0:0ccd34c56c66 | 542 | |
nucleosam | 0:0ccd34c56c66 | 543 | /** |
nucleosam | 0:0ccd34c56c66 | 544 | * @brief Set the frequency of the VREFA and VREFB PWM |
nucleosam | 0:0ccd34c56c66 | 545 | * @param frequency in Hz |
nucleosam | 0:0ccd34c56c66 | 546 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 547 | */ |
nucleosam | 0:0ccd34c56c66 | 548 | virtual uint32_t GetFreqVrefPwm(void) |
nucleosam | 0:0ccd34c56c66 | 549 | { |
nucleosam | 0:0ccd34c56c66 | 550 | return Stspin220_VrefPwmGetFreq(); |
nucleosam | 0:0ccd34c56c66 | 551 | } |
nucleosam | 0:0ccd34c56c66 | 552 | |
nucleosam | 0:0ccd34c56c66 | 553 | /** |
nucleosam | 0:0ccd34c56c66 | 554 | * @brief Getting the version of the firmware. |
nucleosam | 0:0ccd34c56c66 | 555 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 556 | * @retval The version of the firmware. |
nucleosam | 0:0ccd34c56c66 | 557 | */ |
nucleosam | 0:0ccd34c56c66 | 558 | virtual unsigned int GetFwVersion(void) |
nucleosam | 0:0ccd34c56c66 | 559 | { |
nucleosam | 0:0ccd34c56c66 | 560 | return (unsigned int) Stspin220_GetFwVersion(); |
nucleosam | 0:0ccd34c56c66 | 561 | } |
nucleosam | 0:0ccd34c56c66 | 562 | |
nucleosam | 0:0ccd34c56c66 | 563 | /** |
nucleosam | 0:0ccd34c56c66 | 564 | * @brief Getting the motor step mode. |
nucleosam | 0:0ccd34c56c66 | 565 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 566 | * @retval The motor step mode. |
nucleosam | 0:0ccd34c56c66 | 567 | */ |
nucleosam | 0:0ccd34c56c66 | 568 | virtual step_mode_t GetStepMode(void) |
nucleosam | 0:0ccd34c56c66 | 569 | { |
nucleosam | 0:0ccd34c56c66 | 570 | return (step_mode_t) Stspin220_GetStepMode(); |
nucleosam | 0:0ccd34c56c66 | 571 | } |
nucleosam | 0:0ccd34c56c66 | 572 | |
nucleosam | 0:0ccd34c56c66 | 573 | /** |
nucleosam | 0:0ccd34c56c66 | 574 | * @brief Getting the motor stop mode. |
nucleosam | 0:0ccd34c56c66 | 575 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 576 | * @retval The motor stop mode. |
nucleosam | 0:0ccd34c56c66 | 577 | */ |
nucleosam | 0:0ccd34c56c66 | 578 | virtual motorStopMode_t GetStopMode(void) |
nucleosam | 0:0ccd34c56c66 | 579 | { |
nucleosam | 0:0ccd34c56c66 | 580 | return Stspin220_GetStopMode(); |
nucleosam | 0:0ccd34c56c66 | 581 | } |
nucleosam | 0:0ccd34c56c66 | 582 | |
nucleosam | 0:0ccd34c56c66 | 583 | /** |
nucleosam | 0:0ccd34c56c66 | 584 | * @brief Get the motor torque. |
nucleosam | 0:0ccd34c56c66 | 585 | * @param torqueMode Torque mode as specified in enum motorTorqueMode_t |
nucleosam | 0:0ccd34c56c66 | 586 | * @retval the torqueValue in % (from 0 to 100) |
nucleosam | 0:0ccd34c56c66 | 587 | */ |
nucleosam | 0:0ccd34c56c66 | 588 | virtual uint8_t GetTorque(motorTorqueMode_t torqueMode) |
nucleosam | 0:0ccd34c56c66 | 589 | { |
nucleosam | 0:0ccd34c56c66 | 590 | return Stspin220_GetTorque(torqueMode); |
nucleosam | 0:0ccd34c56c66 | 591 | } |
nucleosam | 0:0ccd34c56c66 | 592 | |
nucleosam | 0:0ccd34c56c66 | 593 | /** |
nucleosam | 0:0ccd34c56c66 | 594 | * @brief Get the torque boost feature status. |
nucleosam | 0:0ccd34c56c66 | 595 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 596 | * @retval true if enabled, false if disabled |
nucleosam | 0:0ccd34c56c66 | 597 | */ |
nucleosam | 0:0ccd34c56c66 | 598 | virtual bool GetTorqueBoostEnable(void) |
nucleosam | 0:0ccd34c56c66 | 599 | { |
nucleosam | 0:0ccd34c56c66 | 600 | return Stspin220_GetTorqueBoostEnable(); |
nucleosam | 0:0ccd34c56c66 | 601 | } |
nucleosam | 0:0ccd34c56c66 | 602 | |
nucleosam | 0:0ccd34c56c66 | 603 | /** |
nucleosam | 0:0ccd34c56c66 | 604 | * @brief Get the torque boost threshold |
nucleosam | 0:0ccd34c56c66 | 605 | * @retval The torque boost threshold above which the step mode is |
nucleosam | 0:0ccd34c56c66 | 606 | * changed to full step |
nucleosam | 0:0ccd34c56c66 | 607 | */ |
nucleosam | 0:0ccd34c56c66 | 608 | virtual uint16_t GetTorqueBoostThreshold(void) |
nucleosam | 0:0ccd34c56c66 | 609 | { |
nucleosam | 0:0ccd34c56c66 | 610 | return Stspin220_GetTorqueBoostThreshold(); |
nucleosam | 0:0ccd34c56c66 | 611 | } |
nucleosam | 0:0ccd34c56c66 | 612 | |
nucleosam | 0:0ccd34c56c66 | 613 | /** |
nucleosam | 0:0ccd34c56c66 | 614 | * @brief Going to a specified position with a specificied direction. |
nucleosam | 0:0ccd34c56c66 | 615 | * @param direction The desired direction. |
nucleosam | 0:0ccd34c56c66 | 616 | * @param position The desired position. |
nucleosam | 0:0ccd34c56c66 | 617 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 618 | */ |
nucleosam | 0:0ccd34c56c66 | 619 | virtual void GoTo(direction_t direction, signed int position) |
nucleosam | 0:0ccd34c56c66 | 620 | { |
nucleosam | 0:0ccd34c56c66 | 621 | Stspin220_GoToDir((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD),(int32_t)position); |
nucleosam | 0:0ccd34c56c66 | 622 | } |
nucleosam | 0:0ccd34c56c66 | 623 | |
nucleosam | 0:0ccd34c56c66 | 624 | /** |
nucleosam | 0:0ccd34c56c66 | 625 | * @brief Put STSPIN220 device in standby (low power consumption) by |
nucleosam | 0:0ccd34c56c66 | 626 | * setting STBY\RESET pin to low level and changing the motion state to |
nucleosam | 0:0ccd34c56c66 | 627 | * STANDBY. |
nucleosam | 0:0ccd34c56c66 | 628 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 629 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 630 | */ |
nucleosam | 0:0ccd34c56c66 | 631 | virtual void PutDeviceInStandby(void) |
nucleosam | 0:0ccd34c56c66 | 632 | { |
nucleosam | 0:0ccd34c56c66 | 633 | Stspin220_PutDeviceInStandby(); |
nucleosam | 0:0ccd34c56c66 | 634 | } |
nucleosam | 0:0ccd34c56c66 | 635 | |
nucleosam | 0:0ccd34c56c66 | 636 | /** |
nucleosam | 0:0ccd34c56c66 | 637 | * @brief Release the STSPIN220 reset (Reset pin set to high level). |
nucleosam | 0:0ccd34c56c66 | 638 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 639 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 640 | */ |
nucleosam | 0:0ccd34c56c66 | 641 | virtual void ReleaseReset(void) |
nucleosam | 0:0ccd34c56c66 | 642 | { |
nucleosam | 0:0ccd34c56c66 | 643 | Stspin220_Board_ReleaseReset(); |
nucleosam | 0:0ccd34c56c66 | 644 | } |
nucleosam | 0:0ccd34c56c66 | 645 | |
nucleosam | 0:0ccd34c56c66 | 646 | /** |
nucleosam | 0:0ccd34c56c66 | 647 | * @brief Reset the STSPIN220 (Reset pin set to low level). |
nucleosam | 0:0ccd34c56c66 | 648 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 649 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 650 | */ |
nucleosam | 0:0ccd34c56c66 | 651 | virtual void Reset(void) |
nucleosam | 0:0ccd34c56c66 | 652 | { |
nucleosam | 0:0ccd34c56c66 | 653 | Stspin220_Board_Reset(); |
nucleosam | 0:0ccd34c56c66 | 654 | } |
nucleosam | 0:0ccd34c56c66 | 655 | |
nucleosam | 0:0ccd34c56c66 | 656 | /** |
nucleosam | 0:0ccd34c56c66 | 657 | * @brief Set the motor direction. |
nucleosam | 0:0ccd34c56c66 | 658 | * @param direction The desired direction. |
nucleosam | 0:0ccd34c56c66 | 659 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 660 | */ |
nucleosam | 0:0ccd34c56c66 | 661 | virtual void SetDirection(direction_t direction) |
nucleosam | 0:0ccd34c56c66 | 662 | { |
nucleosam | 0:0ccd34c56c66 | 663 | Stspin220_SetDirection((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD)); |
nucleosam | 0:0ccd34c56c66 | 664 | } |
nucleosam | 0:0ccd34c56c66 | 665 | |
nucleosam | 0:0ccd34c56c66 | 666 | /** |
nucleosam | 0:0ccd34c56c66 | 667 | * @brief Set the frequency of the PWM for REF pin |
nucleosam | 0:0ccd34c56c66 | 668 | * @param frequency in Hz |
nucleosam | 0:0ccd34c56c66 | 669 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 670 | */ |
nucleosam | 0:0ccd34c56c66 | 671 | virtual void SetFreqVrefPwm(uint32_t frequency) |
nucleosam | 0:0ccd34c56c66 | 672 | { |
nucleosam | 0:0ccd34c56c66 | 673 | Stspin220_VrefPwmSetFreq(frequency); |
nucleosam | 0:0ccd34c56c66 | 674 | } |
nucleosam | 0:0ccd34c56c66 | 675 | |
nucleosam | 0:0ccd34c56c66 | 676 | /** |
nucleosam | 0:0ccd34c56c66 | 677 | * @brief Set the motor stop mode. |
nucleosam | 0:0ccd34c56c66 | 678 | * @param stopMode The desired stop mode (HOLD_MODE, HIZ_MODE or |
nucleosam | 0:0ccd34c56c66 | 679 | * STANDBY_MODE). |
nucleosam | 0:0ccd34c56c66 | 680 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 681 | */ |
nucleosam | 0:0ccd34c56c66 | 682 | virtual void SetStopMode(motorStopMode_t stopMode) |
nucleosam | 0:0ccd34c56c66 | 683 | { |
nucleosam | 0:0ccd34c56c66 | 684 | Stspin220_SetStopMode(stopMode); |
nucleosam | 0:0ccd34c56c66 | 685 | } |
nucleosam | 0:0ccd34c56c66 | 686 | |
nucleosam | 0:0ccd34c56c66 | 687 | /** |
nucleosam | 0:0ccd34c56c66 | 688 | * @brief Set the motor torque. |
nucleosam | 0:0ccd34c56c66 | 689 | * @param torqueMode Torque mode as specified in enum motorTorqueMode_t |
nucleosam | 0:0ccd34c56c66 | 690 | * @param torqueValue in % (from 0 to 100) |
nucleosam | 0:0ccd34c56c66 | 691 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 692 | */ |
nucleosam | 0:0ccd34c56c66 | 693 | virtual void SetTorque(motorTorqueMode_t torqueMode, uint8_t torqueValue) |
nucleosam | 0:0ccd34c56c66 | 694 | { |
nucleosam | 0:0ccd34c56c66 | 695 | Stspin220_SetTorque(torqueMode, torqueValue); |
nucleosam | 0:0ccd34c56c66 | 696 | } |
nucleosam | 0:0ccd34c56c66 | 697 | |
nucleosam | 0:0ccd34c56c66 | 698 | /** |
nucleosam | 0:0ccd34c56c66 | 699 | * @brief Enable or disable the motor torque boost feature. |
nucleosam | 0:0ccd34c56c66 | 700 | * @param enable enable true to enable torque boost, false to disable |
nucleosam | 0:0ccd34c56c66 | 701 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 702 | */ |
nucleosam | 0:0ccd34c56c66 | 703 | virtual void SetTorqueBoostEnable(bool enable) |
nucleosam | 0:0ccd34c56c66 | 704 | { |
nucleosam | 0:0ccd34c56c66 | 705 | Stspin220_SetTorqueBoostEnable(enable); |
nucleosam | 0:0ccd34c56c66 | 706 | } |
nucleosam | 0:0ccd34c56c66 | 707 | |
nucleosam | 0:0ccd34c56c66 | 708 | /** |
nucleosam | 0:0ccd34c56c66 | 709 | * @brief Set the torque boost threshold |
nucleosam | 0:0ccd34c56c66 | 710 | * @param[in] speedThreshold speed threshold above which the step mode is |
nucleosam | 0:0ccd34c56c66 | 711 | * changed to full step |
nucleosam | 0:0ccd34c56c66 | 712 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 713 | */ |
nucleosam | 0:0ccd34c56c66 | 714 | virtual void SetTorqueBoostThreshold(uint16_t speedThreshold) |
nucleosam | 0:0ccd34c56c66 | 715 | { |
nucleosam | 0:0ccd34c56c66 | 716 | Stspin220_SetTorqueBoostThreshold(speedThreshold); |
nucleosam | 0:0ccd34c56c66 | 717 | } |
nucleosam | 0:0ccd34c56c66 | 718 | |
nucleosam | 0:0ccd34c56c66 | 719 | /*** Public Interrupt Related Methods ***/ |
nucleosam | 0:0ccd34c56c66 | 720 | |
nucleosam | 0:0ccd34c56c66 | 721 | /* ACTION 6 --------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 722 | * Implement here interrupt related methods, if any. * |
nucleosam | 0:0ccd34c56c66 | 723 | * Note that interrupt handling is platform dependent, e.g.: * |
nucleosam | 0:0ccd34c56c66 | 724 | * + mbed: * |
nucleosam | 0:0ccd34c56c66 | 725 | * InterruptIn feature_irq(pin); //Interrupt object. * |
nucleosam | 0:0ccd34c56c66 | 726 | * feature_irq.rise(callback); //Attach a callback. * |
nucleosam | 0:0ccd34c56c66 | 727 | * feature_irq.mode(PullNone); //Set interrupt mode. * |
nucleosam | 0:0ccd34c56c66 | 728 | * feature_irq.enable_irq(); //Enable interrupt. * |
nucleosam | 0:0ccd34c56c66 | 729 | * feature_irq.disable_irq(); //Disable interrupt. * |
nucleosam | 0:0ccd34c56c66 | 730 | * + Arduino: * |
nucleosam | 0:0ccd34c56c66 | 731 | * attachInterrupt(pin, callback, RISING); //Attach a callback. * |
nucleosam | 0:0ccd34c56c66 | 732 | * detachInterrupt(pin); //Detach a callback. * |
nucleosam | 0:0ccd34c56c66 | 733 | * * |
nucleosam | 0:0ccd34c56c66 | 734 | * Example (mbed): * |
nucleosam | 0:0ccd34c56c66 | 735 | * void AttachFeatureIRQ(void (*fptr) (void)) * |
nucleosam | 0:0ccd34c56c66 | 736 | * { * |
nucleosam | 0:0ccd34c56c66 | 737 | * feature_irq.rise(fptr); * |
nucleosam | 0:0ccd34c56c66 | 738 | * } * |
nucleosam | 0:0ccd34c56c66 | 739 | * * |
nucleosam | 0:0ccd34c56c66 | 740 | * void EnableFeatureIRQ(void) * |
nucleosam | 0:0ccd34c56c66 | 741 | * { * |
nucleosam | 0:0ccd34c56c66 | 742 | * feature_irq.enable_irq(); * |
nucleosam | 0:0ccd34c56c66 | 743 | * } * |
nucleosam | 0:0ccd34c56c66 | 744 | * * |
nucleosam | 0:0ccd34c56c66 | 745 | * void DisableFeatureIRQ(void) * |
nucleosam | 0:0ccd34c56c66 | 746 | * { * |
nucleosam | 0:0ccd34c56c66 | 747 | * feature_irq.disable_irq(); * |
nucleosam | 0:0ccd34c56c66 | 748 | * } * |
nucleosam | 0:0ccd34c56c66 | 749 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 750 | /** |
nucleosam | 0:0ccd34c56c66 | 751 | * @brief Attaching an interrupt handler to the FLAG interrupt. |
nucleosam | 0:0ccd34c56c66 | 752 | * @param fptr An interrupt handler. |
nucleosam | 0:0ccd34c56c66 | 753 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 754 | */ |
nucleosam | 0:0ccd34c56c66 | 755 | |
nucleosam | 0:0ccd34c56c66 | 756 | void AttachFlagIRQ(void (*fptr)(void)) |
nucleosam | 0:0ccd34c56c66 | 757 | { |
nucleosam | 0:0ccd34c56c66 | 758 | fault_and_enable_irqFunctionPointer = &(*fptr); |
nucleosam | 0:0ccd34c56c66 | 759 | fault_and_enable.fall(fptr); |
nucleosam | 0:0ccd34c56c66 | 760 | fault_and_enable.mode(PullDown); |
nucleosam | 0:0ccd34c56c66 | 761 | wait_ms(1); |
nucleosam | 0:0ccd34c56c66 | 762 | } |
nucleosam | 0:0ccd34c56c66 | 763 | |
nucleosam | 0:0ccd34c56c66 | 764 | /** |
nucleosam | 0:0ccd34c56c66 | 765 | * @brief Enabling the FLAG interrupt handling. |
nucleosam | 0:0ccd34c56c66 | 766 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 767 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 768 | */ |
nucleosam | 0:0ccd34c56c66 | 769 | void EnableFlagIRQ(void) |
nucleosam | 0:0ccd34c56c66 | 770 | { |
nucleosam | 0:0ccd34c56c66 | 771 | fault_and_enable.enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 772 | } |
nucleosam | 0:0ccd34c56c66 | 773 | |
nucleosam | 0:0ccd34c56c66 | 774 | protected: |
nucleosam | 0:0ccd34c56c66 | 775 | |
nucleosam | 0:0ccd34c56c66 | 776 | /*** Protected Component Related Methods ***/ |
nucleosam | 0:0ccd34c56c66 | 777 | |
nucleosam | 0:0ccd34c56c66 | 778 | /* ACTION 7 --------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 779 | * Declare here the component's specific methods. * |
nucleosam | 0:0ccd34c56c66 | 780 | * They should be: * |
nucleosam | 0:0ccd34c56c66 | 781 | * + Methods with the same name of the C component's virtual table's * |
nucleosam | 0:0ccd34c56c66 | 782 | * functions (1); * |
nucleosam | 0:0ccd34c56c66 | 783 | * + Methods with the same name of the C component's extended virtual * |
nucleosam | 0:0ccd34c56c66 | 784 | * table's functions, if any (2); * |
nucleosam | 0:0ccd34c56c66 | 785 | * + Helper methods, if any, like functions declared in the component's * |
nucleosam | 0:0ccd34c56c66 | 786 | * source files but not pointed by the component's virtual table (3). * |
nucleosam | 0:0ccd34c56c66 | 787 | * * |
nucleosam | 0:0ccd34c56c66 | 788 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 789 | * Status_t COMPONENT_GetValue(float *f); //(1) * |
nucleosam | 0:0ccd34c56c66 | 790 | * Status_t COMPONENT_EnableFeature(void); //(2) * |
nucleosam | 0:0ccd34c56c66 | 791 | * Status_t COMPONENT_ComputeAverage(void); //(3) * |
nucleosam | 0:0ccd34c56c66 | 792 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 793 | Status_t Stspin220_Init(void *init); |
nucleosam | 0:0ccd34c56c66 | 794 | Status_t Stspin220_ReadID(uint8_t *id); |
nucleosam | 0:0ccd34c56c66 | 795 | void Stspin220_AttachErrorHandler(void (*callback)(uint16_t error)); |
nucleosam | 0:0ccd34c56c66 | 796 | void Stspin220_ApplyTorque(motorTorqueMode_t torqueMode); |
nucleosam | 0:0ccd34c56c66 | 797 | void Stspin220_Disable(void); |
nucleosam | 0:0ccd34c56c66 | 798 | void Stspin220_ErrorHandler(uint16_t error); |
nucleosam | 0:0ccd34c56c66 | 799 | void Stspin220_Enable(void); |
nucleosam | 0:0ccd34c56c66 | 800 | void Stspin220_ExitDeviceFromStandby(void); |
nucleosam | 0:0ccd34c56c66 | 801 | uint16_t Stspin220_GetAcceleration(void); |
nucleosam | 0:0ccd34c56c66 | 802 | uint16_t Stspin220_GetCurrentSpeed(void); |
nucleosam | 0:0ccd34c56c66 | 803 | uint16_t Stspin220_GetDeceleration(void); |
nucleosam | 0:0ccd34c56c66 | 804 | motorState_t Stspin220_GetDeviceState(void); |
nucleosam | 0:0ccd34c56c66 | 805 | motorDir_t Stspin220_GetDirection(void); |
nucleosam | 0:0ccd34c56c66 | 806 | uint32_t Stspin220_GetFwVersion(void); |
nucleosam | 0:0ccd34c56c66 | 807 | int32_t Stspin220_GetMark(void); |
nucleosam | 0:0ccd34c56c66 | 808 | uint16_t Stspin220_GetMaxSpeed(void); |
nucleosam | 0:0ccd34c56c66 | 809 | uint16_t Stspin220_GetMinSpeed(void); |
nucleosam | 0:0ccd34c56c66 | 810 | int32_t Stspin220_GetPosition(void); |
nucleosam | 0:0ccd34c56c66 | 811 | motorStepMode_t Stspin220_GetStepMode(void); |
nucleosam | 0:0ccd34c56c66 | 812 | motorStopMode_t Stspin220_GetStopMode(void); |
nucleosam | 0:0ccd34c56c66 | 813 | uint8_t Stspin220_GetTorque(motorTorqueMode_t torqueMode); |
nucleosam | 0:0ccd34c56c66 | 814 | bool Stspin220_GetTorqueBoostEnable(void); |
nucleosam | 0:0ccd34c56c66 | 815 | uint16_t Stspin220_GetTorqueBoostThreshold(void); |
nucleosam | 0:0ccd34c56c66 | 816 | void Stspin220_GoHome(void); |
nucleosam | 0:0ccd34c56c66 | 817 | void Stspin220_GoMark(void); |
nucleosam | 0:0ccd34c56c66 | 818 | void Stspin220_GoTo(int32_t targetPosition); |
nucleosam | 0:0ccd34c56c66 | 819 | void Stspin220_GoToDir(motorDir_t direction, int32_t targetPosition); |
nucleosam | 0:0ccd34c56c66 | 820 | void Stspin220_HardHiZ(void); |
nucleosam | 0:0ccd34c56c66 | 821 | void Stspin220_HardStop(void); |
nucleosam | 0:0ccd34c56c66 | 822 | void Stspin220_Move(motorDir_t direction, uint32_t stepCount); |
nucleosam | 0:0ccd34c56c66 | 823 | void Stspin220_PutDeviceInStandby(void); |
nucleosam | 0:0ccd34c56c66 | 824 | void Stspin220_Run(motorDir_t direction); |
nucleosam | 0:0ccd34c56c66 | 825 | bool Stspin220_SetAcceleration(uint16_t newAcc); |
nucleosam | 0:0ccd34c56c66 | 826 | bool Stspin220_SetDeceleration(uint16_t newDec); |
nucleosam | 0:0ccd34c56c66 | 827 | void Stspin220_SetDirection(motorDir_t direction); |
nucleosam | 0:0ccd34c56c66 | 828 | void Stspin220_SetHome(void); |
nucleosam | 0:0ccd34c56c66 | 829 | void Stspin220_SetMark(void); |
nucleosam | 0:0ccd34c56c66 | 830 | bool Stspin220_SetMaxSpeed(uint16_t volatile newSpeed); |
nucleosam | 0:0ccd34c56c66 | 831 | bool Stspin220_SetMinSpeed(uint16_t volatile newSpeed); |
nucleosam | 0:0ccd34c56c66 | 832 | bool Stspin220_SetStepMode(motorStepMode_t stepMode); |
nucleosam | 0:0ccd34c56c66 | 833 | void Stspin220_SetStopMode(motorStopMode_t stopMode); |
nucleosam | 0:0ccd34c56c66 | 834 | bool Stspin220_SoftStop(void); |
nucleosam | 0:0ccd34c56c66 | 835 | void Stspin220_SetTorque(motorTorqueMode_t torqueMode, uint8_t torqueValue); |
nucleosam | 0:0ccd34c56c66 | 836 | void Stspin220_SetTorqueBoostEnable(bool enable); |
nucleosam | 0:0ccd34c56c66 | 837 | void Stspin220_SetTorqueBoostThreshold(uint16_t speedThreshold); |
nucleosam | 0:0ccd34c56c66 | 838 | uint32_t Stspin220_VrefPwmGetFreq(void); |
nucleosam | 0:0ccd34c56c66 | 839 | void Stspin220_VrefPwmSetFreq(uint32_t newFreq); |
nucleosam | 0:0ccd34c56c66 | 840 | void Stspin220_WaitWhileActive(void); |
nucleosam | 0:0ccd34c56c66 | 841 | |
nucleosam | 0:0ccd34c56c66 | 842 | /*** Functions intended to be used only internally ***/ |
nucleosam | 0:0ccd34c56c66 | 843 | void Stspin220_ApplySpeed(uint16_t newSpeed); |
nucleosam | 0:0ccd34c56c66 | 844 | void Stspin220_ComputeSpeedProfile(uint32_t nbSteps); |
nucleosam | 0:0ccd34c56c66 | 845 | void Stspin220_SetDeviceParamsToGivenValues(Stspin220_Init_t* pInitDevicePrm); |
nucleosam | 0:0ccd34c56c66 | 846 | void Stspin220_SetDeviceParamsOtherValues(void); |
nucleosam | 0:0ccd34c56c66 | 847 | void Stspin220_SetDeviceParamsToPredefinedValues(void); |
nucleosam | 0:0ccd34c56c66 | 848 | bool Stspin220_SetStepModeWithoutReset(motorStepMode_t stepMode); |
nucleosam | 0:0ccd34c56c66 | 849 | void Stspin220_StartMovement(void); |
nucleosam | 0:0ccd34c56c66 | 850 | void Stspin220_StepClockHandler(void); |
nucleosam | 0:0ccd34c56c66 | 851 | |
nucleosam | 0:0ccd34c56c66 | 852 | /*** Component's I/O Methods ***/ |
nucleosam | 0:0ccd34c56c66 | 853 | |
nucleosam | 0:0ccd34c56c66 | 854 | /* ACTION 8 --------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 855 | * Implement here other I/O methods beyond those already implemented * |
nucleosam | 0:0ccd34c56c66 | 856 | * above, which are declared extern within the component's header file. * |
nucleosam | 0:0ccd34c56c66 | 857 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 858 | /** |
nucleosam | 0:0ccd34c56c66 | 859 | * @brief Making the CPU wait. |
nucleosam | 0:0ccd34c56c66 | 860 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 861 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 862 | */ |
nucleosam | 0:0ccd34c56c66 | 863 | void Stspin220_Board_Delay(uint32_t delay) |
nucleosam | 0:0ccd34c56c66 | 864 | { |
nucleosam | 0:0ccd34c56c66 | 865 | wait_ms(delay); |
nucleosam | 0:0ccd34c56c66 | 866 | } |
nucleosam | 0:0ccd34c56c66 | 867 | |
nucleosam | 0:0ccd34c56c66 | 868 | /** |
nucleosam | 0:0ccd34c56c66 | 869 | * @brief Disable the power bridges (leave the output bridges HiZ). |
nucleosam | 0:0ccd34c56c66 | 870 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 871 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 872 | */ |
nucleosam | 0:0ccd34c56c66 | 873 | void Stspin220_Board_Disable(void) |
nucleosam | 0:0ccd34c56c66 | 874 | { |
nucleosam | 0:0ccd34c56c66 | 875 | fault_and_enable.disable_irq(); |
nucleosam | 0:0ccd34c56c66 | 876 | DigitalOut fault_and_enable(fault_and_enable_pinName); |
nucleosam | 0:0ccd34c56c66 | 877 | fault_and_enable.write(0); |
nucleosam | 0:0ccd34c56c66 | 878 | } |
nucleosam | 0:0ccd34c56c66 | 879 | |
nucleosam | 0:0ccd34c56c66 | 880 | /** |
nucleosam | 0:0ccd34c56c66 | 881 | * @brief Disabling interrupts. |
nucleosam | 0:0ccd34c56c66 | 882 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 883 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 884 | */ |
nucleosam | 0:0ccd34c56c66 | 885 | void Stspin220_Board_DisableIrq(void) |
nucleosam | 0:0ccd34c56c66 | 886 | { |
nucleosam | 0:0ccd34c56c66 | 887 | __disable_irq(); |
nucleosam | 0:0ccd34c56c66 | 888 | } |
nucleosam | 0:0ccd34c56c66 | 889 | |
nucleosam | 0:0ccd34c56c66 | 890 | /** |
nucleosam | 0:0ccd34c56c66 | 891 | * @brief Enable the power bridges (leave the output bridges HiZ). |
nucleosam | 0:0ccd34c56c66 | 892 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 893 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 894 | */ |
nucleosam | 0:0ccd34c56c66 | 895 | void Stspin220_Board_Enable(void) |
nucleosam | 0:0ccd34c56c66 | 896 | { |
nucleosam | 0:0ccd34c56c66 | 897 | DigitalOut fault_and_enable_do(fault_and_enable_pinName); |
nucleosam | 0:0ccd34c56c66 | 898 | fault_and_enable_do.write(1); |
nucleosam | 0:0ccd34c56c66 | 899 | fault_and_enable.fall(fault_and_enable_irqFunctionPointer); |
nucleosam | 0:0ccd34c56c66 | 900 | fault_and_enable.mode(PullUp); |
nucleosam | 0:0ccd34c56c66 | 901 | wait_ms(1); |
nucleosam | 0:0ccd34c56c66 | 902 | fault_and_enable.enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 903 | } |
nucleosam | 0:0ccd34c56c66 | 904 | |
nucleosam | 0:0ccd34c56c66 | 905 | /** |
nucleosam | 0:0ccd34c56c66 | 906 | * @brief Enabling interrupts. |
nucleosam | 0:0ccd34c56c66 | 907 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 908 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 909 | */ |
nucleosam | 0:0ccd34c56c66 | 910 | void Stspin220_Board_EnableIrq(void) |
nucleosam | 0:0ccd34c56c66 | 911 | { |
nucleosam | 0:0ccd34c56c66 | 912 | __enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 913 | } |
nucleosam | 0:0ccd34c56c66 | 914 | |
nucleosam | 0:0ccd34c56c66 | 915 | /** |
nucleosam | 0:0ccd34c56c66 | 916 | * @brief Set the duty cycle of the PwmOut used for the REF |
nucleosam | 0:0ccd34c56c66 | 917 | * reference voltage generation and actually start the pwm if the duty cycle |
nucleosam | 0:0ccd34c56c66 | 918 | * is not zero. |
nucleosam | 0:0ccd34c56c66 | 919 | * @param[in] dutyCycle 0 - 100% |
nucleosam | 0:0ccd34c56c66 | 920 | * @retval None |
nucleosam | 0:0ccd34c56c66 | 921 | */ |
nucleosam | 0:0ccd34c56c66 | 922 | void Stspin220_Board_PwmRefSetDutyCycle(uint8_t dutyCycle) |
nucleosam | 0:0ccd34c56c66 | 923 | { |
nucleosam | 0:0ccd34c56c66 | 924 | pwm_ref.write(((float)(100-dutyCycle))/100); |
nucleosam | 0:0ccd34c56c66 | 925 | } |
nucleosam | 0:0ccd34c56c66 | 926 | |
nucleosam | 0:0ccd34c56c66 | 927 | /** |
nucleosam | 0:0ccd34c56c66 | 928 | * @brief Set the frequency of the PwmOut used for the REF |
nucleosam | 0:0ccd34c56c66 | 929 | * reference voltage generation. |
nucleosam | 0:0ccd34c56c66 | 930 | * @param[in] newFreq in Hz. |
nucleosam | 0:0ccd34c56c66 | 931 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 932 | */ |
nucleosam | 0:0ccd34c56c66 | 933 | void Stspin220_Board_PwmRefSetFreq(uint32_t newFreq) |
nucleosam | 0:0ccd34c56c66 | 934 | { |
nucleosam | 0:0ccd34c56c66 | 935 | pwm_ref.period_us(1000000.0f/newFreq); |
nucleosam | 0:0ccd34c56c66 | 936 | } |
nucleosam | 0:0ccd34c56c66 | 937 | |
nucleosam | 0:0ccd34c56c66 | 938 | /** |
nucleosam | 0:0ccd34c56c66 | 939 | * @brief Start the PwmOut for the REF pin. |
nucleosam | 0:0ccd34c56c66 | 940 | * @param[in] frequency frequency of the PwmOut used to generate the REF |
nucleosam | 0:0ccd34c56c66 | 941 | * reference voltage for the bridges. |
nucleosam | 0:0ccd34c56c66 | 942 | * @param[in] torqueMode Torque mode as specified in enum motorTorqueMode_t |
nucleosam | 0:0ccd34c56c66 | 943 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 944 | */ |
nucleosam | 0:0ccd34c56c66 | 945 | void Stspin220_Board_PwmRefStart(uint32_t frequency, motorTorqueMode_t torqueMode) |
nucleosam | 0:0ccd34c56c66 | 946 | { |
nucleosam | 0:0ccd34c56c66 | 947 | /* Setting the period of the PwmOut. */ |
nucleosam | 0:0ccd34c56c66 | 948 | pwm_ref.period_us(1000000.0f/frequency); |
nucleosam | 0:0ccd34c56c66 | 949 | /* Setting the duty cycle and actually starting the of the PwmOut. */ |
nucleosam | 0:0ccd34c56c66 | 950 | Stspin220_ApplyTorque(torqueMode); |
nucleosam | 0:0ccd34c56c66 | 951 | wait_ms(5*PWM_FILTER_TIME_CONSTANT); |
nucleosam | 0:0ccd34c56c66 | 952 | } |
nucleosam | 0:0ccd34c56c66 | 953 | |
nucleosam | 0:0ccd34c56c66 | 954 | /** |
nucleosam | 0:0ccd34c56c66 | 955 | * @brief Exit the device from standby reset mode. |
nucleosam | 0:0ccd34c56c66 | 956 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 957 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 958 | */ |
nucleosam | 0:0ccd34c56c66 | 959 | void Stspin220_Board_ReleaseReset(void) |
nucleosam | 0:0ccd34c56c66 | 960 | { |
nucleosam | 0:0ccd34c56c66 | 961 | stby_reset = 1; |
nucleosam | 0:0ccd34c56c66 | 962 | } |
nucleosam | 0:0ccd34c56c66 | 963 | |
nucleosam | 0:0ccd34c56c66 | 964 | /** |
nucleosam | 0:0ccd34c56c66 | 965 | * @brief Put the device in standby reset mode. |
nucleosam | 0:0ccd34c56c66 | 966 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 967 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 968 | */ |
nucleosam | 0:0ccd34c56c66 | 969 | void Stspin220_Board_Reset(void) |
nucleosam | 0:0ccd34c56c66 | 970 | { |
nucleosam | 0:0ccd34c56c66 | 971 | stby_reset = 0; |
nucleosam | 0:0ccd34c56c66 | 972 | } |
nucleosam | 0:0ccd34c56c66 | 973 | |
nucleosam | 0:0ccd34c56c66 | 974 | /** |
nucleosam | 0:0ccd34c56c66 | 975 | * @brief Set the DIR\MODE4 pin. |
nucleosam | 0:0ccd34c56c66 | 976 | * @param dir motor direction FORWARD or BACKWARD. |
nucleosam | 0:0ccd34c56c66 | 977 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 978 | */ |
nucleosam | 0:0ccd34c56c66 | 979 | void Stspin220_Board_SetDirectionGpio(motorDir_t dir) |
nucleosam | 0:0ccd34c56c66 | 980 | { |
nucleosam | 0:0ccd34c56c66 | 981 | if (dir==BACKWARD) direction_mode4 = 0; |
nucleosam | 0:0ccd34c56c66 | 982 | else direction_mode4 = 1; |
nucleosam | 0:0ccd34c56c66 | 983 | } |
nucleosam | 0:0ccd34c56c66 | 984 | |
nucleosam | 0:0ccd34c56c66 | 985 | /** |
nucleosam | 0:0ccd34c56c66 | 986 | * @brief Select Full Step mode |
nucleosam | 0:0ccd34c56c66 | 987 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 988 | * @retval None |
nucleosam | 0:0ccd34c56c66 | 989 | */ |
nucleosam | 0:0ccd34c56c66 | 990 | void Stspin220_Board_SetFullStep(void) |
nucleosam | 0:0ccd34c56c66 | 991 | { |
nucleosam | 0:0ccd34c56c66 | 992 | mode1 = 0; |
nucleosam | 0:0ccd34c56c66 | 993 | mode2 = 0; |
nucleosam | 0:0ccd34c56c66 | 994 | } |
nucleosam | 0:0ccd34c56c66 | 995 | |
nucleosam | 0:0ccd34c56c66 | 996 | /** |
nucleosam | 0:0ccd34c56c66 | 997 | * @brief Select the STSPIN220 mode1, mode2, mode3 and mode4 pins levels. |
nucleosam | 0:0ccd34c56c66 | 998 | * @param[in] modePin1Level level of the mode1 gpio (0 low, 1+ high) |
nucleosam | 0:0ccd34c56c66 | 999 | * @param[in] modePin2Level level of the mode2 gpio (0 low, 1+ high) |
nucleosam | 0:0ccd34c56c66 | 1000 | * @param[in] modePin3Level level of the mode3 gpio (0 low, 1+ high) |
nucleosam | 0:0ccd34c56c66 | 1001 | * @param[in] modePin4Level level of the mode4 gpio (0 low, 1+ high) |
nucleosam | 0:0ccd34c56c66 | 1002 | * @retval 1 |
nucleosam | 0:0ccd34c56c66 | 1003 | */ |
nucleosam | 0:0ccd34c56c66 | 1004 | uint8_t Stspin220_Board_SetModePins(uint8_t modePin1Level,\ |
nucleosam | 0:0ccd34c56c66 | 1005 | uint8_t modePin2Level,\ |
nucleosam | 0:0ccd34c56c66 | 1006 | uint8_t modePin3Level,\ |
nucleosam | 0:0ccd34c56c66 | 1007 | uint8_t modePin4Level) |
nucleosam | 0:0ccd34c56c66 | 1008 | { |
nucleosam | 0:0ccd34c56c66 | 1009 | mode1 = modePin1Level; |
nucleosam | 0:0ccd34c56c66 | 1010 | mode2 = modePin2Level; |
nucleosam | 0:0ccd34c56c66 | 1011 | stck_mode3 = modePin3Level; |
nucleosam | 0:0ccd34c56c66 | 1012 | direction_mode4 = modePin4Level; |
nucleosam | 0:0ccd34c56c66 | 1013 | return 1; |
nucleosam | 0:0ccd34c56c66 | 1014 | } |
nucleosam | 0:0ccd34c56c66 | 1015 | |
nucleosam | 0:0ccd34c56c66 | 1016 | /** |
nucleosam | 0:0ccd34c56c66 | 1017 | * @brief Reset the STCK\MODE3 pin. |
nucleosam | 0:0ccd34c56c66 | 1018 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 1019 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 1020 | */ |
nucleosam | 0:0ccd34c56c66 | 1021 | void Stspin220_Board_StckMode3_Reset(void) |
nucleosam | 0:0ccd34c56c66 | 1022 | { |
nucleosam | 0:0ccd34c56c66 | 1023 | stck_mode3 = 0; |
nucleosam | 0:0ccd34c56c66 | 1024 | } |
nucleosam | 0:0ccd34c56c66 | 1025 | |
nucleosam | 0:0ccd34c56c66 | 1026 | /** |
nucleosam | 0:0ccd34c56c66 | 1027 | * @brief Set the STCK\MODE3 pin. |
nucleosam | 0:0ccd34c56c66 | 1028 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 1029 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 1030 | */ |
nucleosam | 0:0ccd34c56c66 | 1031 | void Stspin220_Board_StckMode3_Set(void) |
nucleosam | 0:0ccd34c56c66 | 1032 | { |
nucleosam | 0:0ccd34c56c66 | 1033 | stck_mode3 = 1; |
nucleosam | 0:0ccd34c56c66 | 1034 | } |
nucleosam | 0:0ccd34c56c66 | 1035 | |
nucleosam | 0:0ccd34c56c66 | 1036 | /** |
nucleosam | 0:0ccd34c56c66 | 1037 | * @brief Initialises the step clock pin level |
nucleosam | 0:0ccd34c56c66 | 1038 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 1039 | * @retval None |
nucleosam | 0:0ccd34c56c66 | 1040 | */ |
nucleosam | 0:0ccd34c56c66 | 1041 | void Stspin220_Board_TimStckInit(bool check) |
nucleosam | 0:0ccd34c56c66 | 1042 | { |
nucleosam | 0:0ccd34c56c66 | 1043 | if (monitor.is_connected()) monitor = 0; |
nucleosam | 0:0ccd34c56c66 | 1044 | if (check==false) stck_mode3 = 0; |
nucleosam | 0:0ccd34c56c66 | 1045 | else if (stck_mode3==1) Stspin220_ErrorHandler(STSPIN220_ERROR_STEP_CLOCK); |
nucleosam | 0:0ccd34c56c66 | 1046 | } |
nucleosam | 0:0ccd34c56c66 | 1047 | |
nucleosam | 0:0ccd34c56c66 | 1048 | /** |
nucleosam | 0:0ccd34c56c66 | 1049 | * @brief Setting the Stck Timeout delay |
nucleosam | 0:0ccd34c56c66 | 1050 | * and attaching a callback function to it. |
nucleosam | 0:0ccd34c56c66 | 1051 | * @param frequency The frequency corresponding to the delay. |
nucleosam | 0:0ccd34c56c66 | 1052 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 1053 | */ |
nucleosam | 0:0ccd34c56c66 | 1054 | void Stspin220_Board_TimStckSetFreq(uint16_t newFreq) |
nucleosam | 0:0ccd34c56c66 | 1055 | { |
nucleosam | 0:0ccd34c56c66 | 1056 | /* Computing the delay of the Timeout. */ |
nucleosam | 0:0ccd34c56c66 | 1057 | float delay_us = (1000000.0f / 2 )/ newFreq; |
nucleosam | 0:0ccd34c56c66 | 1058 | |
nucleosam | 0:0ccd34c56c66 | 1059 | /* Attaching a function which updates */ |
nucleosam | 0:0ccd34c56c66 | 1060 | /* the state machine after the elapsed period_us time. */ |
nucleosam | 0:0ccd34c56c66 | 1061 | tim_stck.attach_us(this, &STSPIN220::Stspin220_StepClockHandler, delay_us); |
nucleosam | 0:0ccd34c56c66 | 1062 | } |
nucleosam | 0:0ccd34c56c66 | 1063 | |
nucleosam | 0:0ccd34c56c66 | 1064 | void Stspin220_Board_Monitor_Set(void) |
nucleosam | 0:0ccd34c56c66 | 1065 | { |
nucleosam | 0:0ccd34c56c66 | 1066 | if (monitor.is_connected()) monitor = 1; |
nucleosam | 0:0ccd34c56c66 | 1067 | } |
nucleosam | 0:0ccd34c56c66 | 1068 | |
nucleosam | 0:0ccd34c56c66 | 1069 | void Stspin220_Board_Monitor_Reset(void) |
nucleosam | 0:0ccd34c56c66 | 1070 | { |
nucleosam | 0:0ccd34c56c66 | 1071 | if (monitor.is_connected()) monitor = 0; |
nucleosam | 0:0ccd34c56c66 | 1072 | } |
nucleosam | 0:0ccd34c56c66 | 1073 | |
nucleosam | 0:0ccd34c56c66 | 1074 | /** |
nucleosam | 0:0ccd34c56c66 | 1075 | * @brief Stopping the Timeout. |
nucleosam | 0:0ccd34c56c66 | 1076 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 1077 | * @retval None. |
nucleosam | 0:0ccd34c56c66 | 1078 | */ |
nucleosam | 0:0ccd34c56c66 | 1079 | uint8_t Stspin220_Board_TimStckStop(volatile uint8_t *pToggleOdd) |
nucleosam | 0:0ccd34c56c66 | 1080 | { |
nucleosam | 0:0ccd34c56c66 | 1081 | __disable_irq(); |
nucleosam | 0:0ccd34c56c66 | 1082 | if (*pToggleOdd == 1) |
nucleosam | 0:0ccd34c56c66 | 1083 | { |
nucleosam | 0:0ccd34c56c66 | 1084 | __enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 1085 | return 1; |
nucleosam | 0:0ccd34c56c66 | 1086 | } |
nucleosam | 0:0ccd34c56c66 | 1087 | if (stck_mode3 != 0) |
nucleosam | 0:0ccd34c56c66 | 1088 | { |
nucleosam | 0:0ccd34c56c66 | 1089 | __enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 1090 | return 0; |
nucleosam | 0:0ccd34c56c66 | 1091 | } |
nucleosam | 0:0ccd34c56c66 | 1092 | tim_stck.detach(); |
nucleosam | 1:0c33082063bc | 1093 | __enable_irq(); |
nucleosam | 0:0ccd34c56c66 | 1094 | return 1; |
nucleosam | 0:0ccd34c56c66 | 1095 | } |
nucleosam | 0:0ccd34c56c66 | 1096 | |
nucleosam | 0:0ccd34c56c66 | 1097 | /** |
nucleosam | 0:0ccd34c56c66 | 1098 | * @brief Unselect Full Step mode |
nucleosam | 0:0ccd34c56c66 | 1099 | * @param None. |
nucleosam | 0:0ccd34c56c66 | 1100 | * @retval None |
nucleosam | 0:0ccd34c56c66 | 1101 | */ |
nucleosam | 0:0ccd34c56c66 | 1102 | void Stspin220_Board_UnsetFullStep(void) |
nucleosam | 0:0ccd34c56c66 | 1103 | { |
nucleosam | 0:0ccd34c56c66 | 1104 | mode1 = 1; |
nucleosam | 0:0ccd34c56c66 | 1105 | } |
nucleosam | 0:0ccd34c56c66 | 1106 | |
nucleosam | 0:0ccd34c56c66 | 1107 | protected: |
nucleosam | 0:0ccd34c56c66 | 1108 | |
nucleosam | 0:0ccd34c56c66 | 1109 | /*** Component's Instance Variables ***/ |
nucleosam | 0:0ccd34c56c66 | 1110 | |
nucleosam | 0:0ccd34c56c66 | 1111 | /* ACTION 9 --------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 1112 | * Declare here interrupt related variables, if needed. * |
nucleosam | 0:0ccd34c56c66 | 1113 | * Note that interrupt handling is platform dependent, see * |
nucleosam | 0:0ccd34c56c66 | 1114 | * "Interrupt Related Methods" above. * |
nucleosam | 0:0ccd34c56c66 | 1115 | * * |
nucleosam | 0:0ccd34c56c66 | 1116 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 1117 | * + mbed: * |
nucleosam | 0:0ccd34c56c66 | 1118 | * InterruptIn feature_irq; * |
nucleosam | 0:0ccd34c56c66 | 1119 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 1120 | /* Fault Interrupt and chip enable. */ |
nucleosam | 0:0ccd34c56c66 | 1121 | InterruptIn fault_and_enable; |
nucleosam | 0:0ccd34c56c66 | 1122 | |
nucleosam | 0:0ccd34c56c66 | 1123 | /* Interrupt to toggle the MODE3\STCK pin */ |
nucleosam | 0:0ccd34c56c66 | 1124 | Timeout tim_stck; |
nucleosam | 0:0ccd34c56c66 | 1125 | |
nucleosam | 0:0ccd34c56c66 | 1126 | /* ACTION 10 -------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 1127 | * Declare here other pin related variables, if needed. * |
nucleosam | 0:0ccd34c56c66 | 1128 | * * |
nucleosam | 0:0ccd34c56c66 | 1129 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 1130 | * + mbed: * |
nucleosam | 0:0ccd34c56c66 | 1131 | * DigitalOut standby_reset; * |
nucleosam | 0:0ccd34c56c66 | 1132 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 1133 | /* STBY\RESET pin. */ |
nucleosam | 0:0ccd34c56c66 | 1134 | DigitalOut stby_reset; |
nucleosam | 0:0ccd34c56c66 | 1135 | /* MODE4\DIR pin. */ |
nucleosam | 0:0ccd34c56c66 | 1136 | DigitalOut direction_mode4; |
nucleosam | 0:0ccd34c56c66 | 1137 | /* MODE1 pin */ |
nucleosam | 0:0ccd34c56c66 | 1138 | DigitalOut mode1; |
nucleosam | 0:0ccd34c56c66 | 1139 | /* MODE2 pin */ |
nucleosam | 0:0ccd34c56c66 | 1140 | DigitalOut mode2; |
nucleosam | 0:0ccd34c56c66 | 1141 | /* MODE3\STCK pin. */ |
nucleosam | 0:0ccd34c56c66 | 1142 | DigitalOut stck_mode3; |
nucleosam | 0:0ccd34c56c66 | 1143 | |
nucleosam | 0:0ccd34c56c66 | 1144 | /* Pulse Width Modulation pin for REF pin */ |
nucleosam | 0:0ccd34c56c66 | 1145 | PwmOut pwm_ref; |
nucleosam | 0:0ccd34c56c66 | 1146 | |
nucleosam | 0:0ccd34c56c66 | 1147 | /* Monitoring of step clock handler duration */ |
nucleosam | 0:0ccd34c56c66 | 1148 | DigitalOut monitor; |
nucleosam | 0:0ccd34c56c66 | 1149 | |
nucleosam | 0:0ccd34c56c66 | 1150 | /* fault and enable pin */ |
nucleosam | 0:0ccd34c56c66 | 1151 | PinName fault_and_enable_pinName; |
nucleosam | 0:0ccd34c56c66 | 1152 | |
nucleosam | 0:0ccd34c56c66 | 1153 | /* ACTION 11 -------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 1154 | * Declare here communication related variables, if needed. * |
nucleosam | 0:0ccd34c56c66 | 1155 | * * |
nucleosam | 0:0ccd34c56c66 | 1156 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 1157 | * + mbed: * |
nucleosam | 0:0ccd34c56c66 | 1158 | * DigitalOut ssel; * |
nucleosam | 0:0ccd34c56c66 | 1159 | * DevSPI &dev_spi; * |
nucleosam | 0:0ccd34c56c66 | 1160 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 1161 | /* Configuration. */ |
nucleosam | 0:0ccd34c56c66 | 1162 | |
nucleosam | 0:0ccd34c56c66 | 1163 | /* IO Device. */ |
nucleosam | 0:0ccd34c56c66 | 1164 | |
nucleosam | 0:0ccd34c56c66 | 1165 | /* ACTION 12 -------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 1166 | * Declare here identity related variables, if needed. * |
nucleosam | 0:0ccd34c56c66 | 1167 | * Note that there should be only a unique identifier for each component, * |
nucleosam | 0:0ccd34c56c66 | 1168 | * which should be the "who_am_i" parameter. * |
nucleosam | 0:0ccd34c56c66 | 1169 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 1170 | /* Identity */ |
nucleosam | 0:0ccd34c56c66 | 1171 | uint8_t who_am_i; |
nucleosam | 0:0ccd34c56c66 | 1172 | |
nucleosam | 0:0ccd34c56c66 | 1173 | /* ACTION 13 -------------------------------------------------------------* |
nucleosam | 0:0ccd34c56c66 | 1174 | * Declare here the component's static and non-static data, one variable * |
nucleosam | 0:0ccd34c56c66 | 1175 | * per line. * |
nucleosam | 0:0ccd34c56c66 | 1176 | * * |
nucleosam | 0:0ccd34c56c66 | 1177 | * Example: * |
nucleosam | 0:0ccd34c56c66 | 1178 | * float measure; * |
nucleosam | 0:0ccd34c56c66 | 1179 | * int instance_id; * |
nucleosam | 0:0ccd34c56c66 | 1180 | * static int number_of_instances; * |
nucleosam | 0:0ccd34c56c66 | 1181 | *------------------------------------------------------------------------*/ |
nucleosam | 0:0ccd34c56c66 | 1182 | /* Data. */ |
nucleosam | 0:0ccd34c56c66 | 1183 | void (*fault_and_enable_irqFunctionPointer)(void); |
nucleosam | 0:0ccd34c56c66 | 1184 | void (*errorHandlerCallback)(uint16_t error); |
nucleosam | 0:0ccd34c56c66 | 1185 | deviceParams_t devicePrm; |
nucleosam | 0:0ccd34c56c66 | 1186 | uint8_t deviceInstance; |
nucleosam | 0:0ccd34c56c66 | 1187 | volatile uint8_t toggleOdd; |
nucleosam | 0:0ccd34c56c66 | 1188 | |
nucleosam | 0:0ccd34c56c66 | 1189 | /* Static data. */ |
nucleosam | 0:0ccd34c56c66 | 1190 | static uint8_t numberOfDevices; |
nucleosam | 0:0ccd34c56c66 | 1191 | |
nucleosam | 0:0ccd34c56c66 | 1192 | public: |
nucleosam | 0:0ccd34c56c66 | 1193 | |
nucleosam | 0:0ccd34c56c66 | 1194 | /* Static data. */ |
nucleosam | 0:0ccd34c56c66 | 1195 | |
nucleosam | 0:0ccd34c56c66 | 1196 | }; |
nucleosam | 0:0ccd34c56c66 | 1197 | |
nucleosam | 0:0ccd34c56c66 | 1198 | #endif // __STSPIN220_CLASS_H |
nucleosam | 0:0ccd34c56c66 | 1199 | |
nucleosam | 0:0ccd34c56c66 | 1200 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |