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