Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of X_NUCLEO_IHM06A1 by
Components/stspin220/stspin220_class.h@2:2ba230b24f25, 2016-07-27 (annotated)
- Committer:
- nucleosam
- Date:
- Wed Jul 27 12:00:06 2016 +0000
- Revision:
- 2:2ba230b24f25
- Parent:
- 1:0c33082063bc
- Child:
- 3:3cc66577af9b
Updated the date in the header of stspin220_class.h
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: * |
| nucleosam | 0:0ccd34c56c66 | 61 | * #include "../Interfaces/Humidity_class.h" * |
| nucleosam | 0:0ccd34c56c66 | 62 | * #include "../Interfaces/Temperature_class.h" * |
| nucleosam | 0:0ccd34c56c66 | 63 | *----------------------------------------------------------------------------*/ |
| nucleosam | 0:0ccd34c56c66 | 64 | #include "../Interfaces/StepperMotor_class.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****/ |
