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_IHM01A1 by
Components/l6474/l6474_class.h@11:b4d365138c21, 2015-11-27 (annotated)
- Committer:
- Davidroid
- Date:
- Fri Nov 27 10:00:22 2015 +0000
- Revision:
- 11:b4d365138c21
- Parent:
- 10:c3824af0caf4
- Child:
- 12:9f4b9540ff3e
+ Initialization of the component updated to FULL STEP mode.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Davidroid | 0:2887415a46cd | 1 | /** |
Davidroid | 10:c3824af0caf4 | 2 | ****************************************************************************** |
Davidroid | 10:c3824af0caf4 | 3 | * @file l6474_class.h |
Davidroid | 10:c3824af0caf4 | 4 | * @author Davide Aliprandi, STMicrolectronics |
Davidroid | 10:c3824af0caf4 | 5 | * @version V1.0.0 |
Davidroid | 10:c3824af0caf4 | 6 | * @date October 14th, 2015 |
Davidroid | 10:c3824af0caf4 | 7 | * @brief This file contains the class of an L6474 Motor Control component. |
Davidroid | 10:c3824af0caf4 | 8 | ****************************************************************************** |
Davidroid | 10:c3824af0caf4 | 9 | * @attention |
Davidroid | 10:c3824af0caf4 | 10 | * |
Davidroid | 10:c3824af0caf4 | 11 | * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> |
Davidroid | 10:c3824af0caf4 | 12 | * |
Davidroid | 10:c3824af0caf4 | 13 | * Redistribution and use in source and binary forms, with or without modification, |
Davidroid | 10:c3824af0caf4 | 14 | * are permitted provided that the following conditions are met: |
Davidroid | 10:c3824af0caf4 | 15 | * 1. Redistributions of source code must retain the above copyright notice, |
Davidroid | 10:c3824af0caf4 | 16 | * this list of conditions and the following disclaimer. |
Davidroid | 10:c3824af0caf4 | 17 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
Davidroid | 10:c3824af0caf4 | 18 | * this list of conditions and the following disclaimer in the documentation |
Davidroid | 10:c3824af0caf4 | 19 | * and/or other materials provided with the distribution. |
Davidroid | 10:c3824af0caf4 | 20 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
Davidroid | 10:c3824af0caf4 | 21 | * may be used to endorse or promote products derived from this software |
Davidroid | 10:c3824af0caf4 | 22 | * without specific prior written permission. |
Davidroid | 10:c3824af0caf4 | 23 | * |
Davidroid | 10:c3824af0caf4 | 24 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
Davidroid | 10:c3824af0caf4 | 25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
Davidroid | 10:c3824af0caf4 | 26 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
Davidroid | 10:c3824af0caf4 | 27 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
Davidroid | 10:c3824af0caf4 | 28 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
Davidroid | 10:c3824af0caf4 | 29 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
Davidroid | 10:c3824af0caf4 | 30 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
Davidroid | 10:c3824af0caf4 | 31 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
Davidroid | 10:c3824af0caf4 | 32 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
Davidroid | 10:c3824af0caf4 | 33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Davidroid | 10:c3824af0caf4 | 34 | * |
Davidroid | 10:c3824af0caf4 | 35 | ****************************************************************************** |
Davidroid | 10:c3824af0caf4 | 36 | */ |
Davidroid | 0:2887415a46cd | 37 | |
Davidroid | 0:2887415a46cd | 38 | |
Davidroid | 0:2887415a46cd | 39 | /* Generated with Stm32CubeTOO -----------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 40 | |
Davidroid | 0:2887415a46cd | 41 | |
Davidroid | 0:2887415a46cd | 42 | /* Revision ------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 43 | /* |
Davidroid | 0:2887415a46cd | 44 | Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev |
Davidroid | 0:2887415a46cd | 45 | Branch/Trunk/Tag: trunk |
Davidroid | 0:2887415a46cd | 46 | Based on: X-CUBE-SPN1/trunk/Drivers/BSP/Components/l6474/l6474.h |
Davidroid | 0:2887415a46cd | 47 | Revision: 0 |
Davidroid | 0:2887415a46cd | 48 | */ |
Davidroid | 0:2887415a46cd | 49 | |
Davidroid | 0:2887415a46cd | 50 | |
Davidroid | 0:2887415a46cd | 51 | /* Define to prevent recursive inclusion -------------------------------------*/ |
Davidroid | 0:2887415a46cd | 52 | |
Davidroid | 0:2887415a46cd | 53 | #ifndef __L6474_CLASS_H |
Davidroid | 0:2887415a46cd | 54 | #define __L6474_CLASS_H |
Davidroid | 0:2887415a46cd | 55 | |
Davidroid | 0:2887415a46cd | 56 | |
Davidroid | 0:2887415a46cd | 57 | /* Includes ------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 58 | |
Davidroid | 0:2887415a46cd | 59 | /* ACTION 1 ------------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 60 | * Include here platform specific header files. * |
Davidroid | 0:2887415a46cd | 61 | *----------------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 62 | #include "mbed.h" |
Davidroid | 0:2887415a46cd | 63 | #include "DevSPI.h" |
Davidroid | 0:2887415a46cd | 64 | /* ACTION 2 ------------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 65 | * Include here component specific header files. * |
Davidroid | 0:2887415a46cd | 66 | *----------------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 67 | #include "l6474.h" |
Davidroid | 0:2887415a46cd | 68 | /* ACTION 3 ------------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 69 | * Include here interface specific header files. * |
Davidroid | 0:2887415a46cd | 70 | * * |
Davidroid | 0:2887415a46cd | 71 | * Example: * |
Davidroid | 0:2887415a46cd | 72 | * #include "../Interfaces/Humidity_class.h" * |
Davidroid | 0:2887415a46cd | 73 | * #include "../Interfaces/Temperature_class.h" * |
Davidroid | 0:2887415a46cd | 74 | *----------------------------------------------------------------------------*/ |
Davidroid | 4:83a1eb397a65 | 75 | #include "../Interfaces/StepperMotor_class.h" |
Davidroid | 0:2887415a46cd | 76 | |
Davidroid | 0:2887415a46cd | 77 | |
Davidroid | 0:2887415a46cd | 78 | /* Classes -------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 79 | |
Davidroid | 10:c3824af0caf4 | 80 | /** |
Davidroid | 10:c3824af0caf4 | 81 | * @brief Class representing an L6474 component. |
Davidroid | 0:2887415a46cd | 82 | */ |
Davidroid | 4:83a1eb397a65 | 83 | class L6474 : public StepperMotor |
Davidroid | 0:2887415a46cd | 84 | { |
Davidroid | 0:2887415a46cd | 85 | public: |
Davidroid | 0:2887415a46cd | 86 | |
Davidroid | 0:2887415a46cd | 87 | /*** Constructor and Destructor Methods ***/ |
Davidroid | 0:2887415a46cd | 88 | |
Davidroid | 0:2887415a46cd | 89 | /** |
Davidroid | 0:2887415a46cd | 90 | * @brief Constructor. |
Davidroid | 7:f7e0c3621f77 | 91 | * @param flag_irq pin name of the FLAG pin of the component. |
Davidroid | 4:83a1eb397a65 | 92 | * @param standby_reset pin name of the STBY\RST pin of the component. |
Davidroid | 4:83a1eb397a65 | 93 | * @param direction pin name of the DIR pin of the component. |
Davidroid | 4:83a1eb397a65 | 94 | * @param pwm pin name of the PWM pin of the component. |
Davidroid | 4:83a1eb397a65 | 95 | * @param ssel pin name of the SSEL pin of the SPI device to be used for communication. |
Davidroid | 4:83a1eb397a65 | 96 | * @param spi SPI device to be used for communication. |
Davidroid | 0:2887415a46cd | 97 | */ |
Davidroid | 7:f7e0c3621f77 | 98 | L6474(PinName flag_irq, PinName standby_reset, PinName direction, PinName pwm, PinName ssel, DevSPI &spi) : StepperMotor(), flag_irq(flag_irq), standby_reset(standby_reset), direction(direction), pwm(pwm), ssel(ssel), dev_spi(spi) |
Davidroid | 0:2887415a46cd | 99 | { |
Davidroid | 0:2887415a46cd | 100 | /* ACTION 4 ----------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 101 | * Initialize here the component's member variables, one variable per * |
Davidroid | 0:2887415a46cd | 102 | * line. * |
Davidroid | 0:2887415a46cd | 103 | * * |
Davidroid | 0:2887415a46cd | 104 | * Example: * |
Davidroid | 0:2887415a46cd | 105 | * T0_out = 0; * |
Davidroid | 0:2887415a46cd | 106 | * T1_out = 0; * |
Davidroid | 0:2887415a46cd | 107 | * T0_degC = 0; * |
Davidroid | 0:2887415a46cd | 108 | * T1_degC = 0; * |
Davidroid | 0:2887415a46cd | 109 | *--------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 110 | errorHandlerCallback = 0; |
Davidroid | 0:2887415a46cd | 111 | deviceInstance = numberOfDevices; |
Davidroid | 0:2887415a46cd | 112 | numberOfDevices++; |
Davidroid | 5:d3c78f12a78d | 113 | memset(spiTxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t)); |
Davidroid | 5:d3c78f12a78d | 114 | memset(spiRxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES * MAX_NUMBER_OF_DEVICES * sizeof(uint8_t)); |
Davidroid | 0:2887415a46cd | 115 | } |
Davidroid | 0:2887415a46cd | 116 | |
Davidroid | 0:2887415a46cd | 117 | /** |
Davidroid | 0:2887415a46cd | 118 | * @brief Destructor. |
Davidroid | 0:2887415a46cd | 119 | */ |
Davidroid | 0:2887415a46cd | 120 | virtual ~L6474(void) {} |
Davidroid | 0:2887415a46cd | 121 | |
Davidroid | 0:2887415a46cd | 122 | |
Davidroid | 0:2887415a46cd | 123 | /*** Public Component Related Methods ***/ |
Davidroid | 0:2887415a46cd | 124 | |
Davidroid | 0:2887415a46cd | 125 | /* ACTION 5 --------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 126 | * Implement here the component's public methods, as wrappers of the C * |
Davidroid | 0:2887415a46cd | 127 | * component's functions. * |
Davidroid | 0:2887415a46cd | 128 | * They should be: * |
Davidroid | 0:2887415a46cd | 129 | * + Methods with the same name of the C component's virtual table's * |
Davidroid | 0:2887415a46cd | 130 | * functions (1); * |
Davidroid | 0:2887415a46cd | 131 | * + Methods with the same name of the C component's extended virtual * |
Davidroid | 0:2887415a46cd | 132 | * table's functions, if any (2). * |
Davidroid | 0:2887415a46cd | 133 | * * |
Davidroid | 0:2887415a46cd | 134 | * Example: * |
Davidroid | 0:2887415a46cd | 135 | * virtual int GetValue(float *pData) //(1) * |
Davidroid | 0:2887415a46cd | 136 | * { * |
Davidroid | 0:2887415a46cd | 137 | * return COMPONENT_GetValue(float *pfData); * |
Davidroid | 0:2887415a46cd | 138 | * } * |
Davidroid | 0:2887415a46cd | 139 | * * |
Davidroid | 0:2887415a46cd | 140 | * virtual int EnableFeature(void) //(2) * |
Davidroid | 0:2887415a46cd | 141 | * { * |
Davidroid | 0:2887415a46cd | 142 | * return COMPONENT_EnableFeature(); * |
Davidroid | 0:2887415a46cd | 143 | * } * |
Davidroid | 0:2887415a46cd | 144 | *------------------------------------------------------------------------*/ |
Davidroid | 7:f7e0c3621f77 | 145 | /** |
Davidroid | 11:b4d365138c21 | 146 | * @brief Initializing the component in FULL STEP mode. |
Davidroid | 8:42e0b00b1e4d | 147 | * @param init Pointer to device specific initalization structure. |
Davidroid | 7:f7e0c3621f77 | 148 | * @retval "0" in case of success, an error code otherwise. |
Davidroid | 7:f7e0c3621f77 | 149 | */ |
Davidroid | 0:2887415a46cd | 150 | virtual int Init(void *init) |
Davidroid | 0:2887415a46cd | 151 | { |
Davidroid | 11:b4d365138c21 | 152 | DrvStatusTypeDef ret = L6474_Init((MOTOR_InitTypeDef *) init); |
Davidroid | 11:b4d365138c21 | 153 | if (ret != COMPONENT_OK) |
Davidroid | 11:b4d365138c21 | 154 | return (int) ret; |
Davidroid | 11:b4d365138c21 | 155 | L6474_SelectStepMode(STEP_MODE_FULL); |
Davidroid | 11:b4d365138c21 | 156 | return (int) COMPONENT_OK; |
Davidroid | 0:2887415a46cd | 157 | } |
Davidroid | 0:2887415a46cd | 158 | |
Davidroid | 7:f7e0c3621f77 | 159 | /** |
Davidroid | 7:f7e0c3621f77 | 160 | * @brief Getting the ID of the component. |
Davidroid | 8:42e0b00b1e4d | 161 | * @param id Pointer to an allocated variable to store the ID into. |
Davidroid | 7:f7e0c3621f77 | 162 | * @retval "0" in case of success, an error code otherwise. |
Davidroid | 7:f7e0c3621f77 | 163 | */ |
Davidroid | 0:2887415a46cd | 164 | virtual int ReadID(uint8_t *id) |
Davidroid | 0:2887415a46cd | 165 | { |
Davidroid | 0:2887415a46cd | 166 | return (int) L6474_ReadID((uint8_t *) id); |
Davidroid | 0:2887415a46cd | 167 | } |
Davidroid | 0:2887415a46cd | 168 | |
Davidroid | 7:f7e0c3621f77 | 169 | /** |
Davidroid | 7:f7e0c3621f77 | 170 | * @brief Getting the value of the Status Register. |
Davidroid | 7:f7e0c3621f77 | 171 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 172 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 173 | * @note The Status Register's flags are cleared, contrary to ReadStatusRegister(). |
Davidroid | 7:f7e0c3621f77 | 174 | */ |
Davidroid | 4:83a1eb397a65 | 175 | virtual unsigned int GetStatus(void) |
Davidroid | 0:2887415a46cd | 176 | { |
Davidroid | 4:83a1eb397a65 | 177 | return (unsigned int) L6474_CmdGetStatus(); |
Davidroid | 0:2887415a46cd | 178 | } |
Davidroid | 0:2887415a46cd | 179 | |
Davidroid | 7:f7e0c3621f77 | 180 | /** |
Davidroid | 7:f7e0c3621f77 | 181 | * @brief Getting a parameter. |
Davidroid | 8:42e0b00b1e4d | 182 | * @param parameter A parameter's register adress. |
Davidroid | 8:42e0b00b1e4d | 183 | * @retval The parameter's value. |
Davidroid | 7:f7e0c3621f77 | 184 | * @note The Status Register's flags are cleared, contrary to ReadStatusRegister(). |
Davidroid | 7:f7e0c3621f77 | 185 | * parameter can be one of the following: |
Davidroid | 7:f7e0c3621f77 | 186 | * + L6474_ABS_POS |
Davidroid | 7:f7e0c3621f77 | 187 | * + L6474_EL_POS |
Davidroid | 7:f7e0c3621f77 | 188 | * + L6474_MARK |
Davidroid | 7:f7e0c3621f77 | 189 | * + L6474_RESERVED_REG01 |
Davidroid | 7:f7e0c3621f77 | 190 | * + L6474_RESERVED_REG02 |
Davidroid | 7:f7e0c3621f77 | 191 | * + L6474_RESERVED_REG03 |
Davidroid | 7:f7e0c3621f77 | 192 | * + L6474_RESERVED_REG04 |
Davidroid | 7:f7e0c3621f77 | 193 | * + L6474_RESERVED_REG05 |
Davidroid | 7:f7e0c3621f77 | 194 | * + L6474_RESERVED_REG06 |
Davidroid | 7:f7e0c3621f77 | 195 | * + L6474_TVAL |
Davidroid | 7:f7e0c3621f77 | 196 | * + L6474_RESERVED_REG07 |
Davidroid | 7:f7e0c3621f77 | 197 | * + L6474_RESERVED_REG08 |
Davidroid | 7:f7e0c3621f77 | 198 | * + L6474_RESERVED_REG09 |
Davidroid | 7:f7e0c3621f77 | 199 | * + L6474_RESERVED_REG10 |
Davidroid | 7:f7e0c3621f77 | 200 | * + L6474_T_FAST |
Davidroid | 7:f7e0c3621f77 | 201 | * + L6474_TON_MIN |
Davidroid | 7:f7e0c3621f77 | 202 | * + L6474_TOFF_MIN |
Davidroid | 7:f7e0c3621f77 | 203 | * + L6474_RESERVED_REG11 |
Davidroid | 7:f7e0c3621f77 | 204 | * + L6474_ADC_OUT |
Davidroid | 7:f7e0c3621f77 | 205 | * + L6474_OCD_TH |
Davidroid | 7:f7e0c3621f77 | 206 | * + L6474_RESERVED_REG12 |
Davidroid | 7:f7e0c3621f77 | 207 | * + L6474_STEP_MODE |
Davidroid | 7:f7e0c3621f77 | 208 | * + L6474_ALARM_EN |
Davidroid | 7:f7e0c3621f77 | 209 | * + L6474_CONFIG |
Davidroid | 7:f7e0c3621f77 | 210 | * + L6474_STATUS |
Davidroid | 7:f7e0c3621f77 | 211 | * + L6474_RESERVED_REG13 |
Davidroid | 7:f7e0c3621f77 | 212 | * + L6474_RESERVED_REG14 |
Davidroid | 7:f7e0c3621f77 | 213 | * + L6474_INEXISTENT_REG |
Davidroid | 7:f7e0c3621f77 | 214 | */ |
Davidroid | 4:83a1eb397a65 | 215 | virtual unsigned int GetParameter(unsigned int parameter) |
Davidroid | 0:2887415a46cd | 216 | { |
Davidroid | 7:f7e0c3621f77 | 217 | return (unsigned int) L6474_CmdGetParam((L6474_Registers_t) parameter); |
Davidroid | 4:83a1eb397a65 | 218 | } |
Davidroid | 4:83a1eb397a65 | 219 | |
Davidroid | 8:42e0b00b1e4d | 220 | /** |
Davidroid | 8:42e0b00b1e4d | 221 | * @brief Getting the position. |
Davidroid | 8:42e0b00b1e4d | 222 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 223 | * @retval The position. |
Davidroid | 8:42e0b00b1e4d | 224 | */ |
Davidroid | 4:83a1eb397a65 | 225 | virtual signed int GetPosition(void) |
Davidroid | 4:83a1eb397a65 | 226 | { |
Davidroid | 4:83a1eb397a65 | 227 | return (signed int) L6474_GetPosition(); |
Davidroid | 0:2887415a46cd | 228 | } |
Davidroid | 0:2887415a46cd | 229 | |
Davidroid | 8:42e0b00b1e4d | 230 | /** |
Davidroid | 8:42e0b00b1e4d | 231 | * @brief Getting the marked position. |
Davidroid | 8:42e0b00b1e4d | 232 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 233 | * @retval The marked position. |
Davidroid | 8:42e0b00b1e4d | 234 | */ |
Davidroid | 4:83a1eb397a65 | 235 | virtual signed int GetMark(void) |
Davidroid | 0:2887415a46cd | 236 | { |
Davidroid | 4:83a1eb397a65 | 237 | return (signed int) L6474_GetMark(); |
Davidroid | 4:83a1eb397a65 | 238 | } |
Davidroid | 8:42e0b00b1e4d | 239 | |
Davidroid | 8:42e0b00b1e4d | 240 | /** |
Davidroid | 8:42e0b00b1e4d | 241 | * @brief Getting the current speed in pps. |
Davidroid | 8:42e0b00b1e4d | 242 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 243 | * @retval The current speed in pps. |
Davidroid | 8:42e0b00b1e4d | 244 | */ |
Davidroid | 4:83a1eb397a65 | 245 | virtual unsigned int GetSpeed(void) |
Davidroid | 0:2887415a46cd | 246 | { |
Davidroid | 4:83a1eb397a65 | 247 | return (unsigned int) L6474_GetCurrentSpeed(); |
Davidroid | 0:2887415a46cd | 248 | } |
Davidroid | 0:2887415a46cd | 249 | |
Davidroid | 8:42e0b00b1e4d | 250 | /** |
Davidroid | 8:42e0b00b1e4d | 251 | * @brief Getting the maximum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 252 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 253 | * @retval The maximum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 254 | */ |
Davidroid | 4:83a1eb397a65 | 255 | virtual unsigned int GetMaxSpeed(void) |
Davidroid | 4:83a1eb397a65 | 256 | { |
Davidroid | 4:83a1eb397a65 | 257 | return (unsigned int) L6474_GetMaxSpeed(); |
Davidroid | 4:83a1eb397a65 | 258 | } |
Davidroid | 4:83a1eb397a65 | 259 | |
Davidroid | 8:42e0b00b1e4d | 260 | /** |
Davidroid | 8:42e0b00b1e4d | 261 | * @brief Getting the minimum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 262 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 263 | * @retval The minimum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 264 | */ |
Davidroid | 4:83a1eb397a65 | 265 | virtual unsigned int GetMinSpeed(void) |
Davidroid | 0:2887415a46cd | 266 | { |
Davidroid | 4:83a1eb397a65 | 267 | return (unsigned int) L6474_GetMinSpeed(); |
Davidroid | 4:83a1eb397a65 | 268 | } |
Davidroid | 4:83a1eb397a65 | 269 | |
Davidroid | 8:42e0b00b1e4d | 270 | /** |
Davidroid | 8:42e0b00b1e4d | 271 | * @brief Getting the acceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 272 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 273 | * @retval The acceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 274 | */ |
Davidroid | 4:83a1eb397a65 | 275 | virtual unsigned int GetAcceleration(void) |
Davidroid | 4:83a1eb397a65 | 276 | { |
Davidroid | 4:83a1eb397a65 | 277 | return (unsigned int) L6474_GetAcceleration(); |
Davidroid | 0:2887415a46cd | 278 | } |
Davidroid | 0:2887415a46cd | 279 | |
Davidroid | 8:42e0b00b1e4d | 280 | /** |
Davidroid | 8:42e0b00b1e4d | 281 | * @brief Getting the deceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 282 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 283 | * @retval The deceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 284 | */ |
Davidroid | 4:83a1eb397a65 | 285 | virtual unsigned int GetDeceleration(void) |
Davidroid | 0:2887415a46cd | 286 | { |
Davidroid | 4:83a1eb397a65 | 287 | return (unsigned int) L6474_GetDeceleration(); |
Davidroid | 0:2887415a46cd | 288 | } |
Davidroid | 0:2887415a46cd | 289 | |
Davidroid | 8:42e0b00b1e4d | 290 | /** |
Davidroid | 8:42e0b00b1e4d | 291 | * @brief Getting the direction of rotation. |
Davidroid | 8:42e0b00b1e4d | 292 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 293 | * @retval The direction of rotation. |
Davidroid | 8:42e0b00b1e4d | 294 | */ |
Davidroid | 5:d3c78f12a78d | 295 | virtual direction_t GetDirection(void) |
Davidroid | 5:d3c78f12a78d | 296 | { |
Davidroid | 5:d3c78f12a78d | 297 | return (direction_t) (L6474_GetDirection() == FORWARD ? StepperMotor::FWD : StepperMotor::BWD); |
Davidroid | 5:d3c78f12a78d | 298 | } |
Davidroid | 5:d3c78f12a78d | 299 | |
Davidroid | 7:f7e0c3621f77 | 300 | /** |
Davidroid | 7:f7e0c3621f77 | 301 | * @brief Setting a parameter. |
Davidroid | 8:42e0b00b1e4d | 302 | * @param parameter A parameter's register adress. |
Davidroid | 8:42e0b00b1e4d | 303 | * @param value The parameter's value. |
Davidroid | 7:f7e0c3621f77 | 304 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 305 | * @note parameter can be one of the following: |
Davidroid | 7:f7e0c3621f77 | 306 | * + L6474_ABS_POS |
Davidroid | 7:f7e0c3621f77 | 307 | * + L6474_EL_POS |
Davidroid | 7:f7e0c3621f77 | 308 | * + L6474_MARK |
Davidroid | 7:f7e0c3621f77 | 309 | * + L6474_RESERVED_REG01 |
Davidroid | 7:f7e0c3621f77 | 310 | * + L6474_RESERVED_REG02 |
Davidroid | 7:f7e0c3621f77 | 311 | * + L6474_RESERVED_REG03 |
Davidroid | 7:f7e0c3621f77 | 312 | * + L6474_RESERVED_REG04 |
Davidroid | 7:f7e0c3621f77 | 313 | * + L6474_RESERVED_REG05 |
Davidroid | 7:f7e0c3621f77 | 314 | * + L6474_RESERVED_REG06 |
Davidroid | 7:f7e0c3621f77 | 315 | * + L6474_TVAL |
Davidroid | 7:f7e0c3621f77 | 316 | * + L6474_RESERVED_REG07 |
Davidroid | 7:f7e0c3621f77 | 317 | * + L6474_RESERVED_REG08 |
Davidroid | 7:f7e0c3621f77 | 318 | * + L6474_RESERVED_REG09 |
Davidroid | 7:f7e0c3621f77 | 319 | * + L6474_RESERVED_REG10 |
Davidroid | 7:f7e0c3621f77 | 320 | * + L6474_T_FAST |
Davidroid | 7:f7e0c3621f77 | 321 | * + L6474_TON_MIN |
Davidroid | 7:f7e0c3621f77 | 322 | * + L6474_TOFF_MIN |
Davidroid | 7:f7e0c3621f77 | 323 | * + L6474_RESERVED_REG11 |
Davidroid | 7:f7e0c3621f77 | 324 | * + L6474_ADC_OUT |
Davidroid | 7:f7e0c3621f77 | 325 | * + L6474_OCD_TH |
Davidroid | 7:f7e0c3621f77 | 326 | * + L6474_RESERVED_REG12 |
Davidroid | 7:f7e0c3621f77 | 327 | * + L6474_STEP_MODE |
Davidroid | 7:f7e0c3621f77 | 328 | * + L6474_ALARM_EN |
Davidroid | 7:f7e0c3621f77 | 329 | * + L6474_CONFIG |
Davidroid | 7:f7e0c3621f77 | 330 | * + L6474_STATUS |
Davidroid | 7:f7e0c3621f77 | 331 | * + L6474_RESERVED_REG13 |
Davidroid | 7:f7e0c3621f77 | 332 | * + L6474_RESERVED_REG14 |
Davidroid | 7:f7e0c3621f77 | 333 | * + L6474_INEXISTENT_REG |
Davidroid | 7:f7e0c3621f77 | 334 | */ |
Davidroid | 4:83a1eb397a65 | 335 | virtual void SetParameter(unsigned int parameter, unsigned int value) |
Davidroid | 0:2887415a46cd | 336 | { |
Davidroid | 7:f7e0c3621f77 | 337 | L6474_CmdSetParam((L6474_Registers_t) parameter, (unsigned int) value); |
Davidroid | 0:2887415a46cd | 338 | } |
Davidroid | 0:2887415a46cd | 339 | |
Davidroid | 8:42e0b00b1e4d | 340 | /** |
Davidroid | 8:42e0b00b1e4d | 341 | * @brief Setting the current position to be the home position. |
Davidroid | 8:42e0b00b1e4d | 342 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 343 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 344 | */ |
Davidroid | 4:83a1eb397a65 | 345 | virtual void SetHome(void) |
Davidroid | 0:2887415a46cd | 346 | { |
Davidroid | 4:83a1eb397a65 | 347 | L6474_SetHome(); |
Davidroid | 4:83a1eb397a65 | 348 | } |
Davidroid | 4:83a1eb397a65 | 349 | |
Davidroid | 8:42e0b00b1e4d | 350 | /** |
Davidroid | 8:42e0b00b1e4d | 351 | * @brief Setting the current position to be the marked position. |
Davidroid | 8:42e0b00b1e4d | 352 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 353 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 354 | */ |
Davidroid | 4:83a1eb397a65 | 355 | virtual void SetMark(void) |
Davidroid | 4:83a1eb397a65 | 356 | { |
Davidroid | 4:83a1eb397a65 | 357 | L6474_SetMark(); |
Davidroid | 0:2887415a46cd | 358 | } |
Davidroid | 0:2887415a46cd | 359 | |
Davidroid | 8:42e0b00b1e4d | 360 | /** |
Davidroid | 8:42e0b00b1e4d | 361 | * @brief Setting the maximum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 362 | * @param speed The maximum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 363 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 364 | */ |
Davidroid | 4:83a1eb397a65 | 365 | virtual void SetMaxSpeed(unsigned int speed) |
Davidroid | 4:83a1eb397a65 | 366 | { |
Davidroid | 4:83a1eb397a65 | 367 | L6474_SetMaxSpeed((unsigned int) speed); |
Davidroid | 0:2887415a46cd | 368 | } |
Davidroid | 0:2887415a46cd | 369 | |
Davidroid | 8:42e0b00b1e4d | 370 | /** |
Davidroid | 8:42e0b00b1e4d | 371 | * @brief Setting the minimum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 372 | * @param speed The minimum speed in pps. |
Davidroid | 8:42e0b00b1e4d | 373 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 374 | */ |
Davidroid | 4:83a1eb397a65 | 375 | virtual void SetMinSpeed(unsigned int speed) |
Davidroid | 0:2887415a46cd | 376 | { |
Davidroid | 4:83a1eb397a65 | 377 | L6474_SetMinSpeed((unsigned int) speed); |
Davidroid | 0:2887415a46cd | 378 | } |
Davidroid | 0:2887415a46cd | 379 | |
Davidroid | 8:42e0b00b1e4d | 380 | /** |
Davidroid | 8:42e0b00b1e4d | 381 | * @brief Setting the acceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 382 | * @param acceleration The acceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 383 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 384 | */ |
Davidroid | 4:83a1eb397a65 | 385 | virtual void SetAcceleration(unsigned int acceleration) |
Davidroid | 0:2887415a46cd | 386 | { |
Davidroid | 4:83a1eb397a65 | 387 | L6474_SetAcceleration((unsigned int) acceleration); |
Davidroid | 0:2887415a46cd | 388 | } |
Davidroid | 0:2887415a46cd | 389 | |
Davidroid | 8:42e0b00b1e4d | 390 | /** |
Davidroid | 8:42e0b00b1e4d | 391 | * @brief Setting the deceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 392 | * @param deceleration The deceleration in pps^2. |
Davidroid | 8:42e0b00b1e4d | 393 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 394 | */ |
Davidroid | 4:83a1eb397a65 | 395 | virtual void SetDeceleration(unsigned int deceleration) |
Davidroid | 0:2887415a46cd | 396 | { |
Davidroid | 4:83a1eb397a65 | 397 | L6474_SetDeceleration((unsigned int) deceleration); |
Davidroid | 4:83a1eb397a65 | 398 | } |
Davidroid | 4:83a1eb397a65 | 399 | |
Davidroid | 8:42e0b00b1e4d | 400 | /** |
Davidroid | 8:42e0b00b1e4d | 401 | * @brief Going to a specified position. |
Davidroid | 8:42e0b00b1e4d | 402 | * @param position The desired position. |
Davidroid | 8:42e0b00b1e4d | 403 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 404 | */ |
Davidroid | 4:83a1eb397a65 | 405 | virtual void GoTo(signed int position) |
Davidroid | 4:83a1eb397a65 | 406 | { |
Davidroid | 4:83a1eb397a65 | 407 | L6474_GoTo((signed int) position); |
Davidroid | 0:2887415a46cd | 408 | } |
Davidroid | 0:2887415a46cd | 409 | |
Davidroid | 8:42e0b00b1e4d | 410 | /** |
Davidroid | 8:42e0b00b1e4d | 411 | * @brief Going to the home position. |
Davidroid | 8:42e0b00b1e4d | 412 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 413 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 414 | */ |
Davidroid | 0:2887415a46cd | 415 | virtual void GoHome(void) |
Davidroid | 0:2887415a46cd | 416 | { |
Davidroid | 0:2887415a46cd | 417 | L6474_GoHome(); |
Davidroid | 0:2887415a46cd | 418 | } |
Davidroid | 0:2887415a46cd | 419 | |
Davidroid | 8:42e0b00b1e4d | 420 | /** |
Davidroid | 8:42e0b00b1e4d | 421 | * @brief Going to the marked position. |
Davidroid | 8:42e0b00b1e4d | 422 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 423 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 424 | */ |
Davidroid | 0:2887415a46cd | 425 | virtual void GoMark(void) |
Davidroid | 0:2887415a46cd | 426 | { |
Davidroid | 0:2887415a46cd | 427 | L6474_GoMark(); |
Davidroid | 0:2887415a46cd | 428 | } |
Davidroid | 0:2887415a46cd | 429 | |
Davidroid | 8:42e0b00b1e4d | 430 | /** |
Davidroid | 8:42e0b00b1e4d | 431 | * @brief Running the motor towards a specified direction. |
Davidroid | 8:42e0b00b1e4d | 432 | * @param direction The direction of rotation. |
Davidroid | 8:42e0b00b1e4d | 433 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 434 | */ |
Davidroid | 4:83a1eb397a65 | 435 | virtual void Run(direction_t direction) |
Davidroid | 4:83a1eb397a65 | 436 | { |
Davidroid | 5:d3c78f12a78d | 437 | L6474_Run((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD)); |
Davidroid | 4:83a1eb397a65 | 438 | } |
Davidroid | 4:83a1eb397a65 | 439 | |
Davidroid | 8:42e0b00b1e4d | 440 | /** |
Davidroid | 8:42e0b00b1e4d | 441 | * @brief Moving the motor towards a specified direction for a certain number of steps. |
Davidroid | 8:42e0b00b1e4d | 442 | * @param direction The direction of rotation. |
Davidroid | 8:42e0b00b1e4d | 443 | * @param steps The desired number of steps. |
Davidroid | 8:42e0b00b1e4d | 444 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 445 | */ |
Davidroid | 4:83a1eb397a65 | 446 | virtual void Move(direction_t direction, unsigned int steps) |
Davidroid | 0:2887415a46cd | 447 | { |
Davidroid | 5:d3c78f12a78d | 448 | L6474_Move((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD), (unsigned int) steps); |
Davidroid | 4:83a1eb397a65 | 449 | } |
Davidroid | 4:83a1eb397a65 | 450 | |
Davidroid | 8:42e0b00b1e4d | 451 | /** |
Davidroid | 8:42e0b00b1e4d | 452 | * @brief Stopping the motor. |
Davidroid | 8:42e0b00b1e4d | 453 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 454 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 455 | */ |
Davidroid | 4:83a1eb397a65 | 456 | virtual void SoftStop(void) |
Davidroid | 4:83a1eb397a65 | 457 | { |
Davidroid | 4:83a1eb397a65 | 458 | L6474_SoftStop(); |
Davidroid | 0:2887415a46cd | 459 | } |
Davidroid | 0:2887415a46cd | 460 | |
Davidroid | 8:42e0b00b1e4d | 461 | /** |
Davidroid | 8:42e0b00b1e4d | 462 | * @brief Stopping the motor and disabling the power bridge. |
Davidroid | 8:42e0b00b1e4d | 463 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 464 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 465 | */ |
Davidroid | 0:2887415a46cd | 466 | virtual void HardStop(void) |
Davidroid | 0:2887415a46cd | 467 | { |
Davidroid | 0:2887415a46cd | 468 | L6474_HardStop(); |
Davidroid | 0:2887415a46cd | 469 | } |
Davidroid | 0:2887415a46cd | 470 | |
Davidroid | 8:42e0b00b1e4d | 471 | /** |
Davidroid | 8:42e0b00b1e4d | 472 | * @brief Waiting while the motor is active. |
Davidroid | 8:42e0b00b1e4d | 473 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 474 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 475 | */ |
Davidroid | 7:f7e0c3621f77 | 476 | virtual void WaitWhileActive(void) |
Davidroid | 7:f7e0c3621f77 | 477 | { |
Davidroid | 7:f7e0c3621f77 | 478 | L6474_WaitWhileActive(); |
Davidroid | 7:f7e0c3621f77 | 479 | } |
Davidroid | 7:f7e0c3621f77 | 480 | |
Davidroid | 7:f7e0c3621f77 | 481 | /** |
Davidroid | 7:f7e0c3621f77 | 482 | * @brief Getting the device state. |
Davidroid | 7:f7e0c3621f77 | 483 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 484 | * @retval The device state. |
Davidroid | 7:f7e0c3621f77 | 485 | * @note The device state can be one of the following: |
Davidroid | 7:f7e0c3621f77 | 486 | * + ACCELERATING |
Davidroid | 7:f7e0c3621f77 | 487 | * + DECELERATING |
Davidroid | 7:f7e0c3621f77 | 488 | * + STEADY |
Davidroid | 7:f7e0c3621f77 | 489 | * + INACTIVE |
Davidroid | 7:f7e0c3621f77 | 490 | */ |
Davidroid | 4:83a1eb397a65 | 491 | virtual motorState_t GetDeviceState(void) |
Davidroid | 0:2887415a46cd | 492 | { |
Davidroid | 4:83a1eb397a65 | 493 | return (motorState_t) L6474_GetDeviceState(); |
Davidroid | 0:2887415a46cd | 494 | } |
Davidroid | 0:2887415a46cd | 495 | |
Davidroid | 7:f7e0c3621f77 | 496 | /** |
Davidroid | 7:f7e0c3621f77 | 497 | * @brief Reading the Status Register. |
Davidroid | 7:f7e0c3621f77 | 498 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 499 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 500 | * @note The Status Register's flags are not cleared, contrary to GetStatus(). |
Davidroid | 7:f7e0c3621f77 | 501 | */ |
Davidroid | 0:2887415a46cd | 502 | virtual uint16_t ReadStatusRegister(void) |
Davidroid | 0:2887415a46cd | 503 | { |
Davidroid | 0:2887415a46cd | 504 | return (uint16_t) L6474_ReadStatusRegister(); |
Davidroid | 0:2887415a46cd | 505 | } |
Davidroid | 0:2887415a46cd | 506 | |
Davidroid | 7:f7e0c3621f77 | 507 | /** |
Davidroid | 8:42e0b00b1e4d | 508 | * @brief Setting the Step Mode. |
Davidroid | 8:42e0b00b1e4d | 509 | * @param step_mode The Step Mode. |
Davidroid | 7:f7e0c3621f77 | 510 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 511 | * @note step_mode can be one of the following: |
Davidroid | 7:f7e0c3621f77 | 512 | * + STEP_MODE_FULL |
Davidroid | 7:f7e0c3621f77 | 513 | * + STEP_MODE_HALF |
Davidroid | 7:f7e0c3621f77 | 514 | * + STEP_MODE_1_4 |
Davidroid | 7:f7e0c3621f77 | 515 | * + STEP_MODE_1_8 |
Davidroid | 7:f7e0c3621f77 | 516 | * + STEP_MODE_1_16 |
Davidroid | 7:f7e0c3621f77 | 517 | * + STEP_MODE_1_32 |
Davidroid | 7:f7e0c3621f77 | 518 | * + STEP_MODE_1_64 |
Davidroid | 7:f7e0c3621f77 | 519 | * + STEP_MODE_1_128 |
Davidroid | 7:f7e0c3621f77 | 520 | */ |
Davidroid | 8:42e0b00b1e4d | 521 | virtual void SetStepMode(motorStepMode_t step_mode) |
Davidroid | 0:2887415a46cd | 522 | { |
Davidroid | 7:f7e0c3621f77 | 523 | L6474_SelectStepMode((motorStepMode_t) step_mode); |
Davidroid | 0:2887415a46cd | 524 | } |
Davidroid | 0:2887415a46cd | 525 | |
Davidroid | 7:f7e0c3621f77 | 526 | /** |
Davidroid | 7:f7e0c3621f77 | 527 | * @brief Attaching an error handler. |
Davidroid | 8:42e0b00b1e4d | 528 | * @param fptr An error handler. |
Davidroid | 7:f7e0c3621f77 | 529 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 530 | */ |
Davidroid | 7:f7e0c3621f77 | 531 | virtual void AttachErrorHandler(void (*fptr)(uint16_t error)) |
Davidroid | 4:83a1eb397a65 | 532 | { |
Davidroid | 7:f7e0c3621f77 | 533 | L6474_AttachErrorHandler((void (*)(uint16_t error)) fptr); |
Davidroid | 4:83a1eb397a65 | 534 | } |
Davidroid | 4:83a1eb397a65 | 535 | |
Davidroid | 9:6f116ce8e314 | 536 | /** |
Davidroid | 8:42e0b00b1e4d | 537 | * @brief Enabling the device. |
Davidroid | 8:42e0b00b1e4d | 538 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 539 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 540 | */ |
Davidroid | 8:42e0b00b1e4d | 541 | virtual void Enable(void) |
Davidroid | 8:42e0b00b1e4d | 542 | { |
Davidroid | 8:42e0b00b1e4d | 543 | L6474_CmdEnable(); |
Davidroid | 8:42e0b00b1e4d | 544 | } |
Davidroid | 8:42e0b00b1e4d | 545 | |
Davidroid | 9:6f116ce8e314 | 546 | /** |
Davidroid | 8:42e0b00b1e4d | 547 | * @brief Disabling the device. |
Davidroid | 8:42e0b00b1e4d | 548 | * @param None. |
Davidroid | 8:42e0b00b1e4d | 549 | * @retval None. |
Davidroid | 8:42e0b00b1e4d | 550 | */ |
Davidroid | 8:42e0b00b1e4d | 551 | virtual void Disable(void) |
Davidroid | 8:42e0b00b1e4d | 552 | { |
Davidroid | 8:42e0b00b1e4d | 553 | L6474_CmdDisable(); |
Davidroid | 8:42e0b00b1e4d | 554 | } |
Davidroid | 8:42e0b00b1e4d | 555 | |
Davidroid | 9:6f116ce8e314 | 556 | /** |
Davidroid | 9:6f116ce8e314 | 557 | * @brief Getting the version of the firmware. |
Davidroid | 9:6f116ce8e314 | 558 | * @param None. |
Davidroid | 9:6f116ce8e314 | 559 | * @retval The version of the firmware. |
Davidroid | 9:6f116ce8e314 | 560 | */ |
Davidroid | 9:6f116ce8e314 | 561 | virtual uint8_t GetFwVersion(void) |
Davidroid | 9:6f116ce8e314 | 562 | { |
Davidroid | 9:6f116ce8e314 | 563 | return (uint8_t) L6474_GetFwVersion(); |
Davidroid | 9:6f116ce8e314 | 564 | } |
Davidroid | 9:6f116ce8e314 | 565 | |
Davidroid | 0:2887415a46cd | 566 | |
Davidroid | 0:2887415a46cd | 567 | /*** Public Interrupt Related Methods ***/ |
Davidroid | 0:2887415a46cd | 568 | |
Davidroid | 0:2887415a46cd | 569 | /* ACTION 6 --------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 570 | * Implement here interrupt related methods, if any. * |
Davidroid | 0:2887415a46cd | 571 | * Note that interrupt handling is platform dependent, e.g.: * |
Davidroid | 0:2887415a46cd | 572 | * + mbed: * |
Davidroid | 7:f7e0c3621f77 | 573 | * InterruptIn feature_irq(pin); //Interrupt object. * |
Davidroid | 7:f7e0c3621f77 | 574 | * feature_irq.rise(callback); //Attach a callback. * |
Davidroid | 7:f7e0c3621f77 | 575 | * feature_irq.mode(PullNone); //Set interrupt mode. * |
Davidroid | 7:f7e0c3621f77 | 576 | * feature_irq.enable_irq(); //Enable interrupt. * |
Davidroid | 7:f7e0c3621f77 | 577 | * feature_irq.disable_irq(); //Disable interrupt. * |
Davidroid | 0:2887415a46cd | 578 | * + Arduino: * |
Davidroid | 0:2887415a46cd | 579 | * attachInterrupt(pin, callback, RISING); //Attach a callback. * |
Davidroid | 0:2887415a46cd | 580 | * detachInterrupt(pin); //Detach a callback. * |
Davidroid | 0:2887415a46cd | 581 | * * |
Davidroid | 0:2887415a46cd | 582 | * Example (mbed): * |
Davidroid | 7:f7e0c3621f77 | 583 | * void AttachFeatureIRQ(void (*fptr) (void)) * |
Davidroid | 0:2887415a46cd | 584 | * { * |
Davidroid | 7:f7e0c3621f77 | 585 | * feature_irq.rise(fptr); * |
Davidroid | 7:f7e0c3621f77 | 586 | * } * |
Davidroid | 7:f7e0c3621f77 | 587 | * * |
Davidroid | 7:f7e0c3621f77 | 588 | * void EnableFeatureIRQ(void) * |
Davidroid | 7:f7e0c3621f77 | 589 | * { * |
Davidroid | 7:f7e0c3621f77 | 590 | * feature_irq.enable_irq(); * |
Davidroid | 0:2887415a46cd | 591 | * } * |
Davidroid | 0:2887415a46cd | 592 | * * |
Davidroid | 7:f7e0c3621f77 | 593 | * void DisableFeatureIRQ(void) * |
Davidroid | 0:2887415a46cd | 594 | * { * |
Davidroid | 7:f7e0c3621f77 | 595 | * feature_irq.disable_irq(); * |
Davidroid | 0:2887415a46cd | 596 | * } * |
Davidroid | 0:2887415a46cd | 597 | *------------------------------------------------------------------------*/ |
Davidroid | 7:f7e0c3621f77 | 598 | /** |
Davidroid | 8:42e0b00b1e4d | 599 | * @brief Attaching an interrupt handler to the FLAG interrupt. |
Davidroid | 8:42e0b00b1e4d | 600 | * @param fptr An interrupt handler. |
Davidroid | 7:f7e0c3621f77 | 601 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 602 | */ |
Davidroid | 7:f7e0c3621f77 | 603 | void AttachFlagIRQ(void (*fptr)(void)) |
Davidroid | 7:f7e0c3621f77 | 604 | { |
Davidroid | 7:f7e0c3621f77 | 605 | flag_irq.rise(fptr); |
Davidroid | 7:f7e0c3621f77 | 606 | } |
Davidroid | 7:f7e0c3621f77 | 607 | |
Davidroid | 7:f7e0c3621f77 | 608 | /** |
Davidroid | 8:42e0b00b1e4d | 609 | * @brief Enabling the FLAG interrupt handling. |
Davidroid | 7:f7e0c3621f77 | 610 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 611 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 612 | */ |
Davidroid | 7:f7e0c3621f77 | 613 | void EnableFlagIRQ(void) |
Davidroid | 7:f7e0c3621f77 | 614 | { |
Davidroid | 7:f7e0c3621f77 | 615 | flag_irq.enable_irq(); |
Davidroid | 7:f7e0c3621f77 | 616 | } |
Davidroid | 7:f7e0c3621f77 | 617 | |
Davidroid | 7:f7e0c3621f77 | 618 | /** |
Davidroid | 8:42e0b00b1e4d | 619 | * @brief Disabling the FLAG interrupt handling. |
Davidroid | 7:f7e0c3621f77 | 620 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 621 | * @retval None. |
Davidroid | 7:f7e0c3621f77 | 622 | */ |
Davidroid | 7:f7e0c3621f77 | 623 | void DisableFlagIRQ(void) |
Davidroid | 7:f7e0c3621f77 | 624 | { |
Davidroid | 7:f7e0c3621f77 | 625 | flag_irq.disable_irq(); |
Davidroid | 7:f7e0c3621f77 | 626 | } |
Davidroid | 0:2887415a46cd | 627 | |
Davidroid | 0:2887415a46cd | 628 | |
Davidroid | 0:2887415a46cd | 629 | protected: |
Davidroid | 0:2887415a46cd | 630 | |
Davidroid | 0:2887415a46cd | 631 | /*** Protected Component Related Methods ***/ |
Davidroid | 0:2887415a46cd | 632 | |
Davidroid | 0:2887415a46cd | 633 | /* ACTION 7 --------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 634 | * Declare here the component's specific methods. * |
Davidroid | 0:2887415a46cd | 635 | * They should be: * |
Davidroid | 0:2887415a46cd | 636 | * + Methods with the same name of the C component's virtual table's * |
Davidroid | 0:2887415a46cd | 637 | * functions (1); * |
Davidroid | 0:2887415a46cd | 638 | * + Methods with the same name of the C component's extended virtual * |
Davidroid | 0:2887415a46cd | 639 | * table's functions, if any (2); * |
Davidroid | 0:2887415a46cd | 640 | * + Helper methods, if any, like functions declared in the component's * |
Davidroid | 0:2887415a46cd | 641 | * source files but not pointed by the component's virtual table (3). * |
Davidroid | 0:2887415a46cd | 642 | * * |
Davidroid | 0:2887415a46cd | 643 | * Example: * |
Davidroid | 0:2887415a46cd | 644 | * DrvStatusTypeDef COMPONENT_GetValue(float* pfData); //(1) * |
Davidroid | 0:2887415a46cd | 645 | * DrvStatusTypeDef COMPONENT_EnableFeature(void); //(2) * |
Davidroid | 0:2887415a46cd | 646 | * DrvStatusTypeDef COMPONENT_ComputeAverage(void); //(3) * |
Davidroid | 0:2887415a46cd | 647 | *------------------------------------------------------------------------*/ |
Davidroid | 7:f7e0c3621f77 | 648 | void L6474_AttachErrorHandler(void (*callback)(uint16_t error)); |
Davidroid | 7:f7e0c3621f77 | 649 | DrvStatusTypeDef L6474_Init(MOTOR_InitTypeDef *init); |
Davidroid | 7:f7e0c3621f77 | 650 | DrvStatusTypeDef L6474_ReadID(uint8_t *id); |
Davidroid | 7:f7e0c3621f77 | 651 | uint16_t L6474_GetAcceleration(void); |
Davidroid | 7:f7e0c3621f77 | 652 | uint16_t L6474_GetCurrentSpeed(void); |
Davidroid | 7:f7e0c3621f77 | 653 | uint16_t L6474_GetDeceleration(void); |
Davidroid | 7:f7e0c3621f77 | 654 | motorState_t L6474_GetDeviceState(void); |
Davidroid | 7:f7e0c3621f77 | 655 | uint8_t L6474_GetFwVersion(void); |
Davidroid | 7:f7e0c3621f77 | 656 | int32_t L6474_GetMark(void); |
Davidroid | 7:f7e0c3621f77 | 657 | uint16_t L6474_GetMaxSpeed(void); |
Davidroid | 7:f7e0c3621f77 | 658 | uint16_t L6474_GetMinSpeed(void); |
Davidroid | 7:f7e0c3621f77 | 659 | int32_t L6474_GetPosition(void); |
Davidroid | 7:f7e0c3621f77 | 660 | void L6474_GoHome(void); |
Davidroid | 7:f7e0c3621f77 | 661 | void L6474_GoMark(void); |
Davidroid | 7:f7e0c3621f77 | 662 | void L6474_GoTo(int32_t targetPosition); |
Davidroid | 7:f7e0c3621f77 | 663 | void L6474_HardStop(void); |
Davidroid | 7:f7e0c3621f77 | 664 | void L6474_Move(motorDir_t direction, uint32_t stepCount); |
Davidroid | 7:f7e0c3621f77 | 665 | void L6474_Run(motorDir_t direction); |
Davidroid | 7:f7e0c3621f77 | 666 | bool L6474_SetAcceleration(uint16_t newAcc); |
Davidroid | 7:f7e0c3621f77 | 667 | bool L6474_SetDeceleration(uint16_t newDec); |
Davidroid | 7:f7e0c3621f77 | 668 | void L6474_SetHome(void); |
Davidroid | 7:f7e0c3621f77 | 669 | void L6474_SetMark(void); |
Davidroid | 7:f7e0c3621f77 | 670 | bool L6474_SetMaxSpeed(uint16_t newMaxSpeed); |
Davidroid | 7:f7e0c3621f77 | 671 | bool L6474_SetMinSpeed(uint16_t newMinSpeed); |
Davidroid | 7:f7e0c3621f77 | 672 | bool L6474_SoftStop(void); |
Davidroid | 7:f7e0c3621f77 | 673 | void L6474_WaitWhileActive(void); |
Davidroid | 7:f7e0c3621f77 | 674 | void L6474_CmdDisable(void); |
Davidroid | 7:f7e0c3621f77 | 675 | void L6474_CmdEnable(void); |
Davidroid | 7:f7e0c3621f77 | 676 | uint32_t L6474_CmdGetParam(L6474_Registers_t parameter); |
Davidroid | 7:f7e0c3621f77 | 677 | uint16_t L6474_CmdGetStatus(void); |
Davidroid | 7:f7e0c3621f77 | 678 | void L6474_CmdNop(void); |
Davidroid | 7:f7e0c3621f77 | 679 | void L6474_CmdSetParam(L6474_Registers_t parameter, uint32_t value); |
Davidroid | 7:f7e0c3621f77 | 680 | uint16_t L6474_ReadStatusRegister(void); |
Davidroid | 7:f7e0c3621f77 | 681 | void L6474_SelectStepMode(motorStepMode_t stepMod); |
Davidroid | 7:f7e0c3621f77 | 682 | motorDir_t L6474_GetDirection(void); |
Davidroid | 7:f7e0c3621f77 | 683 | void L6474_SetDirection(motorDir_t direction); |
Davidroid | 0:2887415a46cd | 684 | void L6474_ApplySpeed(uint16_t newSpeed); |
Davidroid | 0:2887415a46cd | 685 | void L6474_ComputeSpeedProfile(uint32_t nbSteps); |
Davidroid | 7:f7e0c3621f77 | 686 | int32_t L6474_ConvertPosition(uint32_t abs_position_reg); |
Davidroid | 0:2887415a46cd | 687 | void L6474_ErrorHandler(uint16_t error); |
Davidroid | 0:2887415a46cd | 688 | void L6474_SendCommand(uint8_t param); |
Davidroid | 0:2887415a46cd | 689 | void L6474_SetRegisterToPredefinedValues(void); |
Davidroid | 7:f7e0c3621f77 | 690 | void L6474_WriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte); |
Davidroid | 0:2887415a46cd | 691 | void L6474_SetDeviceParamsToPredefinedValues(void); |
Davidroid | 0:2887415a46cd | 692 | void L6474_StartMovement(void); |
Davidroid | 7:f7e0c3621f77 | 693 | void L6474_StepClockHandler(void); |
Davidroid | 0:2887415a46cd | 694 | uint8_t L6474_Tval_Current_to_Par(double Tval); |
Davidroid | 0:2887415a46cd | 695 | uint8_t L6474_Tmin_Time_to_Par(double Tmin); |
Davidroid | 0:2887415a46cd | 696 | |
Davidroid | 0:2887415a46cd | 697 | |
Davidroid | 0:2887415a46cd | 698 | /*** Component's I/O Methods ***/ |
Davidroid | 0:2887415a46cd | 699 | |
Davidroid | 0:2887415a46cd | 700 | /** |
Davidroid | 0:2887415a46cd | 701 | * @brief Utility function to read data from L6474. |
Davidroid | 0:2887415a46cd | 702 | * @param[out] pBuffer pointer to the buffer to read data into. |
Davidroid | 0:2887415a46cd | 703 | * @param[in] NumBytesToRead number of bytes to read. |
Davidroid | 0:2887415a46cd | 704 | * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise. |
Davidroid | 0:2887415a46cd | 705 | */ |
Davidroid | 0:2887415a46cd | 706 | DrvStatusTypeDef Read(uint8_t* pBuffer, uint16_t NumBytesToRead) |
Davidroid | 0:2887415a46cd | 707 | { |
Davidroid | 0:2887415a46cd | 708 | if (dev_spi.spi_read(pBuffer, ssel, NumBytesToRead) != 0) |
Davidroid | 0:2887415a46cd | 709 | return COMPONENT_ERROR; |
Davidroid | 0:2887415a46cd | 710 | return COMPONENT_OK; |
Davidroid | 0:2887415a46cd | 711 | } |
Davidroid | 0:2887415a46cd | 712 | |
Davidroid | 0:2887415a46cd | 713 | /** |
Davidroid | 0:2887415a46cd | 714 | * @brief Utility function to write data to L6474. |
Davidroid | 0:2887415a46cd | 715 | * @param[in] pBuffer pointer to the buffer of data to send. |
Davidroid | 0:2887415a46cd | 716 | * @param[in] NumBytesToWrite number of bytes to write. |
Davidroid | 0:2887415a46cd | 717 | * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise. |
Davidroid | 0:2887415a46cd | 718 | */ |
Davidroid | 0:2887415a46cd | 719 | DrvStatusTypeDef Write(uint8_t* pBuffer, uint16_t NumBytesToWrite) |
Davidroid | 0:2887415a46cd | 720 | { |
Davidroid | 0:2887415a46cd | 721 | if (dev_spi.spi_write(pBuffer, ssel, NumBytesToWrite) != 0) |
Davidroid | 0:2887415a46cd | 722 | return COMPONENT_ERROR; |
Davidroid | 0:2887415a46cd | 723 | return COMPONENT_OK; |
Davidroid | 0:2887415a46cd | 724 | } |
Davidroid | 0:2887415a46cd | 725 | |
Davidroid | 0:2887415a46cd | 726 | /** |
Davidroid | 0:2887415a46cd | 727 | * @brief Utility function to read and write data from/to L6474 at the same time. |
Davidroid | 0:2887415a46cd | 728 | * @param[out] pBufferToRead pointer to the buffer to read data into. |
Davidroid | 0:2887415a46cd | 729 | * @param[in] pBufferToWrite pointer to the buffer of data to send. |
Davidroid | 0:2887415a46cd | 730 | * @param[in] NumBytes number of bytes to read and write. |
Davidroid | 0:2887415a46cd | 731 | * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise. |
Davidroid | 0:2887415a46cd | 732 | */ |
Davidroid | 0:2887415a46cd | 733 | DrvStatusTypeDef ReadWrite(uint8_t* pBufferToRead, uint8_t* pBufferToWrite, uint16_t NumBytes) |
Davidroid | 0:2887415a46cd | 734 | { |
Davidroid | 0:2887415a46cd | 735 | if (dev_spi.spi_read_write(pBufferToRead, pBufferToWrite, ssel, NumBytes) != 0) |
Davidroid | 0:2887415a46cd | 736 | return COMPONENT_ERROR; |
Davidroid | 0:2887415a46cd | 737 | return COMPONENT_OK; |
Davidroid | 0:2887415a46cd | 738 | } |
Davidroid | 0:2887415a46cd | 739 | |
Davidroid | 0:2887415a46cd | 740 | /* ACTION 8 --------------------------------------------------------------* |
Davidroid | 0:2887415a46cd | 741 | * Implement here other I/O methods beyond those already implemented * |
Davidroid | 0:2887415a46cd | 742 | * above, which are declared extern within the component's header file. * |
Davidroid | 0:2887415a46cd | 743 | *------------------------------------------------------------------------*/ |
Davidroid | 7:f7e0c3621f77 | 744 | /** |
Davidroid | 7:f7e0c3621f77 | 745 | * @brief Making the CPU wait. |
Davidroid | 7:f7e0c3621f77 | 746 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 747 | * @retval None. |
Davidroid | 0:2887415a46cd | 748 | */ |
Davidroid | 0:2887415a46cd | 749 | void L6474_Delay(uint32_t delay) |
Davidroid | 0:2887415a46cd | 750 | { |
Davidroid | 0:2887415a46cd | 751 | wait_ms(delay); |
Davidroid | 0:2887415a46cd | 752 | } |
Davidroid | 0:2887415a46cd | 753 | |
Davidroid | 7:f7e0c3621f77 | 754 | /** |
Davidroid | 7:f7e0c3621f77 | 755 | * @brief Enabling interrupts. |
Davidroid | 7:f7e0c3621f77 | 756 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 757 | * @retval None. |
Davidroid | 0:2887415a46cd | 758 | */ |
Davidroid | 0:2887415a46cd | 759 | void L6474_EnableIrq(void) |
Davidroid | 0:2887415a46cd | 760 | { |
Davidroid | 0:2887415a46cd | 761 | __enable_irq(); |
Davidroid | 0:2887415a46cd | 762 | } |
Davidroid | 0:2887415a46cd | 763 | |
Davidroid | 7:f7e0c3621f77 | 764 | /** |
Davidroid | 7:f7e0c3621f77 | 765 | * @brief Disabling interrupts. |
Davidroid | 7:f7e0c3621f77 | 766 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 767 | * @retval None. |
Davidroid | 0:2887415a46cd | 768 | */ |
Davidroid | 0:2887415a46cd | 769 | void L6474_DisableIrq(void) |
Davidroid | 0:2887415a46cd | 770 | { |
Davidroid | 0:2887415a46cd | 771 | __disable_irq(); |
Davidroid | 0:2887415a46cd | 772 | } |
Davidroid | 0:2887415a46cd | 773 | |
Davidroid | 7:f7e0c3621f77 | 774 | /** |
Davidroid | 7:f7e0c3621f77 | 775 | * @brief Setting the frequency of PWM. |
Davidroid | 7:f7e0c3621f77 | 776 | * The frequency controls directly the speed of the device. |
Davidroid | 7:f7e0c3621f77 | 777 | * @param newFreq the frequency of PWM. |
Davidroid | 7:f7e0c3621f77 | 778 | * @retval None. |
Davidroid | 0:2887415a46cd | 779 | */ |
Davidroid | 0:2887415a46cd | 780 | void L6474_PwmSetFreq(uint16_t newFreq) |
Davidroid | 0:2887415a46cd | 781 | { |
Davidroid | 0:2887415a46cd | 782 | double period = 1.0f / newFreq; |
Davidroid | 0:2887415a46cd | 783 | pwm.period(period); |
Davidroid | 0:2887415a46cd | 784 | pwm.write(0.5f); |
Davidroid | 1:b38ebb8ea286 | 785 | ticker.attach(this, &L6474::L6474_StepClockHandler, period); |
Davidroid | 0:2887415a46cd | 786 | } |
Davidroid | 0:2887415a46cd | 787 | |
Davidroid | 7:f7e0c3621f77 | 788 | /** |
Davidroid | 7:f7e0c3621f77 | 789 | * @brief Initialising the PWM. |
Davidroid | 7:f7e0c3621f77 | 790 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 791 | * @retval None. |
Davidroid | 0:2887415a46cd | 792 | */ |
Davidroid | 7:f7e0c3621f77 | 793 | void L6474_PwmInit(void) {} |
Davidroid | 0:2887415a46cd | 794 | |
Davidroid | 7:f7e0c3621f77 | 795 | /** |
Davidroid | 7:f7e0c3621f77 | 796 | * @brief Stopping the PWM. |
Davidroid | 7:f7e0c3621f77 | 797 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 798 | * @retval None. |
Davidroid | 0:2887415a46cd | 799 | */ |
Davidroid | 0:2887415a46cd | 800 | void L6474_PwmStop(void) |
Davidroid | 0:2887415a46cd | 801 | { |
Davidroid | 0:2887415a46cd | 802 | pwm.write(0.0f); |
Davidroid | 0:2887415a46cd | 803 | ticker.detach(); |
Davidroid | 0:2887415a46cd | 804 | } |
Davidroid | 0:2887415a46cd | 805 | |
Davidroid | 7:f7e0c3621f77 | 806 | /** |
Davidroid | 7:f7e0c3621f77 | 807 | * @brief Putting the device in standby mode. |
Davidroid | 7:f7e0c3621f77 | 808 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 809 | * @retval None. |
Davidroid | 0:2887415a46cd | 810 | */ |
Davidroid | 0:2887415a46cd | 811 | void L6474_ReleaseReset(void) |
Davidroid | 0:2887415a46cd | 812 | { |
Davidroid | 4:83a1eb397a65 | 813 | standby_reset = 1; |
Davidroid | 0:2887415a46cd | 814 | } |
Davidroid | 0:2887415a46cd | 815 | |
Davidroid | 7:f7e0c3621f77 | 816 | /** |
Davidroid | 7:f7e0c3621f77 | 817 | * @brief Putting the device in reset mode. |
Davidroid | 7:f7e0c3621f77 | 818 | * @param None. |
Davidroid | 7:f7e0c3621f77 | 819 | * @retval None. |
Davidroid | 0:2887415a46cd | 820 | */ |
Davidroid | 0:2887415a46cd | 821 | void L6474_Reset(void) |
Davidroid | 0:2887415a46cd | 822 | { |
Davidroid | 4:83a1eb397a65 | 823 | standby_reset = 0; |
Davidroid | 0:2887415a46cd | 824 | } |
Davidroid | 0:2887415a46cd | 825 | |
Davidroid | 7:f7e0c3621f77 | 826 | /** |
Davidroid | 7:f7e0c3621f77 | 827 | * @brief Setting the direction of rotation. |
Davidroid | 7:f7e0c3621f77 | 828 | * @param gpioState direction of rotation: "1" for forward, "0" for backward. |
Davidroid | 7:f7e0c3621f77 | 829 | * @retval None. |
Davidroid | 0:2887415a46cd | 830 | */ |
Davidroid | 0:2887415a46cd | 831 | void L6474_SetDirectionGpio(uint8_t gpioState) |
Davidroid | 0:2887415a46cd | 832 | { |
Davidroid | 0:2887415a46cd | 833 | direction = gpioState; |
Davidroid | 0:2887415a46cd | 834 | } |
Davidroid | 0:2887415a46cd | 835 | |
Davidroid | 7:f7e0c3621f77 | 836 | /** |
Davidroid | 7:f7e0c3621f77 | 837 | * @brief Writing and reading bytes to/from the component through the SPI at the same time. |
Davidroid | 7:f7e0c3621f77 | 838 | * @param[in] pByteToTransmit pointer to the buffer of data to send. |
Davidroid | 7:f7e0c3621f77 | 839 | * @param[out] pReceivedByte pointer to the buffer to read data into. |
Davidroid | 7:f7e0c3621f77 | 840 | * @retval "0" in case of success, "1" otherwise. |
Davidroid | 0:2887415a46cd | 841 | */ |
Davidroid | 0:2887415a46cd | 842 | uint8_t L6474_SpiWriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte) |
Davidroid | 0:2887415a46cd | 843 | { |
Davidroid | 7:f7e0c3621f77 | 844 | return (uint8_t) (ReadWrite(pReceivedByte, pByteToTransmit, numberOfDevices) == COMPONENT_OK ? 0 : 1); |
Davidroid | 0:2887415a46cd | 845 | } |
Davidroid | 0:2887415a46cd | 846 | |
Davidroid | 0:2887415a46cd | 847 | |
Davidroid | 0:2887415a46cd | 848 | /*** Component's Instance Variables ***/ |
Davidroid | 0:2887415a46cd | 849 | |
Davidroid | 0:2887415a46cd | 850 | /* ACTION 9 --------------------------------------------------------------* |
Davidroid | 10:c3824af0caf4 | 851 | * Declare here interrupt related variables, if needed. * |
Davidroid | 10:c3824af0caf4 | 852 | * Note that interrupt handling is platform dependent, see * |
Davidroid | 10:c3824af0caf4 | 853 | * "Interrupt Related Methods" above. * |
Davidroid | 10:c3824af0caf4 | 854 | * * |
Davidroid | 10:c3824af0caf4 | 855 | * Example: * |
Davidroid | 10:c3824af0caf4 | 856 | * + mbed: * |
Davidroid | 10:c3824af0caf4 | 857 | * InterruptIn feature_irq; * |
Davidroid | 0:2887415a46cd | 858 | *------------------------------------------------------------------------*/ |
Davidroid | 7:f7e0c3621f77 | 859 | /* Flag Interrupt. */ |
Davidroid | 7:f7e0c3621f77 | 860 | InterruptIn flag_irq; |
Davidroid | 10:c3824af0caf4 | 861 | |
Davidroid | 10:c3824af0caf4 | 862 | /* ACTION 10 -------------------------------------------------------------* |
Davidroid | 10:c3824af0caf4 | 863 | * Declare here other pin related variables, if needed. * |
Davidroid | 10:c3824af0caf4 | 864 | * * |
Davidroid | 10:c3824af0caf4 | 865 | * Example: * |
Davidroid | 10:c3824af0caf4 | 866 | * + mbed: * |
Davidroid | 10:c3824af0caf4 | 867 | * DigitalOut standby_reset; * |
Davidroid | 10:c3824af0caf4 | 868 | *------------------------------------------------------------------------*/ |
Davidroid | 4:83a1eb397a65 | 869 | /* Standby/reset pin. */ |
Davidroid | 4:83a1eb397a65 | 870 | DigitalOut standby_reset; |
Davidroid | 0:2887415a46cd | 871 | |
Davidroid | 0:2887415a46cd | 872 | /* Direction of rotation pin. */ |
Davidroid | 0:2887415a46cd | 873 | DigitalOut direction; |
Davidroid | 0:2887415a46cd | 874 | |
Davidroid | 0:2887415a46cd | 875 | /* Pulse Width Modulation pin. */ |
Davidroid | 0:2887415a46cd | 876 | PwmOut pwm; |
Davidroid | 0:2887415a46cd | 877 | |
Davidroid | 10:c3824af0caf4 | 878 | /* Timer to trigger the PWM callback at each PWM pulse. */ |
Davidroid | 10:c3824af0caf4 | 879 | Ticker ticker; |
Davidroid | 10:c3824af0caf4 | 880 | |
Davidroid | 10:c3824af0caf4 | 881 | /* ACTION 11 -------------------------------------------------------------* |
Davidroid | 10:c3824af0caf4 | 882 | * Declare here communication related variables, if needed. * |
Davidroid | 10:c3824af0caf4 | 883 | * * |
Davidroid | 10:c3824af0caf4 | 884 | * Example: * |
Davidroid | 10:c3824af0caf4 | 885 | * + mbed: * |
Davidroid | 10:c3824af0caf4 | 886 | * DigitalOut ssel; * |
Davidroid | 10:c3824af0caf4 | 887 | * DevSPI &dev_spi; * |
Davidroid | 10:c3824af0caf4 | 888 | *------------------------------------------------------------------------*/ |
Davidroid | 4:83a1eb397a65 | 889 | /* Configuration. */ |
Davidroid | 4:83a1eb397a65 | 890 | DigitalOut ssel; |
Davidroid | 0:2887415a46cd | 891 | |
Davidroid | 0:2887415a46cd | 892 | /* IO Device. */ |
Davidroid | 0:2887415a46cd | 893 | DevSPI &dev_spi; |
Davidroid | 0:2887415a46cd | 894 | |
Davidroid | 10:c3824af0caf4 | 895 | /* ACTION 12 -------------------------------------------------------------* |
Davidroid | 10:c3824af0caf4 | 896 | * Declare here identity related variables, if needed. * |
Davidroid | 10:c3824af0caf4 | 897 | * Note that there should be only a unique identifier for each component, * |
Davidroid | 10:c3824af0caf4 | 898 | * which should be the "who_am_i" parameter. * |
Davidroid | 10:c3824af0caf4 | 899 | *------------------------------------------------------------------------*/ |
Davidroid | 10:c3824af0caf4 | 900 | /* Identity */ |
Davidroid | 10:c3824af0caf4 | 901 | uint8_t who_am_i; |
Davidroid | 4:83a1eb397a65 | 902 | |
Davidroid | 10:c3824af0caf4 | 903 | /* ACTION 13 -------------------------------------------------------------* |
Davidroid | 10:c3824af0caf4 | 904 | * Declare here the component's static and non-static data, one variable * |
Davidroid | 10:c3824af0caf4 | 905 | * per line. * |
Davidroid | 0:2887415a46cd | 906 | * * |
Davidroid | 0:2887415a46cd | 907 | * Example: * |
Davidroid | 10:c3824af0caf4 | 908 | * float measure; * |
Davidroid | 10:c3824af0caf4 | 909 | * int instance_id; * |
Davidroid | 10:c3824af0caf4 | 910 | * static int number_of_instances; * |
Davidroid | 0:2887415a46cd | 911 | *------------------------------------------------------------------------*/ |
Davidroid | 0:2887415a46cd | 912 | /* Data. */ |
Davidroid | 0:2887415a46cd | 913 | void (*errorHandlerCallback)(uint16_t error); |
Davidroid | 0:2887415a46cd | 914 | deviceParams_t devicePrm; |
Davidroid | 5:d3c78f12a78d | 915 | uint8_t deviceInstance; |
Davidroid | 7:f7e0c3621f77 | 916 | |
Davidroid | 7:f7e0c3621f77 | 917 | /* Static data. */ |
Davidroid | 0:2887415a46cd | 918 | static uint8_t numberOfDevices; |
Davidroid | 7:f7e0c3621f77 | 919 | static uint8_t spiTxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES]; |
Davidroid | 7:f7e0c3621f77 | 920 | static uint8_t spiRxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES]; |
Davidroid | 7:f7e0c3621f77 | 921 | |
Davidroid | 7:f7e0c3621f77 | 922 | |
Davidroid | 7:f7e0c3621f77 | 923 | public: |
Davidroid | 7:f7e0c3621f77 | 924 | |
Davidroid | 7:f7e0c3621f77 | 925 | /* Static data. */ |
Davidroid | 6:a47569fc7534 | 926 | static bool spiPreemtionByIsr; |
Davidroid | 6:a47569fc7534 | 927 | static bool isrFlag; |
Davidroid | 0:2887415a46cd | 928 | }; |
Davidroid | 0:2887415a46cd | 929 | |
Davidroid | 0:2887415a46cd | 930 | #endif // __L6474_CLASS_H |
Davidroid | 0:2887415a46cd | 931 | |
Davidroid | 0:2887415a46cd | 932 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |