ST Expansion SW Team / X_NUCLEO_IHM14A1

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_IHM14A1

Fork of X_NUCLEO_IHM14A1 by Davide Aliprandi

Committer:
Davidroid
Date:
Thu Sep 27 14:05:44 2018 +0000
Revision:
2:4fd08b67958c
Parent:
1:bc265521eb00
Library to handle the X-NUCLEO-IHM14A1 Motor Control Expansion Board based on the STSPIN820 component.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 1:bc265521eb00 1 /**
Davidroid 2:4fd08b67958c 2 *******************************************************************************
Davidroid 2:4fd08b67958c 3 * @file STSPIN820.h
Davidroid 2:4fd08b67958c 4 * @author Davide Aliprandi, STMicroelectronics
Davidroid 2:4fd08b67958c 5 * @version V1.0.0
Davidroid 2:4fd08b67958c 6 * @date May 3rd, 2018
Davidroid 2:4fd08b67958c 7 * @brief This file contains the class definition of an STSPIN820 Motor
Davidroid 2:4fd08b67958c 8 * Control component.
Davidroid 2:4fd08b67958c 9 * @note (C) COPYRIGHT 2018 STMicroelectronics
Davidroid 2:4fd08b67958c 10 *******************************************************************************
Davidroid 2:4fd08b67958c 11 * @attention
Davidroid 2:4fd08b67958c 12 *
Davidroid 2:4fd08b67958c 13 * <h2><center>&copy; COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
Davidroid 2:4fd08b67958c 14 *
Davidroid 2:4fd08b67958c 15 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 2:4fd08b67958c 16 * are permitted provided that the following conditions are met:
Davidroid 2:4fd08b67958c 17 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 2:4fd08b67958c 18 * this list of conditions and the following disclaimer.
Davidroid 2:4fd08b67958c 19 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 2:4fd08b67958c 20 * this list of conditions and the following disclaimer in the documentation
Davidroid 2:4fd08b67958c 21 * and/or other materials provided with the distribution.
Davidroid 2:4fd08b67958c 22 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 2:4fd08b67958c 23 * may be used to endorse or promote products derived from this software
Davidroid 2:4fd08b67958c 24 * without specific prior written permission.
Davidroid 2:4fd08b67958c 25 *
Davidroid 2:4fd08b67958c 26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 2:4fd08b67958c 27 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 2:4fd08b67958c 28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 2:4fd08b67958c 29 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 2:4fd08b67958c 30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 2:4fd08b67958c 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 2:4fd08b67958c 32 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 2:4fd08b67958c 33 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 2:4fd08b67958c 34 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 2:4fd08b67958c 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 2:4fd08b67958c 36 *
Davidroid 2:4fd08b67958c 37 *******************************************************************************
Davidroid 2:4fd08b67958c 38 */
Davidroid 1:bc265521eb00 39
Davidroid 1:bc265521eb00 40
Davidroid 1:bc265521eb00 41 /* Generated with STM32CubeTOO -----------------------------------------------*/
Davidroid 1:bc265521eb00 42
Davidroid 1:bc265521eb00 43
Davidroid 1:bc265521eb00 44 /* Revision ------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 45 /*
Davidroid 1:bc265521eb00 46 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
Davidroid 1:bc265521eb00 47 Branch/Trunk/Tag: trunk
Davidroid 1:bc265521eb00 48 Based on: X-CUBE-SPN14/trunk/Drivers/BSP/Components/STSPIN820/STSPIN820.h
Davidroid 1:bc265521eb00 49 Revision: 0
Davidroid 1:bc265521eb00 50 */
Davidroid 1:bc265521eb00 51
Davidroid 1:bc265521eb00 52
Davidroid 1:bc265521eb00 53 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 1:bc265521eb00 54
Davidroid 1:bc265521eb00 55 #ifndef __STSPIN820_CLASS_H
Davidroid 1:bc265521eb00 56 #define __STSPIN820_CLASS_H
Davidroid 1:bc265521eb00 57
Davidroid 1:bc265521eb00 58
Davidroid 1:bc265521eb00 59 /* Includes ------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 60
Davidroid 1:bc265521eb00 61 /* ACTION 1 ------------------------------------------------------------------*
Davidroid 1:bc265521eb00 62 * Include here platform specific header files. *
Davidroid 1:bc265521eb00 63 *----------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 64 #include "mbed.h"
Davidroid 1:bc265521eb00 65 /* ACTION 2 ------------------------------------------------------------------*
Davidroid 1:bc265521eb00 66 * Include here component specific header files. *
Davidroid 1:bc265521eb00 67 *----------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 68 #include "STSPIN820_def.h"
Davidroid 1:bc265521eb00 69 /* ACTION 3 ------------------------------------------------------------------*
Davidroid 1:bc265521eb00 70 * Include here interface specific header files. *
Davidroid 1:bc265521eb00 71 * *
Davidroid 1:bc265521eb00 72 * Example: *
Davidroid 2:4fd08b67958c 73 * #include "../Interfaces/Humidity.h" *
Davidroid 2:4fd08b67958c 74 * #include "../Interfaces/Temperature.h" *
Davidroid 1:bc265521eb00 75 *----------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 76 #include "StepperMotor.h"
Davidroid 1:bc265521eb00 77
Davidroid 1:bc265521eb00 78
Davidroid 1:bc265521eb00 79 /* Classes -------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 80
Davidroid 1:bc265521eb00 81 /**
Davidroid 2:4fd08b67958c 82 * @brief Class representing an STSPIN820 component.
Davidroid 1:bc265521eb00 83 */
Davidroid 2:4fd08b67958c 84 class STSPIN820 : public StepperMotor
Davidroid 1:bc265521eb00 85 {
Davidroid 1:bc265521eb00 86 public:
Davidroid 1:bc265521eb00 87
Davidroid 1:bc265521eb00 88 /*** Constructor and Destructor Methods ***/
Davidroid 1:bc265521eb00 89
Davidroid 1:bc265521eb00 90 /**
Davidroid 1:bc265521eb00 91 * @brief Constructor.
Davidroid 2:4fd08b67958c 92 * @param en_fault_irq pin name of the EN_FAULT pin of the component.
Davidroid 2:4fd08b67958c 93 * @param standby_reset pin name of the STBY\RST pin of the component.
Davidroid 2:4fd08b67958c 94 * @param direction pin name of the DIR pin of the component.
Davidroid 2:4fd08b67958c 95 * @param ref_pwm pin name of the REF_PWM pin of the component.
Davidroid 2:4fd08b67958c 96 * @param decay pin name of the DECAY pin of the component.
Davidroid 2:4fd08b67958c 97 * @param step_clock pin name of the STCK pin of the component.
Davidroid 2:4fd08b67958c 98 * @param mode1 pin name of the MODE1 pin of the component.
Davidroid 2:4fd08b67958c 99 * @param mode2 pin name of the MODE2 pin of the component.
Davidroid 2:4fd08b67958c 100 * @param mode3 pin name of the MODE3 pin of the component.
Davidroid 1:bc265521eb00 101 */
Davidroid 2:4fd08b67958c 102 STSPIN820(PinName en_fault_irq, PinName standby_reset, PinName direction,
Davidroid 2:4fd08b67958c 103 PinName ref_pwm, PinName decay, PinName step_clock,
Davidroid 2:4fd08b67958c 104 PinName mode1, PinName mode2, PinName mode3) :
Davidroid 2:4fd08b67958c 105 StepperMotor(),
Davidroid 2:4fd08b67958c 106 en_fault_irq(en_fault_irq),
Davidroid 2:4fd08b67958c 107 standby_reset(standby_reset),
Davidroid 2:4fd08b67958c 108 direction(direction),
Davidroid 2:4fd08b67958c 109 ref_pwm(ref_pwm),
Davidroid 2:4fd08b67958c 110 decay(decay),
Davidroid 2:4fd08b67958c 111 step_clock(step_clock),
Davidroid 2:4fd08b67958c 112 mode1(mode1),
Davidroid 2:4fd08b67958c 113 mode2(mode2),
Davidroid 2:4fd08b67958c 114 mode3(mode3)
Davidroid 1:bc265521eb00 115 {
Davidroid 2:4fd08b67958c 116 /* Checking stackability. */
Davidroid 2:4fd08b67958c 117 if (!(number_of_devices < MAX_NUMBER_OF_DEVICES)) {
Davidroid 2:4fd08b67958c 118 error("Instantiation of the STSPIN820 component failed: it can be stacked up to %d times.\r\n", MAX_NUMBER_OF_DEVICES);
Davidroid 2:4fd08b67958c 119 }
Davidroid 2:4fd08b67958c 120
Davidroid 1:bc265521eb00 121 /* ACTION 4 ----------------------------------------------------------*
Davidroid 1:bc265521eb00 122 * Initialize here the component's member variables, one variable per *
Davidroid 1:bc265521eb00 123 * line. *
Davidroid 1:bc265521eb00 124 * *
Davidroid 1:bc265521eb00 125 * Example: *
Davidroid 1:bc265521eb00 126 * measure = 0; *
Davidroid 1:bc265521eb00 127 * instance_id = number_of_instances++; *
Davidroid 1:bc265521eb00 128 *--------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 129 flag_interrupt_callback = 0;
Davidroid 1:bc265521eb00 130 error_handler_callback = 0;
Davidroid 1:bc265521eb00 131 toggle_odd = 0;
Davidroid 2:4fd08b67958c 132 pwm_period = 1;
Davidroid 2:4fd08b67958c 133 pwm_duty_cycle = 0;
Davidroid 2:4fd08b67958c 134 device_instance = number_of_devices++;
Davidroid 1:bc265521eb00 135 }
Davidroid 1:bc265521eb00 136
Davidroid 1:bc265521eb00 137 /**
Davidroid 1:bc265521eb00 138 * @brief Destructor.
Davidroid 1:bc265521eb00 139 */
Davidroid 1:bc265521eb00 140 virtual ~STSPIN820(void) {}
Davidroid 1:bc265521eb00 141
Davidroid 1:bc265521eb00 142
Davidroid 1:bc265521eb00 143 /*** Public Component Related Methods ***/
Davidroid 1:bc265521eb00 144
Davidroid 1:bc265521eb00 145 /* ACTION 5 --------------------------------------------------------------*
Davidroid 1:bc265521eb00 146 * Implement here the component's public methods, as wrappers of the C *
Davidroid 1:bc265521eb00 147 * component's functions. *
Davidroid 1:bc265521eb00 148 * They should be: *
Davidroid 1:bc265521eb00 149 * + Methods with the same name of the C component's virtual table's *
Davidroid 1:bc265521eb00 150 * functions (1); *
Davidroid 1:bc265521eb00 151 * + Methods with the same name of the C component's extended virtual *
Davidroid 1:bc265521eb00 152 * table's functions, if any (2). *
Davidroid 1:bc265521eb00 153 * *
Davidroid 1:bc265521eb00 154 * Example: *
Davidroid 1:bc265521eb00 155 * virtual int get_value(float *p_data) //(1) *
Davidroid 1:bc265521eb00 156 * { *
Davidroid 1:bc265521eb00 157 * return COMPONENT_get_value(float *pf_data); *
Davidroid 1:bc265521eb00 158 * } *
Davidroid 1:bc265521eb00 159 * *
Davidroid 1:bc265521eb00 160 * virtual int enable_feature(void) //(2) *
Davidroid 1:bc265521eb00 161 * { *
Davidroid 1:bc265521eb00 162 * return COMPONENT_enable_feature(); *
Davidroid 1:bc265521eb00 163 * } *
Davidroid 1:bc265521eb00 164 *------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 165 virtual int init(void *init = NULL)
Davidroid 1:bc265521eb00 166 {
Davidroid 1:bc265521eb00 167 return (int) STSPIN820_Init((void *) init);
Davidroid 1:bc265521eb00 168 }
Davidroid 1:bc265521eb00 169
Davidroid 1:bc265521eb00 170 virtual int read_id(uint8_t *id = NULL)
Davidroid 1:bc265521eb00 171 {
Davidroid 1:bc265521eb00 172 return (int) STSPIN820_ReadId((uint8_t *) id);
Davidroid 1:bc265521eb00 173 }
Davidroid 1:bc265521eb00 174
Davidroid 1:bc265521eb00 175 virtual void attach_error_handler(void (*callback)(uint16_t error))
Davidroid 1:bc265521eb00 176 {
Davidroid 1:bc265521eb00 177 STSPIN820_AttachErrorHandler((void (*)(uint16_t error)) callback);
Davidroid 1:bc265521eb00 178 }
Davidroid 1:bc265521eb00 179
Davidroid 1:bc265521eb00 180 virtual void attach_flag_interrupt(void (*callback)(void))
Davidroid 1:bc265521eb00 181 {
Davidroid 1:bc265521eb00 182 STSPIN820_AttachFlagInterrupt((void (*)(void)) callback);
Davidroid 1:bc265521eb00 183 }
Davidroid 1:bc265521eb00 184
Davidroid 1:bc265521eb00 185 virtual void flag_interrupt_handler(void)
Davidroid 1:bc265521eb00 186 {
Davidroid 1:bc265521eb00 187 STSPIN820_FlagInterruptHandler();
Davidroid 1:bc265521eb00 188 }
Davidroid 1:bc265521eb00 189
Davidroid 2:4fd08b67958c 190 virtual unsigned int get_acceleration(void)
Davidroid 1:bc265521eb00 191 {
Davidroid 2:4fd08b67958c 192 return (unsigned int) STSPIN820_GetAcceleration();
Davidroid 1:bc265521eb00 193 }
Davidroid 1:bc265521eb00 194
Davidroid 2:4fd08b67958c 195 virtual unsigned int get_speed(void)
Davidroid 1:bc265521eb00 196 {
Davidroid 2:4fd08b67958c 197 return (unsigned int) STSPIN820_GetCurrentSpeed();
Davidroid 1:bc265521eb00 198 }
Davidroid 1:bc265521eb00 199
Davidroid 2:4fd08b67958c 200 virtual unsigned int get_deceleration(void)
Davidroid 1:bc265521eb00 201 {
Davidroid 2:4fd08b67958c 202 return (unsigned int) STSPIN820_GetDeceleration();
Davidroid 1:bc265521eb00 203 }
Davidroid 1:bc265521eb00 204
Davidroid 2:4fd08b67958c 205 virtual motor_state_t get_device_state(void)
Davidroid 1:bc265521eb00 206 {
Davidroid 2:4fd08b67958c 207 return (motor_state_t) STSPIN820_GetDeviceState();
Davidroid 1:bc265521eb00 208 }
Davidroid 1:bc265521eb00 209
Davidroid 1:bc265521eb00 210 virtual uint32_t get_fw_version(void)
Davidroid 1:bc265521eb00 211 {
Davidroid 1:bc265521eb00 212 return (uint32_t) STSPIN820_GetFwVersion();
Davidroid 1:bc265521eb00 213 }
Davidroid 1:bc265521eb00 214
Davidroid 2:4fd08b67958c 215 virtual signed int get_mark(void)
Davidroid 1:bc265521eb00 216 {
Davidroid 2:4fd08b67958c 217 return (signed int) STSPIN820_GetMark();
Davidroid 1:bc265521eb00 218 }
Davidroid 1:bc265521eb00 219
Davidroid 2:4fd08b67958c 220 virtual unsigned int get_max_speed(void)
Davidroid 1:bc265521eb00 221 {
Davidroid 2:4fd08b67958c 222 return (unsigned int) STSPIN820_GetMaxSpeed();
Davidroid 2:4fd08b67958c 223 }
Davidroid 2:4fd08b67958c 224
Davidroid 2:4fd08b67958c 225 virtual unsigned int get_min_speed(void)
Davidroid 2:4fd08b67958c 226 {
Davidroid 2:4fd08b67958c 227 return (unsigned int) STSPIN820_GetMinSpeed();
Davidroid 1:bc265521eb00 228 }
Davidroid 1:bc265521eb00 229
Davidroid 2:4fd08b67958c 230 virtual signed int get_position(void)
Davidroid 1:bc265521eb00 231 {
Davidroid 2:4fd08b67958c 232 return (signed int) STSPIN820_GetPosition();
Davidroid 1:bc265521eb00 233 }
Davidroid 1:bc265521eb00 234
Davidroid 2:4fd08b67958c 235 virtual void go_home(void)
Davidroid 1:bc265521eb00 236 {
Davidroid 2:4fd08b67958c 237 STSPIN820_GoHome();
Davidroid 1:bc265521eb00 238 }
Davidroid 1:bc265521eb00 239
Davidroid 2:4fd08b67958c 240 virtual void go_mark(void)
Davidroid 1:bc265521eb00 241 {
Davidroid 2:4fd08b67958c 242 STSPIN820_GoMark();
Davidroid 2:4fd08b67958c 243 }
Davidroid 2:4fd08b67958c 244
Davidroid 2:4fd08b67958c 245 virtual void go_to(signed int position)
Davidroid 2:4fd08b67958c 246 {
Davidroid 2:4fd08b67958c 247 STSPIN820_GoTo((signed int) position);
Davidroid 1:bc265521eb00 248 }
Davidroid 1:bc265521eb00 249
Davidroid 2:4fd08b67958c 250 /**
Davidroid 2:4fd08b67958c 251 * @brief Stopping the motor through an immediate deceleration up to zero speed.
Davidroid 2:4fd08b67958c 252 * @param None.
Davidroid 2:4fd08b67958c 253 * @retval None.
Davidroid 2:4fd08b67958c 254 */
Davidroid 2:4fd08b67958c 255 virtual void soft_stop(void)
Davidroid 1:bc265521eb00 256 {
Davidroid 2:4fd08b67958c 257 STSPIN820_SoftStop();
Davidroid 1:bc265521eb00 258 }
Davidroid 1:bc265521eb00 259
Davidroid 2:4fd08b67958c 260 /**
Davidroid 2:4fd08b67958c 261 * @brief Stopping the motor through an immediate infinite deceleration.
Davidroid 2:4fd08b67958c 262 * @param None.
Davidroid 2:4fd08b67958c 263 * @retval None.
Davidroid 2:4fd08b67958c 264 */
Davidroid 2:4fd08b67958c 265 virtual void hard_stop(void)
Davidroid 1:bc265521eb00 266 {
Davidroid 2:4fd08b67958c 267 STSPIN820_HardStop();
Davidroid 1:bc265521eb00 268 }
Davidroid 1:bc265521eb00 269
Davidroid 2:4fd08b67958c 270 /**
Davidroid 2:4fd08b67958c 271 * @brief Disabling the power bridge after performing a deceleration to zero.
Davidroid 2:4fd08b67958c 272 * @param None.
Davidroid 2:4fd08b67958c 273 * @retval None.
Davidroid 2:4fd08b67958c 274 */
Davidroid 2:4fd08b67958c 275 virtual void soft_hiz(void) {}
Davidroid 1:bc265521eb00 276
Davidroid 2:4fd08b67958c 277 /**
Davidroid 2:4fd08b67958c 278 * @brief Disabling the power bridge immediately.
Davidroid 2:4fd08b67958c 279 * @param None.
Davidroid 2:4fd08b67958c 280 * @retval None.
Davidroid 2:4fd08b67958c 281 */
Davidroid 2:4fd08b67958c 282 virtual void hard_hiz(void)
Davidroid 1:bc265521eb00 283 {
Davidroid 2:4fd08b67958c 284 STSPIN820_HardHiZ();
Davidroid 1:bc265521eb00 285 }
Davidroid 1:bc265521eb00 286
Davidroid 2:4fd08b67958c 287 virtual void move(direction_t direction, unsigned int steps)
Davidroid 1:bc265521eb00 288 {
Davidroid 2:4fd08b67958c 289 STSPIN820_Move((motor_direction_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD), (unsigned int) steps);
Davidroid 1:bc265521eb00 290 }
Davidroid 1:bc265521eb00 291
Davidroid 2:4fd08b67958c 292 virtual void run(direction_t direction)
Davidroid 1:bc265521eb00 293 {
Davidroid 2:4fd08b67958c 294 STSPIN820_Run((motor_direction_t) direction);
Davidroid 2:4fd08b67958c 295 }
Davidroid 2:4fd08b67958c 296
Davidroid 2:4fd08b67958c 297 virtual bool set_acceleration(unsigned int acceleration)
Davidroid 2:4fd08b67958c 298 {
Davidroid 2:4fd08b67958c 299 return (bool) STSPIN820_SetAcceleration((unsigned int) acceleration);
Davidroid 1:bc265521eb00 300 }
Davidroid 1:bc265521eb00 301
Davidroid 2:4fd08b67958c 302 virtual bool set_deceleration(unsigned int deceleration)
Davidroid 1:bc265521eb00 303 {
Davidroid 2:4fd08b67958c 304 return (bool) STSPIN820_SetDeceleration((unsigned int) deceleration);
Davidroid 1:bc265521eb00 305 }
Davidroid 1:bc265521eb00 306
Davidroid 2:4fd08b67958c 307 virtual void set_home(void)
Davidroid 1:bc265521eb00 308 {
Davidroid 2:4fd08b67958c 309 STSPIN820_SetHome();
Davidroid 1:bc265521eb00 310 }
Davidroid 1:bc265521eb00 311
Davidroid 2:4fd08b67958c 312 virtual void set_mark(void)
Davidroid 1:bc265521eb00 313 {
Davidroid 2:4fd08b67958c 314 STSPIN820_SetMark();
Davidroid 1:bc265521eb00 315 }
Davidroid 1:bc265521eb00 316
Davidroid 2:4fd08b67958c 317 virtual bool set_max_speed(unsigned int speed)
Davidroid 1:bc265521eb00 318 {
Davidroid 2:4fd08b67958c 319 return (bool) STSPIN820_SetMaxSpeed((unsigned int) speed);
Davidroid 1:bc265521eb00 320 }
Davidroid 1:bc265521eb00 321
Davidroid 2:4fd08b67958c 322 virtual bool set_min_speed(unsigned int speed)
Davidroid 1:bc265521eb00 323 {
Davidroid 2:4fd08b67958c 324 return (bool) STSPIN820_SetMinSpeed((unsigned int) speed);
Davidroid 1:bc265521eb00 325 }
Davidroid 1:bc265521eb00 326
Davidroid 2:4fd08b67958c 327 virtual void wait_while_active(void)
Davidroid 1:bc265521eb00 328 {
Davidroid 2:4fd08b67958c 329 STSPIN820_WaitWhileActive();
Davidroid 1:bc265521eb00 330 }
Davidroid 1:bc265521eb00 331
Davidroid 2:4fd08b67958c 332 virtual void cmd_disable(void)
Davidroid 1:bc265521eb00 333 {
Davidroid 2:4fd08b67958c 334 STSPIN820_Disable();
Davidroid 2:4fd08b67958c 335 }
Davidroid 2:4fd08b67958c 336
Davidroid 2:4fd08b67958c 337 virtual void cmd_enable(void)
Davidroid 2:4fd08b67958c 338 {
Davidroid 2:4fd08b67958c 339 STSPIN820_Enable();
Davidroid 1:bc265521eb00 340 }
Davidroid 1:bc265521eb00 341
Davidroid 2:4fd08b67958c 342 virtual bool set_step_mode(step_mode_t step_mode)
Davidroid 1:bc265521eb00 343 {
Davidroid 2:4fd08b67958c 344 return (bool) STSPIN820_SetStepMode((motor_step_mode_t) step_mode);
Davidroid 1:bc265521eb00 345 }
Davidroid 1:bc265521eb00 346
Davidroid 2:4fd08b67958c 347 virtual void set_direction(direction_t direction)
Davidroid 1:bc265521eb00 348 {
Davidroid 2:4fd08b67958c 349 STSPIN820_SetDirection((motor_direction_t) direction);
Davidroid 1:bc265521eb00 350 }
Davidroid 1:bc265521eb00 351
Davidroid 2:4fd08b67958c 352 virtual void go_to_dir(direction_t direction, int32_t targetPosition)
Davidroid 1:bc265521eb00 353 {
Davidroid 2:4fd08b67958c 354 STSPIN820_GoToDir((motor_direction_t) direction, (int32_t) targetPosition);
Davidroid 1:bc265521eb00 355 }
Davidroid 1:bc265521eb00 356
Davidroid 2:4fd08b67958c 357 virtual unsigned int get_status(void)
Davidroid 1:bc265521eb00 358 {
Davidroid 2:4fd08b67958c 359 return (unsigned int) STSPIN820_CheckStatusHw();
Davidroid 1:bc265521eb00 360 }
Davidroid 1:bc265521eb00 361
Davidroid 2:4fd08b67958c 362 virtual void cmd_reset_device(void)
Davidroid 1:bc265521eb00 363 {
Davidroid 2:4fd08b67958c 364 STSPIN820_PutDeviceInStandby();
Davidroid 1:bc265521eb00 365 }
Davidroid 1:bc265521eb00 366
Davidroid 1:bc265521eb00 367 virtual uint8_t get_nb_devices(void)
Davidroid 1:bc265521eb00 368 {
Davidroid 1:bc265521eb00 369 return (uint8_t) STSPIN820_GetNbDevices();
Davidroid 1:bc265521eb00 370 }
Davidroid 1:bc265521eb00 371
Davidroid 2:4fd08b67958c 372 virtual uint32_t get_bridge_input_pwm_freq(void)
Davidroid 1:bc265521eb00 373 {
Davidroid 2:4fd08b67958c 374 return (uint32_t) STSPIN820_VrefPwmGetFreq();
Davidroid 1:bc265521eb00 375 }
Davidroid 1:bc265521eb00 376
Davidroid 2:4fd08b67958c 377 virtual void set_bridge_input_pwm_freq(uint32_t newFreq)
Davidroid 1:bc265521eb00 378 {
Davidroid 2:4fd08b67958c 379 STSPIN820_VrefPwmSetFreq((uint32_t) newFreq);
Davidroid 1:bc265521eb00 380 }
Davidroid 1:bc265521eb00 381
Davidroid 2:4fd08b67958c 382 virtual void set_stop_mode(motor_stop_mode_t stopMode)
Davidroid 1:bc265521eb00 383 {
Davidroid 2:4fd08b67958c 384 STSPIN820_SetStopMode((motor_stop_mode_t) stopMode);
Davidroid 1:bc265521eb00 385 }
Davidroid 1:bc265521eb00 386
Davidroid 2:4fd08b67958c 387 virtual motor_stop_mode_t get_stop_mode(void)
Davidroid 1:bc265521eb00 388 {
Davidroid 2:4fd08b67958c 389 return (motor_stop_mode_t) STSPIN820_GetStopMode();
Davidroid 1:bc265521eb00 390 }
Davidroid 1:bc265521eb00 391
Davidroid 2:4fd08b67958c 392 virtual void set_decay_mode(motor_decay_mode_t decayMode)
Davidroid 1:bc265521eb00 393 {
Davidroid 2:4fd08b67958c 394 STSPIN820_SetDecayMode((motor_decay_mode_t) decayMode);
Davidroid 1:bc265521eb00 395 }
Davidroid 1:bc265521eb00 396
Davidroid 2:4fd08b67958c 397 virtual motor_decay_mode_t get_decay_mode(void)
Davidroid 1:bc265521eb00 398 {
Davidroid 2:4fd08b67958c 399 return (motor_decay_mode_t) STSPIN820_GetDecayMode();
Davidroid 1:bc265521eb00 400 }
Davidroid 1:bc265521eb00 401
Davidroid 2:4fd08b67958c 402 virtual motor_step_mode_t get_step_mode(void)
Davidroid 1:bc265521eb00 403 {
Davidroid 2:4fd08b67958c 404 return (motor_step_mode_t) STSPIN820_GetStepMode();
Davidroid 1:bc265521eb00 405 }
Davidroid 1:bc265521eb00 406
Davidroid 2:4fd08b67958c 407 virtual direction_t get_direction(void)
Davidroid 1:bc265521eb00 408 {
Davidroid 2:4fd08b67958c 409 return (direction_t) (STSPIN820_GetDirection() == FORWARD ? StepperMotor::FWD : StepperMotor::BWD);
Davidroid 1:bc265521eb00 410 }
Davidroid 1:bc265521eb00 411
Davidroid 2:4fd08b67958c 412 virtual void exit_device_from_reset(void)
Davidroid 1:bc265521eb00 413 {
Davidroid 2:4fd08b67958c 414 STSPIN820_ExitDeviceFromStandby();
Davidroid 1:bc265521eb00 415 }
Davidroid 1:bc265521eb00 416
Davidroid 2:4fd08b67958c 417 virtual void set_torque(motor_torque_mode_t torqueMode, uint8_t torqueValue)
Davidroid 1:bc265521eb00 418 {
Davidroid 2:4fd08b67958c 419 STSPIN820_SetTorque((motor_torque_mode_t) torqueMode, (uint8_t) torqueValue);
Davidroid 1:bc265521eb00 420 }
Davidroid 1:bc265521eb00 421
Davidroid 2:4fd08b67958c 422 virtual uint8_t get_torque(motor_torque_mode_t torqueMode)
Davidroid 1:bc265521eb00 423 {
Davidroid 2:4fd08b67958c 424 return (uint8_t) STSPIN820_GetTorque((motor_torque_mode_t) torqueMode);
Davidroid 1:bc265521eb00 425 }
Davidroid 1:bc265521eb00 426
Davidroid 2:4fd08b67958c 427 virtual void set_torque_boost_enable(bool enable)
Davidroid 1:bc265521eb00 428 {
Davidroid 2:4fd08b67958c 429 STSPIN820_SetTorqueBoostEnable((bool) enable);
Davidroid 1:bc265521eb00 430 }
Davidroid 1:bc265521eb00 431
Davidroid 2:4fd08b67958c 432 virtual bool get_torque_boost_enable(void)
Davidroid 1:bc265521eb00 433 {
Davidroid 2:4fd08b67958c 434 return (bool) STSPIN820_GetTorqueBoostEnable();
Davidroid 1:bc265521eb00 435 }
Davidroid 1:bc265521eb00 436
Davidroid 2:4fd08b67958c 437 virtual void set_torque_boost_threshold(uint16_t speedThreshold)
Davidroid 1:bc265521eb00 438 {
Davidroid 2:4fd08b67958c 439 STSPIN820_SetTorqueBoostThreshold((uint16_t) speedThreshold);
Davidroid 1:bc265521eb00 440 }
Davidroid 1:bc265521eb00 441
Davidroid 2:4fd08b67958c 442 virtual uint16_t get_torque_boost_threshold(void)
Davidroid 1:bc265521eb00 443 {
Davidroid 2:4fd08b67958c 444 return (uint16_t) STSPIN820_GetTorqueBoostThreshold();
Davidroid 1:bc265521eb00 445 }
Davidroid 1:bc265521eb00 446
Davidroid 1:bc265521eb00 447
Davidroid 1:bc265521eb00 448 /*** Public Interrupt Related Methods ***/
Davidroid 1:bc265521eb00 449
Davidroid 1:bc265521eb00 450 /* ACTION 6 --------------------------------------------------------------*
Davidroid 1:bc265521eb00 451 * Implement here interrupt related methods, if any. *
Davidroid 1:bc265521eb00 452 * Note that interrupt handling is platform dependent, e.g.: *
Davidroid 1:bc265521eb00 453 * + mbed: *
Davidroid 1:bc265521eb00 454 * InterruptIn feature_irq(pin); //Interrupt object. *
Davidroid 1:bc265521eb00 455 * feature_irq.rise(callback); //Attach a callback. *
Davidroid 1:bc265521eb00 456 * feature_irq.mode(PullNone); //Set interrupt mode. *
Davidroid 1:bc265521eb00 457 * feature_irq.enable_irq(); //Enable interrupt. *
Davidroid 1:bc265521eb00 458 * feature_irq.disable_irq(); //Disable interrupt. *
Davidroid 1:bc265521eb00 459 * + Arduino: *
Davidroid 1:bc265521eb00 460 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
Davidroid 1:bc265521eb00 461 * detachInterrupt(pin); //Detach a callback. *
Davidroid 1:bc265521eb00 462 * *
Davidroid 1:bc265521eb00 463 * Example (mbed): *
Davidroid 1:bc265521eb00 464 * void attach_feature_irq(void (*fptr) (void)) *
Davidroid 1:bc265521eb00 465 * { *
Davidroid 1:bc265521eb00 466 * feature_irq.rise(fptr); *
Davidroid 1:bc265521eb00 467 * } *
Davidroid 1:bc265521eb00 468 * *
Davidroid 1:bc265521eb00 469 * void enable_feature_irq(void) *
Davidroid 1:bc265521eb00 470 * { *
Davidroid 1:bc265521eb00 471 * feature_irq.enable_irq(); *
Davidroid 1:bc265521eb00 472 * } *
Davidroid 1:bc265521eb00 473 * *
Davidroid 1:bc265521eb00 474 * void disable_feature_irq(void) *
Davidroid 1:bc265521eb00 475 * { *
Davidroid 1:bc265521eb00 476 * feature_irq.disable_irq(); *
Davidroid 1:bc265521eb00 477 * } *
Davidroid 1:bc265521eb00 478 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 479 /**
Davidroid 2:4fd08b67958c 480 * @brief Attaching an interrupt handler to the FLAG interrupt.
Davidroid 2:4fd08b67958c 481 * @param fptr An interrupt handler.
Davidroid 2:4fd08b67958c 482 * @retval None.
Davidroid 2:4fd08b67958c 483 */
Davidroid 2:4fd08b67958c 484 void attach_en_fault_irq(void (*fptr)(void))
Davidroid 2:4fd08b67958c 485 {
Davidroid 2:4fd08b67958c 486 en_fault_irq.mode(PullUp);
Davidroid 2:4fd08b67958c 487 en_fault_irq.fall(fptr);
Davidroid 2:4fd08b67958c 488 }
Davidroid 2:4fd08b67958c 489
Davidroid 2:4fd08b67958c 490 /**
Davidroid 2:4fd08b67958c 491 * @brief Enabling the FLAG interrupt handling.
Davidroid 2:4fd08b67958c 492 * @param None.
Davidroid 2:4fd08b67958c 493 * @retval None.
Davidroid 2:4fd08b67958c 494 */
Davidroid 2:4fd08b67958c 495 void enable_en_fault_irq(void)
Davidroid 2:4fd08b67958c 496 {
Davidroid 2:4fd08b67958c 497 en_fault_irq.enable_irq();
Davidroid 2:4fd08b67958c 498 }
Davidroid 2:4fd08b67958c 499
Davidroid 2:4fd08b67958c 500 /**
Davidroid 2:4fd08b67958c 501 * @brief Disabling the FLAG interrupt handling.
Davidroid 2:4fd08b67958c 502 * @param None.
Davidroid 2:4fd08b67958c 503 * @retval None.
Davidroid 2:4fd08b67958c 504 */
Davidroid 2:4fd08b67958c 505 void disable_en_fault_irq(void)
Davidroid 2:4fd08b67958c 506 {
Davidroid 2:4fd08b67958c 507 en_fault_irq.disable_irq();
Davidroid 2:4fd08b67958c 508 }
Davidroid 1:bc265521eb00 509
Davidroid 1:bc265521eb00 510
Davidroid 1:bc265521eb00 511 protected:
Davidroid 1:bc265521eb00 512
Davidroid 1:bc265521eb00 513 /*** Protected Component Related Methods ***/
Davidroid 1:bc265521eb00 514
Davidroid 1:bc265521eb00 515 /* ACTION 7 --------------------------------------------------------------*
Davidroid 1:bc265521eb00 516 * Declare here the component's specific methods. *
Davidroid 1:bc265521eb00 517 * They should be: *
Davidroid 1:bc265521eb00 518 * + Methods with the same name of the C component's virtual table's *
Davidroid 1:bc265521eb00 519 * functions (1); *
Davidroid 1:bc265521eb00 520 * + Methods with the same name of the C component's extended virtual *
Davidroid 1:bc265521eb00 521 * table's functions, if any (2); *
Davidroid 1:bc265521eb00 522 * + Helper methods, if any, like functions declared in the component's *
Davidroid 1:bc265521eb00 523 * source files but not pointed by the component's virtual table (3). *
Davidroid 1:bc265521eb00 524 * *
Davidroid 1:bc265521eb00 525 * Example: *
Davidroid 1:bc265521eb00 526 * status_t COMPONENT_get_value(float *f); //(1) *
Davidroid 1:bc265521eb00 527 * status_t COMPONENT_enable_feature(void); //(2) *
Davidroid 1:bc265521eb00 528 * status_t COMPONENT_compute_average(void); //(3) *
Davidroid 1:bc265521eb00 529 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 530 //Apply speed
Davidroid 2:4fd08b67958c 531 void STSPIN820_ApplySpeed(uint16_t newSpeed);
Davidroid 2:4fd08b67958c 532 //Apply torque
Davidroid 2:4fd08b67958c 533 void STSPIN820_ApplyTorque(motor_torque_mode_t torqueMode);
Davidroid 2:4fd08b67958c 534 //Compute speed profile
Davidroid 2:4fd08b67958c 535 void STSPIN820_ComputeSpeedProfile(uint32_t nbSteps);
Davidroid 2:4fd08b67958c 536 //Handler for the flag interrupt
Davidroid 1:bc265521eb00 537 void STSPIN820_FlagInterruptHandler(void);
Davidroid 2:4fd08b67958c 538 //Set device paramenters to other values
Davidroid 1:bc265521eb00 539 void STSPIN820_SetDeviceParamsOtherValues(void);
Davidroid 2:4fd08b67958c 540 //Set device paramenters to given values
Davidroid 1:bc265521eb00 541 void STSPIN820_SetDeviceParamsToGivenValues(STSPIN820_init_t* initDevicePrm);
Davidroid 2:4fd08b67958c 542 //Set device paramenters to predefined values
Davidroid 1:bc265521eb00 543 void STSPIN820_SetDeviceParamsToPredefinedValues(void);
Davidroid 2:4fd08b67958c 544 //Start moving
Davidroid 2:4fd08b67958c 545 void STSPIN820_StartMovement(void);
Davidroid 2:4fd08b67958c 546 //Handle the step clock
Davidroid 2:4fd08b67958c 547 void STSPIN820_StepClockHandler(void);
Davidroid 2:4fd08b67958c 548 //Start the STSPIN820 library
Davidroid 2:4fd08b67958c 549 status_t STSPIN820_Init(void *init);
Davidroid 2:4fd08b67958c 550 //Read Id to get driver instance
Davidroid 2:4fd08b67958c 551 status_t STSPIN820_ReadId(uint8_t *id);
Davidroid 2:4fd08b67958c 552 //Attach a user callback to the error handler
Davidroid 2:4fd08b67958c 553 void STSPIN820_AttachErrorHandler(void (*callback)(uint16_t));
Davidroid 2:4fd08b67958c 554 //Attach a user callback to the flag Interrupt
Davidroid 2:4fd08b67958c 555 void STSPIN820_AttachFlagInterrupt(void (*callback)(void));
Davidroid 2:4fd08b67958c 556 //Check if STSPIN820 has a fault by reading EN pin position
Davidroid 2:4fd08b67958c 557 uint8_t STSPIN820_CheckStatusHw(void);
Davidroid 2:4fd08b67958c 558 //Disable the power stage of the specified device
Davidroid 2:4fd08b67958c 559 void STSPIN820_Disable(void);
Davidroid 2:4fd08b67958c 560 //Enable the power stage of the specified device
Davidroid 2:4fd08b67958c 561 void STSPIN820_Enable(void);
Davidroid 2:4fd08b67958c 562 //Error handler which calls the user callback
Davidroid 2:4fd08b67958c 563 void STSPIN820_ErrorHandler(uint16_t error);
Davidroid 2:4fd08b67958c 564 //Exit STSPIN820 device from standby
Davidroid 2:4fd08b67958c 565 void STSPIN820_ExitDeviceFromStandby(void);
Davidroid 2:4fd08b67958c 566 //Return the acceleration in pps^2
Davidroid 2:4fd08b67958c 567 uint16_t STSPIN820_GetAcceleration(void);
Davidroid 2:4fd08b67958c 568 //Return the current speed in pps
Davidroid 2:4fd08b67958c 569 uint16_t STSPIN820_GetCurrentSpeed(void);
Davidroid 2:4fd08b67958c 570 //Return the device decay mode
Davidroid 2:4fd08b67958c 571 motor_decay_mode_t STSPIN820_GetDecayMode(void);
Davidroid 2:4fd08b67958c 572 //Return the deceleration in pps^2
Davidroid 2:4fd08b67958c 573 uint16_t STSPIN820_GetDeceleration(void);
Davidroid 2:4fd08b67958c 574 //Return the device state
Davidroid 2:4fd08b67958c 575 motor_state_t STSPIN820_GetDeviceState(void);
Davidroid 2:4fd08b67958c 576 //Get the motor current direction
Davidroid 2:4fd08b67958c 577 motor_direction_t STSPIN820_GetDirection(void);
Davidroid 2:4fd08b67958c 578 //Return the FW version
Davidroid 2:4fd08b67958c 579 uint32_t STSPIN820_GetFwVersion(void);
Davidroid 2:4fd08b67958c 580 //Return the mark position
Davidroid 2:4fd08b67958c 581 int32_t STSPIN820_GetMark(void);
Davidroid 2:4fd08b67958c 582 //Return the max speed in pps
Davidroid 2:4fd08b67958c 583 uint16_t STSPIN820_GetMaxSpeed(void);
Davidroid 2:4fd08b67958c 584 //Return the min speed in pps
Davidroid 2:4fd08b67958c 585 uint16_t STSPIN820_GetMinSpeed(void);
Davidroid 2:4fd08b67958c 586 //Return the nupber of devices
Davidroid 2:4fd08b67958c 587 uint8_t STSPIN820_GetNbDevices(void);
Davidroid 2:4fd08b67958c 588 //Return the ABS_POSITION (32b signed)
Davidroid 2:4fd08b67958c 589 int32_t STSPIN820_GetPosition(void);
Davidroid 2:4fd08b67958c 590 //Get the motor step mode
Davidroid 2:4fd08b67958c 591 motor_step_mode_t STSPIN820_GetStepMode(void);
Davidroid 2:4fd08b67958c 592 //Get the selected mode to stop the motor
Davidroid 2:4fd08b67958c 593 motor_stop_mode_t STSPIN820_GetStopMode(void);
Davidroid 2:4fd08b67958c 594 //Get the torque
Davidroid 2:4fd08b67958c 595 uint8_t STSPIN820_GetTorque(motor_torque_mode_t torqueMode);
Davidroid 2:4fd08b67958c 596 //Get the torque boost feature status
Davidroid 2:4fd08b67958c 597 bool STSPIN820_GetTorqueBoostEnable(void);
Davidroid 2:4fd08b67958c 598 //Get the torque boost threshold
Davidroid 2:4fd08b67958c 599 uint16_t STSPIN820_GetTorqueBoostThreshold(void);
Davidroid 2:4fd08b67958c 600 //Move to the home position
Davidroid 2:4fd08b67958c 601 void STSPIN820_GoHome(void);
Davidroid 2:4fd08b67958c 602 //Move to the Mark position
Davidroid 2:4fd08b67958c 603 void STSPIN820_GoMark(void);
Davidroid 2:4fd08b67958c 604 //Go to the specified position
Davidroid 2:4fd08b67958c 605 void STSPIN820_GoTo(int32_t targetPosition);
Davidroid 2:4fd08b67958c 606 //Go to the specified position using the specified direction
Davidroid 2:4fd08b67958c 607 void STSPIN820_GoToDir(motor_direction_t direction, int32_t targetPosition);
Davidroid 2:4fd08b67958c 608 //Stop the motor and keep holding torque
Davidroid 2:4fd08b67958c 609 void STSPIN820_HardStop(void);
Davidroid 2:4fd08b67958c 610 //Stop the motor and disable the power bridge
Davidroid 2:4fd08b67958c 611 void STSPIN820_HardHiZ(void);
Davidroid 2:4fd08b67958c 612 //Move the motor of the specified number of steps
Davidroid 2:4fd08b67958c 613 void STSPIN820_Move(motor_direction_t direction, uint32_t stepCount);
Davidroid 2:4fd08b67958c 614 //Put STSPIN820 device in standby (low power consumption)
Davidroid 2:4fd08b67958c 615 void STSPIN820_PutDeviceInStandby(void);
Davidroid 2:4fd08b67958c 616 //Run the motor
Davidroid 2:4fd08b67958c 617 void STSPIN820_Run(motor_direction_t direction);
Davidroid 2:4fd08b67958c 618 //Set the acceleration in pps^2
Davidroid 2:4fd08b67958c 619 bool STSPIN820_SetAcceleration(uint16_t newAcc);
Davidroid 2:4fd08b67958c 620 //Set the deceleration in pps^2
Davidroid 2:4fd08b67958c 621 bool STSPIN820_SetDeceleration(uint16_t newDec);
Davidroid 2:4fd08b67958c 622 //Set the STSPIN820 decay mode pin
Davidroid 2:4fd08b67958c 623 void STSPIN820_SetDecayMode(motor_decay_mode_t decay);
Davidroid 2:4fd08b67958c 624 //Set the STSPIN820 direction pin
Davidroid 2:4fd08b67958c 625 void STSPIN820_SetDirection(motor_direction_t direction);
Davidroid 2:4fd08b67958c 626 //Set current position to be the home position
Davidroid 2:4fd08b67958c 627 void STSPIN820_SetHome(void);
Davidroid 2:4fd08b67958c 628 //Set current position to be the mark position
Davidroid 2:4fd08b67958c 629 void STSPIN820_SetMark(void);
Davidroid 2:4fd08b67958c 630 //Set the max speed in pps
Davidroid 2:4fd08b67958c 631 bool STSPIN820_SetMaxSpeed(uint16_t newMaxSpeed);
Davidroid 2:4fd08b67958c 632 //Set the min speed in pps
Davidroid 2:4fd08b67958c 633 bool STSPIN820_SetMinSpeed(uint16_t newMinSpeed);
Davidroid 2:4fd08b67958c 634 //Set the number of devices
Davidroid 1:bc265521eb00 635 bool STSPIN820_SetNbDevices(uint8_t nbDevices);
Davidroid 2:4fd08b67958c 636 //Step mode selection
Davidroid 2:4fd08b67958c 637 bool STSPIN820_SetStepMode(motor_step_mode_t stepMode);
Davidroid 2:4fd08b67958c 638 //Select the mode to stop the motor
Davidroid 2:4fd08b67958c 639 void STSPIN820_SetStopMode(motor_stop_mode_t stopMode);
Davidroid 2:4fd08b67958c 640 //Set the torque
Davidroid 2:4fd08b67958c 641 void STSPIN820_SetTorque(motor_torque_mode_t torqueMode, uint8_t torqueValue);
Davidroid 2:4fd08b67958c 642 //Enable or disable the torque boost feature
Davidroid 2:4fd08b67958c 643 void STSPIN820_SetTorqueBoostEnable(bool enable);
Davidroid 2:4fd08b67958c 644 //Set the torque boost threshold
Davidroid 2:4fd08b67958c 645 void STSPIN820_SetTorqueBoostThreshold(uint16_t speedThreshold);
Davidroid 2:4fd08b67958c 646 //Progressively stop the motor by using the device deceleration and set deceleration torque
Davidroid 2:4fd08b67958c 647 bool STSPIN820_SoftStop(void);
Davidroid 2:4fd08b67958c 648 //Get the frequency of REF PWM of the specified device
Davidroid 2:4fd08b67958c 649 uint32_t STSPIN820_VrefPwmGetFreq(void);
Davidroid 2:4fd08b67958c 650 //Set the frequency of REF PWM of the specified device
Davidroid 2:4fd08b67958c 651 void STSPIN820_VrefPwmSetFreq(uint32_t newFreq);
Davidroid 2:4fd08b67958c 652 //Wait for the device state becomes Inactive
Davidroid 2:4fd08b67958c 653 void STSPIN820_WaitWhileActive(void);
Davidroid 1:bc265521eb00 654
Davidroid 1:bc265521eb00 655
Davidroid 1:bc265521eb00 656 /* ACTION 8 --------------------------------------------------------------*
Davidroid 1:bc265521eb00 657 * Implement here other I/O methods beyond those already implemented *
Davidroid 1:bc265521eb00 658 * above, which are declared extern within the component's header file. *
Davidroid 1:bc265521eb00 659 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 660 /**
Davidroid 2:4fd08b67958c 661 * @brief Making the CPU wait.
Davidroid 2:4fd08b67958c 662 * @param None.
Davidroid 2:4fd08b67958c 663 * @retval None.
Davidroid 2:4fd08b67958c 664 */
Davidroid 2:4fd08b67958c 665 void STSPIN820_Delay(uint32_t delay)
Davidroid 1:bc265521eb00 666 {
Davidroid 2:4fd08b67958c 667 wait_ms(delay);
Davidroid 1:bc265521eb00 668 }
Davidroid 1:bc265521eb00 669
Davidroid 2:4fd08b67958c 670 /**
Davidroid 2:4fd08b67958c 671 * @brief Enabling the power bridges (leaving the output bridges at HiZ).
Davidroid 2:4fd08b67958c 672 * @param None.
Davidroid 2:4fd08b67958c 673 * @retval None.
Davidroid 2:4fd08b67958c 674 */
Davidroid 2:4fd08b67958c 675 void STSPIN820_Enable_Power_Bridges(void)
Davidroid 1:bc265521eb00 676 {
Davidroid 2:4fd08b67958c 677 if (en_fault_irq.read() == 0)
Davidroid 2:4fd08b67958c 678 {
Davidroid 2:4fd08b67958c 679 //en_fault_irq.write(1);
Davidroid 2:4fd08b67958c 680 wait_ms(BRIDGE_TURN_ON_DELAY_ms);
Davidroid 2:4fd08b67958c 681 enable_en_fault_irq();
Davidroid 2:4fd08b67958c 682 }
Davidroid 1:bc265521eb00 683 }
Davidroid 1:bc265521eb00 684
Davidroid 2:4fd08b67958c 685 /**
Davidroid 2:4fd08b67958c 686 * @brief Disabling the power bridges (forcing the output bridges at HiZ).
Davidroid 2:4fd08b67958c 687 * @param None.
Davidroid 2:4fd08b67958c 688 * @retval None.
Davidroid 2:4fd08b67958c 689 */
Davidroid 2:4fd08b67958c 690 void STSPIN820_Disable_Power_Bridges(void)
Davidroid 1:bc265521eb00 691 {
Davidroid 2:4fd08b67958c 692 disable_en_fault_irq();
Davidroid 2:4fd08b67958c 693 //en_fault_irq.write(0);
Davidroid 1:bc265521eb00 694 }
Davidroid 1:bc265521eb00 695
Davidroid 2:4fd08b67958c 696 /**
Davidroid 2:4fd08b67958c 697 * @brief Enabling interrupts.
Davidroid 2:4fd08b67958c 698 * @param None.
Davidroid 2:4fd08b67958c 699 * @retval None.
Davidroid 2:4fd08b67958c 700 */
Davidroid 2:4fd08b67958c 701 void STSPIN820_EnableIrq(void)
Davidroid 1:bc265521eb00 702 {
Davidroid 2:4fd08b67958c 703 __enable_irq();
Davidroid 1:bc265521eb00 704 }
Davidroid 1:bc265521eb00 705
Davidroid 2:4fd08b67958c 706 /**
Davidroid 2:4fd08b67958c 707 * @brief Disabling interrupts.
Davidroid 2:4fd08b67958c 708 * @param None.
Davidroid 2:4fd08b67958c 709 * @retval None.
Davidroid 2:4fd08b67958c 710 */
Davidroid 2:4fd08b67958c 711 void STSPIN820_DisableIrq(void)
Davidroid 1:bc265521eb00 712 {
Davidroid 2:4fd08b67958c 713 __disable_irq();
Davidroid 1:bc265521eb00 714 }
Davidroid 1:bc265521eb00 715
Davidroid 2:4fd08b67958c 716 /**
Davidroid 2:4fd08b67958c 717 * @brief Getting the state of the EN_FAULT pin.
Davidroid 2:4fd08b67958c 718 * @param None.
Davidroid 2:4fd08b67958c 719 * @retval None.
Davidroid 2:4fd08b67958c 720 */
Davidroid 2:4fd08b67958c 721 uint32_t STSPIN820_EN_FAULT_PIN_GetState(void)
Davidroid 1:bc265521eb00 722 {
Davidroid 2:4fd08b67958c 723 return (uint32_t) en_fault_irq;
Davidroid 1:bc265521eb00 724 }
Davidroid 1:bc265521eb00 725
Davidroid 2:4fd08b67958c 726 /**
Davidroid 2:4fd08b67958c 727 * @brief Initialising the GPIOs.
Davidroid 2:4fd08b67958c 728 * @param None.
Davidroid 2:4fd08b67958c 729 * @retval None.
Davidroid 2:4fd08b67958c 730 */
Davidroid 2:4fd08b67958c 731 void STSPIN820_GpioInit(void)
Davidroid 1:bc265521eb00 732 {
Davidroid 2:4fd08b67958c 733 disable_en_fault_irq();
Davidroid 2:4fd08b67958c 734 enable_en_fault_irq();
Davidroid 2:4fd08b67958c 735 STSPIN820_Reset();
Davidroid 1:bc265521eb00 736 }
Davidroid 1:bc265521eb00 737
Davidroid 2:4fd08b67958c 738 /**
Davidroid 2:4fd08b67958c 739 * @brief Initialising the PWM.
Davidroid 2:4fd08b67958c 740 * @param None.
Davidroid 2:4fd08b67958c 741 * @retval None.
Davidroid 2:4fd08b67958c 742 */
Davidroid 2:4fd08b67958c 743 void STSPIN820_PwmRefInit(void) {}
Davidroid 2:4fd08b67958c 744
Davidroid 2:4fd08b67958c 745 /**
Davidroid 2:4fd08b67958c 746 * @brief Setting the frequency and the duty-cycle of PWM.
Davidroid 2:4fd08b67958c 747 * The frequency controls directly the speed of the device.
Davidroid 2:4fd08b67958c 748 * The duty-cycle controls the torque of the device.
Davidroid 2:4fd08b67958c 749 * @param frequency The frequency of PWM in Hz.
Davidroid 2:4fd08b67958c 750 * @param duty_cycle The duty-cycle of PWM in [0..100]%.
Davidroid 2:4fd08b67958c 751 * @retval None.
Davidroid 2:4fd08b67958c 752 */
Davidroid 2:4fd08b67958c 753 void STSPIN820_PwmRefSetFreqAndDutyCycle(uint32_t frequency, uint8_t duty_cycle)
Davidroid 1:bc265521eb00 754 {
Davidroid 2:4fd08b67958c 755 pwm_period = (double) (1.0f / frequency);
Davidroid 2:4fd08b67958c 756 pwm_duty_cycle = (double) duty_cycle;
Davidroid 1:bc265521eb00 757 }
Davidroid 1:bc265521eb00 758
Davidroid 2:4fd08b67958c 759 /**
Davidroid 2:4fd08b67958c 760 * @brief Starting the PWM.
Davidroid 2:4fd08b67958c 761 * @param None.
Davidroid 2:4fd08b67958c 762 * @retval None.
Davidroid 2:4fd08b67958c 763 */
Davidroid 2:4fd08b67958c 764 void STSPIN820_PwmRefStart(void)
Davidroid 1:bc265521eb00 765 {
Davidroid 2:4fd08b67958c 766 /* Setting the period and the duty-cycle of PWM. */
Davidroid 2:4fd08b67958c 767 ref_pwm.period(pwm_period);
Davidroid 2:4fd08b67958c 768 ref_pwm.write(pwm_duty_cycle);
Davidroid 2:4fd08b67958c 769
Davidroid 2:4fd08b67958c 770 /* Setting a callback with the same period of PWM's, to update the state machine. */
Davidroid 2:4fd08b67958c 771 ticker.attach(Callback<void()>(this, &STSPIN820::STSPIN820_StepClockHandler), pwm_period);
Davidroid 1:bc265521eb00 772 }
Davidroid 1:bc265521eb00 773
Davidroid 2:4fd08b67958c 774 /**
Davidroid 2:4fd08b67958c 775 * @brief Stopping the PWM.
Davidroid 2:4fd08b67958c 776 * @param None.
Davidroid 2:4fd08b67958c 777 * @retval None.
Davidroid 2:4fd08b67958c 778 */
Davidroid 2:4fd08b67958c 779 void STSPIN820_PwmRefStop(void)
Davidroid 1:bc265521eb00 780 {
Davidroid 2:4fd08b67958c 781 ref_pwm.write(0.0f);
Davidroid 2:4fd08b67958c 782 ticker.detach();
Davidroid 1:bc265521eb00 783 }
Davidroid 1:bc265521eb00 784
Davidroid 2:4fd08b67958c 785 /**
Davidroid 2:4fd08b67958c 786 * @brief Putting the device in standby mode.
Davidroid 2:4fd08b67958c 787 * @param None.
Davidroid 2:4fd08b67958c 788 * @retval None.
Davidroid 2:4fd08b67958c 789 */
Davidroid 2:4fd08b67958c 790 void STSPIN820_ReleaseReset(void)
Davidroid 1:bc265521eb00 791 {
Davidroid 2:4fd08b67958c 792 standby_reset = 1;
Davidroid 1:bc265521eb00 793 }
Davidroid 1:bc265521eb00 794
Davidroid 2:4fd08b67958c 795 /**
Davidroid 2:4fd08b67958c 796 * @brief Putting the device in reset mode.
Davidroid 2:4fd08b67958c 797 * @param None.
Davidroid 2:4fd08b67958c 798 * @retval None.
Davidroid 2:4fd08b67958c 799 */
Davidroid 2:4fd08b67958c 800 void STSPIN820_Reset(void)
Davidroid 1:bc265521eb00 801 {
Davidroid 2:4fd08b67958c 802 standby_reset = 0;
Davidroid 1:bc265521eb00 803 }
Davidroid 1:bc265521eb00 804
Davidroid 2:4fd08b67958c 805 /**
Davidroid 2:4fd08b67958c 806 * @brief Setting the decay mode pin state.
Davidroid 2:4fd08b67958c 807 * @param gpio_state State of the decay mode pin ("0" to reset, "1" to set).
Davidroid 2:4fd08b67958c 808 * @retval None.
Davidroid 2:4fd08b67958c 809 */
Davidroid 2:4fd08b67958c 810 void STSPIN820_SetDecayGpio(uint8_t gpio_state)
Davidroid 1:bc265521eb00 811 {
Davidroid 2:4fd08b67958c 812 decay = gpio_state;
Davidroid 1:bc265521eb00 813 }
Davidroid 1:bc265521eb00 814
Davidroid 2:4fd08b67958c 815 /**
Davidroid 2:4fd08b67958c 816 * @brief Getting the decay mode pin state.
Davidroid 2:4fd08b67958c 817 * @param None.
Davidroid 2:4fd08b67958c 818 * @retval None.
Davidroid 2:4fd08b67958c 819 */
Davidroid 2:4fd08b67958c 820 uint8_t STSPIN820_GetDecayGpio(void)
Davidroid 1:bc265521eb00 821 {
Davidroid 2:4fd08b67958c 822 return (decay != 0 ? 1 : 0);
Davidroid 1:bc265521eb00 823 }
Davidroid 1:bc265521eb00 824
Davidroid 2:4fd08b67958c 825 /**
Davidroid 2:4fd08b67958c 826 * @brief Setting the direction pin state.
Davidroid 2:4fd08b67958c 827 * @param gpio_state State of the direction pin ("0" to reset, "1" to set).
Davidroid 2:4fd08b67958c 828 * @retval None.
Davidroid 2:4fd08b67958c 829 */
Davidroid 2:4fd08b67958c 830 void STSPIN820_SetDirectionGpio(uint8_t gpio_state)
Davidroid 1:bc265521eb00 831 {
Davidroid 2:4fd08b67958c 832 direction = gpio_state;
Davidroid 1:bc265521eb00 833 }
Davidroid 1:bc265521eb00 834
Davidroid 2:4fd08b67958c 835 /**
Davidroid 2:4fd08b67958c 836 * @brief Setting the full step mode.
Davidroid 2:4fd08b67958c 837 * @param None.
Davidroid 2:4fd08b67958c 838 * @retval None.
Davidroid 2:4fd08b67958c 839 */
Davidroid 2:4fd08b67958c 840 void STSPIN820_SetFullStep(void)
Davidroid 1:bc265521eb00 841 {
Davidroid 2:4fd08b67958c 842 mode1 = mode2 = mode3 = 0;
Davidroid 1:bc265521eb00 843 }
Davidroid 1:bc265521eb00 844
Davidroid 2:4fd08b67958c 845 /**
Davidroid 2:4fd08b67958c 846 * @brief Selecting the STSPIN820 mode1, mode2 and mode3 pins levels.
Davidroid 2:4fd08b67958c 847 * @param mode1_level Level of the mode1 gpio (0 low, 1+ high).
Davidroid 2:4fd08b67958c 848 * @param mode2_level Level of the mode2 gpio (0 low, 1+ high).
Davidroid 2:4fd08b67958c 849 * @param mode3_level Level of the mode3 gpio (0 low, 1+ high).
Davidroid 2:4fd08b67958c 850 * @retval None.
Davidroid 2:4fd08b67958c 851 */
Davidroid 2:4fd08b67958c 852 void STSPIN820_SetModePins(uint8_t mode1_level, uint8_t mode2_level, uint8_t mode3_level)
Davidroid 1:bc265521eb00 853 {
Davidroid 2:4fd08b67958c 854 mode1 = (mode1_level != 0 ? 1 : 0);
Davidroid 2:4fd08b67958c 855 mode2 = (mode2_level != 0 ? 1 : 0);
Davidroid 2:4fd08b67958c 856 mode3 = (mode3_level != 0 ? 1 : 0);
Davidroid 1:bc265521eb00 857 }
Davidroid 1:bc265521eb00 858
Davidroid 2:4fd08b67958c 859 /**
Davidroid 2:4fd08b67958c 860 * @brief Initializing step clock compare value.
Davidroid 2:4fd08b67958c 861 * @param None.
Davidroid 2:4fd08b67958c 862 * @retval None.
Davidroid 2:4fd08b67958c 863 */
Davidroid 2:4fd08b67958c 864 void STSPIN820_TimStckCompareInit(void) {}
Davidroid 2:4fd08b67958c 865
Davidroid 2:4fd08b67958c 866 /**
Davidroid 2:4fd08b67958c 867 * @brief Deinitializing the timer used for the step clock.
Davidroid 2:4fd08b67958c 868 * @param None.
Davidroid 2:4fd08b67958c 869 * @retval None.
Davidroid 2:4fd08b67958c 870 */
Davidroid 2:4fd08b67958c 871 void STSPIN820_TimStckDeInit(void) {}
Davidroid 2:4fd08b67958c 872
Davidroid 2:4fd08b67958c 873 /**
Davidroid 2:4fd08b67958c 874 * @brief Initializing the timer used for the step clock.
Davidroid 2:4fd08b67958c 875 * @param None.
Davidroid 2:4fd08b67958c 876 * @retval None.
Davidroid 2:4fd08b67958c 877 */
Davidroid 2:4fd08b67958c 878 void STSPIN820_TimStckInit(void) {}
Davidroid 2:4fd08b67958c 879
Davidroid 2:4fd08b67958c 880 /**
Davidroid 2:4fd08b67958c 881 * @brief Setting the frequency of PWM.
Davidroid 2:4fd08b67958c 882 * The frequency controls directly the speed of the device.
Davidroid 2:4fd08b67958c 883 * @param frequency The frequency of PWM in Hz.
Davidroid 2:4fd08b67958c 884 * @retval None.
Davidroid 2:4fd08b67958c 885 */
Davidroid 2:4fd08b67958c 886 void STSPIN820_TimStckSetFreq(uint32_t frequency)
Davidroid 1:bc265521eb00 887 {
Davidroid 2:4fd08b67958c 888 pwm_period = (double) (1.0f / frequency);
Davidroid 1:bc265521eb00 889 }
Davidroid 1:bc265521eb00 890
Davidroid 2:4fd08b67958c 891 /**
Davidroid 2:4fd08b67958c 892 * @brief Starting the step clock.
Davidroid 2:4fd08b67958c 893 * @param None.
Davidroid 2:4fd08b67958c 894 * @retval None.
Davidroid 2:4fd08b67958c 895 */
Davidroid 2:4fd08b67958c 896 void STSPIN820_TimStckStart(void) {}
Davidroid 2:4fd08b67958c 897
Davidroid 2:4fd08b67958c 898 /**
Davidroid 2:4fd08b67958c 899 * @brief Stopping the step clock.
Davidroid 2:4fd08b67958c 900 * @param p_toggle_odd Pointer to the volatile toggleOdd variable.
Davidroid 2:4fd08b67958c 901 * @retval "1" if OK, "0" if the STCK pin is High (forbidden configuration).
Davidroid 2:4fd08b67958c 902 */
Davidroid 2:4fd08b67958c 903 uint8_t STSPIN820_TimStckStop(volatile uint8_t *p_toggle_odd )
Davidroid 1:bc265521eb00 904 {
Davidroid 2:4fd08b67958c 905 __disable_irq();
Davidroid 2:4fd08b67958c 906 if (*p_toggle_odd == 1)
Davidroid 2:4fd08b67958c 907 {
Davidroid 2:4fd08b67958c 908 __enable_irq();
Davidroid 2:4fd08b67958c 909 return 1;
Davidroid 2:4fd08b67958c 910 }
Davidroid 2:4fd08b67958c 911 if (step_clock != 0)
Davidroid 2:4fd08b67958c 912 {
Davidroid 2:4fd08b67958c 913 __enable_irq();
Davidroid 2:4fd08b67958c 914 return 0;
Davidroid 2:4fd08b67958c 915 }
Davidroid 2:4fd08b67958c 916 //HAL_TIM_OC_Stop_IT(&hTimerStepClock, BSP_MOTOR_CONTROL_BOARD_CHAN_TIM_STCK);
Davidroid 2:4fd08b67958c 917 __enable_irq();
Davidroid 2:4fd08b67958c 918 STSPIN820_TimStckDeInit();
Davidroid 2:4fd08b67958c 919 return 1;
Davidroid 1:bc265521eb00 920 }
Davidroid 1:bc265521eb00 921
Davidroid 1:bc265521eb00 922
Davidroid 1:bc265521eb00 923 /*** Component's Instance Variables ***/
Davidroid 1:bc265521eb00 924
Davidroid 1:bc265521eb00 925 /* ACTION 9 --------------------------------------------------------------*
Davidroid 1:bc265521eb00 926 * Declare here interrupt related variables, if needed. *
Davidroid 1:bc265521eb00 927 * Note that interrupt handling is platform dependent, see *
Davidroid 1:bc265521eb00 928 * "Interrupt Related Methods" above. *
Davidroid 1:bc265521eb00 929 * *
Davidroid 1:bc265521eb00 930 * Example: *
Davidroid 1:bc265521eb00 931 * + mbed: *
Davidroid 1:bc265521eb00 932 * InterruptIn feature_irq; *
Davidroid 1:bc265521eb00 933 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 934 /* En Fault Interrupt. */
Davidroid 2:4fd08b67958c 935 InterruptIn en_fault_irq;
Davidroid 1:bc265521eb00 936
Davidroid 1:bc265521eb00 937 /* ACTION 10 -------------------------------------------------------------*
Davidroid 1:bc265521eb00 938 * Declare here other pin related variables, if needed. *
Davidroid 1:bc265521eb00 939 * *
Davidroid 1:bc265521eb00 940 * Example: *
Davidroid 1:bc265521eb00 941 * + mbed: *
Davidroid 1:bc265521eb00 942 * DigitalOut standby_reset; *
Davidroid 1:bc265521eb00 943 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 944 /* Standby/reset pin. */
Davidroid 2:4fd08b67958c 945 DigitalOut standby_reset;
Davidroid 2:4fd08b67958c 946
Davidroid 2:4fd08b67958c 947 /* Direction of rotation pin. */
Davidroid 2:4fd08b67958c 948 DigitalOut direction;
Davidroid 2:4fd08b67958c 949
Davidroid 2:4fd08b67958c 950 /* Pulse Width Modulation pin. */
Davidroid 2:4fd08b67958c 951 PwmOut ref_pwm;
Davidroid 2:4fd08b67958c 952
Davidroid 2:4fd08b67958c 953 /* Decay pin. */
Davidroid 2:4fd08b67958c 954 DigitalOut decay;
Davidroid 2:4fd08b67958c 955
Davidroid 2:4fd08b67958c 956 /* Step clock pin. */
Davidroid 2:4fd08b67958c 957 DigitalOut step_clock;
Davidroid 2:4fd08b67958c 958
Davidroid 2:4fd08b67958c 959 /* Mode1 pin. */
Davidroid 2:4fd08b67958c 960 DigitalOut mode1;
Davidroid 2:4fd08b67958c 961
Davidroid 2:4fd08b67958c 962 /* Mode2 pin. */
Davidroid 2:4fd08b67958c 963 DigitalOut mode2;
Davidroid 2:4fd08b67958c 964
Davidroid 2:4fd08b67958c 965 /* Mode3 pin. */
Davidroid 2:4fd08b67958c 966 DigitalOut mode3;
Davidroid 2:4fd08b67958c 967
Davidroid 2:4fd08b67958c 968 /* Timer to trigger the PWM callback at each PWM pulse. */
Davidroid 2:4fd08b67958c 969 Ticker ticker;
Davidroid 1:bc265521eb00 970
Davidroid 1:bc265521eb00 971 /* ACTION 11 -------------------------------------------------------------*
Davidroid 1:bc265521eb00 972 * Declare here communication related variables, if needed. *
Davidroid 1:bc265521eb00 973 * *
Davidroid 1:bc265521eb00 974 * Example: *
Davidroid 1:bc265521eb00 975 * + mbed: *
Davidroid 1:bc265521eb00 976 * DigitalOut ssel; *
Davidroid 1:bc265521eb00 977 * DevSPI &dev_spi; *
Davidroid 1:bc265521eb00 978 *------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 979
Davidroid 1:bc265521eb00 980 /* ACTION 12 -------------------------------------------------------------*
Davidroid 1:bc265521eb00 981 * Declare here identity related variables, if needed. *
Davidroid 1:bc265521eb00 982 * Note that there should be only a unique identifier for each component, *
Davidroid 1:bc265521eb00 983 * which should be the "who_am_i" parameter. *
Davidroid 1:bc265521eb00 984 *------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 985 /* Identity */
Davidroid 1:bc265521eb00 986 uint8_t who_am_i;
Davidroid 1:bc265521eb00 987
Davidroid 1:bc265521eb00 988 /* ACTION 13 -------------------------------------------------------------*
Davidroid 1:bc265521eb00 989 * Declare here the component's static and non-static data, one variable *
Davidroid 1:bc265521eb00 990 * per line. *
Davidroid 1:bc265521eb00 991 * *
Davidroid 1:bc265521eb00 992 * Example: *
Davidroid 1:bc265521eb00 993 * float measure; *
Davidroid 1:bc265521eb00 994 * int instance_id; *
Davidroid 1:bc265521eb00 995 * static int number_of_instances; *
Davidroid 1:bc265521eb00 996 *------------------------------------------------------------------------*/
Davidroid 2:4fd08b67958c 997 /* Data. */
Davidroid 1:bc265521eb00 998 void (*flag_interrupt_callback)(void);
Davidroid 1:bc265521eb00 999 void (*error_handler_callback)(uint16_t error);
Davidroid 2:4fd08b67958c 1000 volatile uint8_t toggle_odd;
Davidroid 1:bc265521eb00 1001 device_params_t device_prm;
Davidroid 2:4fd08b67958c 1002 double pwm_period;
Davidroid 2:4fd08b67958c 1003 double pwm_duty_cycle;
Davidroid 1:bc265521eb00 1004 uint8_t device_instance;
Davidroid 2:4fd08b67958c 1005
Davidroid 2:4fd08b67958c 1006 /* Static data. */
Davidroid 2:4fd08b67958c 1007 static uint8_t number_of_devices;
Davidroid 1:bc265521eb00 1008 };
Davidroid 1:bc265521eb00 1009
Davidroid 1:bc265521eb00 1010 #endif /* __STSPIN820_CLASS_H */
Davidroid 1:bc265521eb00 1011
Davidroid 1:bc265521eb00 1012 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/