Personal fork of the library for direct control instead of library control

Dependencies:   X_NUCLEO_COMMON

Dependents:   Thesis_Rotating_Platform

Fork of X_NUCLEO_IHM01A1 by Arkadi Rafalovich

Committer:
Davidroid
Date:
Thu Nov 19 10:56:34 2015 +0000
Revision:
6:a47569fc7534
Parent:
5:d3c78f12a78d
Child:
7:f7e0c3621f77
Set ISR flags as static members.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:2887415a46cd 1 /**
Davidroid 0:2887415a46cd 2 ******************************************************************************
Davidroid 0:2887415a46cd 3 * @file l6474_class.h
Davidroid 0:2887415a46cd 4 * @author IPC Rennes
Davidroid 0:2887415a46cd 5 * @version V1.5.0
Davidroid 0:2887415a46cd 6 * @date November 12, 2014
Davidroid 0:2887415a46cd 7 * @brief L6474 driver (fully integrated microstepping motor driver)
Davidroid 0:2887415a46cd 8 * @note (C) COPYRIGHT 2014 STMicroelectronics
Davidroid 0:2887415a46cd 9 ******************************************************************************
Davidroid 0:2887415a46cd 10 * @attention
Davidroid 0:2887415a46cd 11 *
Davidroid 0:2887415a46cd 12 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Davidroid 0:2887415a46cd 13 *
Davidroid 0:2887415a46cd 14 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 0:2887415a46cd 15 * are permitted provided that the following conditions are met:
Davidroid 0:2887415a46cd 16 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 0:2887415a46cd 17 * this list of conditions and the following disclaimer.
Davidroid 0:2887415a46cd 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 0:2887415a46cd 19 * this list of conditions and the following disclaimer in the documentation
Davidroid 0:2887415a46cd 20 * and/or other materials provided with the distribution.
Davidroid 0:2887415a46cd 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 0:2887415a46cd 22 * may be used to endorse or promote products derived from this software
Davidroid 0:2887415a46cd 23 * without specific prior written permission.
Davidroid 0:2887415a46cd 24 *
Davidroid 0:2887415a46cd 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 0:2887415a46cd 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 0:2887415a46cd 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 0:2887415a46cd 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 0:2887415a46cd 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 0:2887415a46cd 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 0:2887415a46cd 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 0:2887415a46cd 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 0:2887415a46cd 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 0:2887415a46cd 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 0:2887415a46cd 35 *
Davidroid 0:2887415a46cd 36 ******************************************************************************
Davidroid 0:2887415a46cd 37 */
Davidroid 0:2887415a46cd 38
Davidroid 0:2887415a46cd 39
Davidroid 0:2887415a46cd 40 /* Generated with Stm32CubeTOO -----------------------------------------------*/
Davidroid 0:2887415a46cd 41
Davidroid 0:2887415a46cd 42
Davidroid 0:2887415a46cd 43 /* Revision ------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 44 /*
Davidroid 0:2887415a46cd 45 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
Davidroid 0:2887415a46cd 46 Branch/Trunk/Tag: trunk
Davidroid 0:2887415a46cd 47 Based on: X-CUBE-SPN1/trunk/Drivers/BSP/Components/l6474/l6474.h
Davidroid 0:2887415a46cd 48 Revision: 0
Davidroid 0:2887415a46cd 49 */
Davidroid 0:2887415a46cd 50
Davidroid 0:2887415a46cd 51
Davidroid 0:2887415a46cd 52 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 0:2887415a46cd 53
Davidroid 0:2887415a46cd 54 #ifndef __L6474_CLASS_H
Davidroid 0:2887415a46cd 55 #define __L6474_CLASS_H
Davidroid 0:2887415a46cd 56
Davidroid 0:2887415a46cd 57
Davidroid 0:2887415a46cd 58 /* Includes ------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 59
Davidroid 0:2887415a46cd 60 /* ACTION 1 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 61 * Include here platform specific header files. *
Davidroid 0:2887415a46cd 62 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 63 #include "mbed.h"
Davidroid 0:2887415a46cd 64 #include "DevSPI.h"
Davidroid 0:2887415a46cd 65 /* ACTION 2 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 66 * Include here component specific header files. *
Davidroid 0:2887415a46cd 67 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 68 #include "l6474.h"
Davidroid 0:2887415a46cd 69 /* ACTION 3 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 70 * Include here interface specific header files. *
Davidroid 0:2887415a46cd 71 * *
Davidroid 0:2887415a46cd 72 * Example: *
Davidroid 0:2887415a46cd 73 * #include "../Interfaces/Humidity_class.h" *
Davidroid 0:2887415a46cd 74 * #include "../Interfaces/Temperature_class.h" *
Davidroid 0:2887415a46cd 75 *----------------------------------------------------------------------------*/
Davidroid 4:83a1eb397a65 76 #include "../Interfaces/StepperMotor_class.h"
Davidroid 0:2887415a46cd 77
Davidroid 0:2887415a46cd 78
Davidroid 0:2887415a46cd 79 /* Classes -------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 80
Davidroid 0:2887415a46cd 81 /** Class representing a 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 4:83a1eb397a65 91 * @param standby_reset pin name of the STBY\RST pin of the component.
Davidroid 4:83a1eb397a65 92 * @param direction pin name of the DIR pin of the component.
Davidroid 4:83a1eb397a65 93 * @param pwm pin name of the PWM pin of the component.
Davidroid 4:83a1eb397a65 94 * @param ssel pin name of the SSEL pin of the SPI device to be used for communication.
Davidroid 4:83a1eb397a65 95 * @param spi SPI device to be used for communication.
Davidroid 0:2887415a46cd 96 */
Davidroid 4:83a1eb397a65 97 L6474(PinName standby_reset, PinName direction, PinName pwm, PinName ssel, DevSPI &spi) : StepperMotor(), standby_reset(standby_reset), direction(direction), pwm(pwm), ssel(ssel), dev_spi(spi)
Davidroid 0:2887415a46cd 98 {
Davidroid 0:2887415a46cd 99 /* ACTION 4 ----------------------------------------------------------*
Davidroid 0:2887415a46cd 100 * Initialize here the component's member variables, one variable per *
Davidroid 0:2887415a46cd 101 * line. *
Davidroid 0:2887415a46cd 102 * *
Davidroid 0:2887415a46cd 103 * Example: *
Davidroid 0:2887415a46cd 104 * T0_out = 0; *
Davidroid 0:2887415a46cd 105 * T1_out = 0; *
Davidroid 0:2887415a46cd 106 * T0_degC = 0; *
Davidroid 0:2887415a46cd 107 * T1_degC = 0; *
Davidroid 0:2887415a46cd 108 *--------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 109 flagInterruptCallback = 0;
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 0:2887415a46cd 145 virtual int Init(void *init)
Davidroid 0:2887415a46cd 146 {
Davidroid 0:2887415a46cd 147 return (int) L6474_Init((MOTOR_InitTypeDef *) init);
Davidroid 0:2887415a46cd 148 }
Davidroid 0:2887415a46cd 149
Davidroid 0:2887415a46cd 150 virtual int ReadID(uint8_t *id)
Davidroid 0:2887415a46cd 151 {
Davidroid 0:2887415a46cd 152 return (int) L6474_ReadID((uint8_t *) id);
Davidroid 0:2887415a46cd 153 }
Davidroid 0:2887415a46cd 154
Davidroid 4:83a1eb397a65 155 virtual unsigned int GetStatus(void)
Davidroid 0:2887415a46cd 156 {
Davidroid 4:83a1eb397a65 157 return (unsigned int) L6474_CmdGetStatus();
Davidroid 0:2887415a46cd 158 }
Davidroid 0:2887415a46cd 159
Davidroid 4:83a1eb397a65 160 virtual unsigned int GetParameter(unsigned int parameter)
Davidroid 0:2887415a46cd 161 {
Davidroid 4:83a1eb397a65 162 return (unsigned int) L6474_CmdGetParam((unsigned int) parameter);
Davidroid 4:83a1eb397a65 163 }
Davidroid 4:83a1eb397a65 164
Davidroid 4:83a1eb397a65 165 virtual signed int GetPosition(void)
Davidroid 4:83a1eb397a65 166 {
Davidroid 4:83a1eb397a65 167 return (signed int) L6474_GetPosition();
Davidroid 0:2887415a46cd 168 }
Davidroid 0:2887415a46cd 169
Davidroid 4:83a1eb397a65 170 virtual signed int GetMark(void)
Davidroid 0:2887415a46cd 171 {
Davidroid 4:83a1eb397a65 172 return (signed int) L6474_GetMark();
Davidroid 4:83a1eb397a65 173 }
Davidroid 4:83a1eb397a65 174
Davidroid 4:83a1eb397a65 175 virtual unsigned int GetSpeed(void)
Davidroid 0:2887415a46cd 176 {
Davidroid 4:83a1eb397a65 177 return (unsigned int) L6474_GetCurrentSpeed();
Davidroid 0:2887415a46cd 178 }
Davidroid 0:2887415a46cd 179
Davidroid 4:83a1eb397a65 180 virtual unsigned int GetMaxSpeed(void)
Davidroid 4:83a1eb397a65 181 {
Davidroid 4:83a1eb397a65 182 return (unsigned int) L6474_GetMaxSpeed();
Davidroid 4:83a1eb397a65 183 }
Davidroid 4:83a1eb397a65 184
Davidroid 4:83a1eb397a65 185 virtual unsigned int GetMinSpeed(void)
Davidroid 0:2887415a46cd 186 {
Davidroid 4:83a1eb397a65 187 return (unsigned int) L6474_GetMinSpeed();
Davidroid 4:83a1eb397a65 188 }
Davidroid 4:83a1eb397a65 189
Davidroid 4:83a1eb397a65 190 virtual unsigned int GetAcceleration(void)
Davidroid 4:83a1eb397a65 191 {
Davidroid 4:83a1eb397a65 192 return (unsigned int) L6474_GetAcceleration();
Davidroid 0:2887415a46cd 193 }
Davidroid 0:2887415a46cd 194
Davidroid 4:83a1eb397a65 195 virtual unsigned int GetDeceleration(void)
Davidroid 0:2887415a46cd 196 {
Davidroid 4:83a1eb397a65 197 return (unsigned int) L6474_GetDeceleration();
Davidroid 0:2887415a46cd 198 }
Davidroid 0:2887415a46cd 199
Davidroid 5:d3c78f12a78d 200 virtual direction_t GetDirection(void)
Davidroid 5:d3c78f12a78d 201 {
Davidroid 5:d3c78f12a78d 202 return (direction_t) (L6474_GetDirection() == FORWARD ? StepperMotor::FWD : StepperMotor::BWD);
Davidroid 5:d3c78f12a78d 203 }
Davidroid 5:d3c78f12a78d 204
Davidroid 4:83a1eb397a65 205 virtual void SetParameter(unsigned int parameter, unsigned int value)
Davidroid 0:2887415a46cd 206 {
Davidroid 4:83a1eb397a65 207 L6474_CmdSetParam((unsigned int) parameter, (unsigned int) value);
Davidroid 0:2887415a46cd 208 }
Davidroid 0:2887415a46cd 209
Davidroid 4:83a1eb397a65 210 virtual void SetHome(void)
Davidroid 0:2887415a46cd 211 {
Davidroid 4:83a1eb397a65 212 L6474_SetHome();
Davidroid 4:83a1eb397a65 213 }
Davidroid 4:83a1eb397a65 214
Davidroid 4:83a1eb397a65 215 virtual void SetMark(void)
Davidroid 4:83a1eb397a65 216 {
Davidroid 4:83a1eb397a65 217 L6474_SetMark();
Davidroid 0:2887415a46cd 218 }
Davidroid 0:2887415a46cd 219
Davidroid 4:83a1eb397a65 220 virtual void SetMaxSpeed(unsigned int speed)
Davidroid 4:83a1eb397a65 221 {
Davidroid 4:83a1eb397a65 222 L6474_SetMaxSpeed((unsigned int) speed);
Davidroid 0:2887415a46cd 223 }
Davidroid 0:2887415a46cd 224
Davidroid 4:83a1eb397a65 225 virtual void SetMinSpeed(unsigned int speed)
Davidroid 0:2887415a46cd 226 {
Davidroid 4:83a1eb397a65 227 L6474_SetMinSpeed((unsigned int) speed);
Davidroid 0:2887415a46cd 228 }
Davidroid 0:2887415a46cd 229
Davidroid 4:83a1eb397a65 230 virtual void SetAcceleration(unsigned int acceleration)
Davidroid 0:2887415a46cd 231 {
Davidroid 4:83a1eb397a65 232 L6474_SetAcceleration((unsigned int) acceleration);
Davidroid 0:2887415a46cd 233 }
Davidroid 0:2887415a46cd 234
Davidroid 4:83a1eb397a65 235 virtual void SetDeceleration(unsigned int deceleration)
Davidroid 0:2887415a46cd 236 {
Davidroid 4:83a1eb397a65 237 L6474_SetDeceleration((unsigned int) deceleration);
Davidroid 4:83a1eb397a65 238 }
Davidroid 4:83a1eb397a65 239
Davidroid 4:83a1eb397a65 240 virtual void GoTo(signed int position)
Davidroid 4:83a1eb397a65 241 {
Davidroid 4:83a1eb397a65 242 L6474_GoTo((signed int) position);
Davidroid 0:2887415a46cd 243 }
Davidroid 0:2887415a46cd 244
Davidroid 0:2887415a46cd 245 virtual void GoHome(void)
Davidroid 0:2887415a46cd 246 {
Davidroid 0:2887415a46cd 247 L6474_GoHome();
Davidroid 0:2887415a46cd 248 }
Davidroid 0:2887415a46cd 249
Davidroid 0:2887415a46cd 250 virtual void GoMark(void)
Davidroid 0:2887415a46cd 251 {
Davidroid 0:2887415a46cd 252 L6474_GoMark();
Davidroid 0:2887415a46cd 253 }
Davidroid 0:2887415a46cd 254
Davidroid 4:83a1eb397a65 255 virtual void Run(direction_t direction)
Davidroid 4:83a1eb397a65 256 {
Davidroid 5:d3c78f12a78d 257 L6474_Run((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD));
Davidroid 4:83a1eb397a65 258 }
Davidroid 4:83a1eb397a65 259
Davidroid 4:83a1eb397a65 260 virtual void Move(direction_t direction, unsigned int steps)
Davidroid 0:2887415a46cd 261 {
Davidroid 5:d3c78f12a78d 262 L6474_Move((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD), (unsigned int) steps);
Davidroid 4:83a1eb397a65 263 }
Davidroid 4:83a1eb397a65 264
Davidroid 4:83a1eb397a65 265 virtual void SoftStop(void)
Davidroid 4:83a1eb397a65 266 {
Davidroid 4:83a1eb397a65 267 L6474_SoftStop();
Davidroid 0:2887415a46cd 268 }
Davidroid 0:2887415a46cd 269
Davidroid 0:2887415a46cd 270 virtual void HardStop(void)
Davidroid 0:2887415a46cd 271 {
Davidroid 0:2887415a46cd 272 L6474_HardStop();
Davidroid 0:2887415a46cd 273 }
Davidroid 0:2887415a46cd 274
Davidroid 4:83a1eb397a65 275 virtual motorState_t GetDeviceState(void)
Davidroid 0:2887415a46cd 276 {
Davidroid 4:83a1eb397a65 277 return (motorState_t) L6474_GetDeviceState();
Davidroid 0:2887415a46cd 278 }
Davidroid 0:2887415a46cd 279
Davidroid 4:83a1eb397a65 280 virtual uint8_t GetFwVersion(void)
Davidroid 0:2887415a46cd 281 {
Davidroid 4:83a1eb397a65 282 return (uint8_t) L6474_GetFwVersion();
Davidroid 0:2887415a46cd 283 }
Davidroid 0:2887415a46cd 284
Davidroid 5:d3c78f12a78d 285 virtual void SetDirection(direction_t direction)
Davidroid 5:d3c78f12a78d 286 {
Davidroid 5:d3c78f12a78d 287 L6474_SetDirection((motorDir_t) (direction == StepperMotor::FWD ? FORWARD : BACKWARD));
Davidroid 5:d3c78f12a78d 288 }
Davidroid 5:d3c78f12a78d 289
Davidroid 0:2887415a46cd 290 virtual void StepClockHandler(void)
Davidroid 0:2887415a46cd 291 {
Davidroid 0:2887415a46cd 292 L6474_StepClockHandler();
Davidroid 0:2887415a46cd 293 }
Davidroid 0:2887415a46cd 294
Davidroid 1:b38ebb8ea286 295 virtual void WaitWhileActive(void)
Davidroid 1:b38ebb8ea286 296 {
Davidroid 1:b38ebb8ea286 297 L6474_WaitWhileActive();
Davidroid 1:b38ebb8ea286 298 }
Davidroid 1:b38ebb8ea286 299
Davidroid 0:2887415a46cd 300 virtual void CmdDisable(void)
Davidroid 0:2887415a46cd 301 {
Davidroid 0:2887415a46cd 302 L6474_CmdDisable();
Davidroid 0:2887415a46cd 303 }
Davidroid 0:2887415a46cd 304
Davidroid 0:2887415a46cd 305 virtual void CmdEnable(void)
Davidroid 0:2887415a46cd 306 {
Davidroid 0:2887415a46cd 307 L6474_CmdEnable();
Davidroid 0:2887415a46cd 308 }
Davidroid 0:2887415a46cd 309
Davidroid 0:2887415a46cd 310 virtual void CmdNop(void)
Davidroid 0:2887415a46cd 311 {
Davidroid 0:2887415a46cd 312 L6474_CmdNop();
Davidroid 0:2887415a46cd 313 }
Davidroid 0:2887415a46cd 314
Davidroid 0:2887415a46cd 315 virtual uint16_t ReadStatusRegister(void)
Davidroid 0:2887415a46cd 316 {
Davidroid 0:2887415a46cd 317 return (uint16_t) L6474_ReadStatusRegister();
Davidroid 0:2887415a46cd 318 }
Davidroid 0:2887415a46cd 319
Davidroid 0:2887415a46cd 320 virtual void ReleaseReset(void)
Davidroid 0:2887415a46cd 321 {
Davidroid 0:2887415a46cd 322 L6474_ReleaseReset();
Davidroid 0:2887415a46cd 323 }
Davidroid 0:2887415a46cd 324
Davidroid 0:2887415a46cd 325 virtual void Reset(void)
Davidroid 0:2887415a46cd 326 {
Davidroid 0:2887415a46cd 327 L6474_Reset();
Davidroid 0:2887415a46cd 328 }
Davidroid 0:2887415a46cd 329
Davidroid 0:2887415a46cd 330 virtual void SelectStepMode(motorStepMode_t stepMod)
Davidroid 0:2887415a46cd 331 {
Davidroid 0:2887415a46cd 332 L6474_SelectStepMode((motorStepMode_t) stepMod);
Davidroid 0:2887415a46cd 333 }
Davidroid 0:2887415a46cd 334
Davidroid 0:2887415a46cd 335 virtual void ErrorHandler(uint16_t error)
Davidroid 0:2887415a46cd 336 {
Davidroid 0:2887415a46cd 337 L6474_ErrorHandler((uint16_t) error);
Davidroid 0:2887415a46cd 338 }
Davidroid 0:2887415a46cd 339
Davidroid 4:83a1eb397a65 340 virtual void AttachErrorHandler(void (*callback)(uint16_t error))
Davidroid 4:83a1eb397a65 341 {
Davidroid 4:83a1eb397a65 342 L6474_AttachErrorHandler((void (*)(uint16_t error)) callback);
Davidroid 4:83a1eb397a65 343 }
Davidroid 4:83a1eb397a65 344
Davidroid 4:83a1eb397a65 345 virtual void AttachFlagInterrupt(void (*callback)(void))
Davidroid 4:83a1eb397a65 346 {
Davidroid 4:83a1eb397a65 347 L6474_AttachFlagInterrupt((void (*)(void)) callback);
Davidroid 4:83a1eb397a65 348 }
Davidroid 4:83a1eb397a65 349
Davidroid 4:83a1eb397a65 350 virtual void FlagInterruptHandler(void)
Davidroid 4:83a1eb397a65 351 {
Davidroid 4:83a1eb397a65 352 L6474_FlagInterruptHandler();
Davidroid 4:83a1eb397a65 353 }
Davidroid 4:83a1eb397a65 354
Davidroid 0:2887415a46cd 355
Davidroid 0:2887415a46cd 356 /*** Public Interrupt Related Methods ***/
Davidroid 0:2887415a46cd 357
Davidroid 0:2887415a46cd 358 /* ACTION 6 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 359 * Implement here interrupt related methods, if any. *
Davidroid 0:2887415a46cd 360 * Note that interrupt handling is platform dependent, e.g.: *
Davidroid 0:2887415a46cd 361 * + mbed: *
Davidroid 0:2887415a46cd 362 * InterruptIn feature_int(pin); //Interrupt object. *
Davidroid 0:2887415a46cd 363 * feature_int.rise(callback); //Attach a callback. *
Davidroid 0:2887415a46cd 364 * feature_int.mode(PullNone); //Set interrupt mode. *
Davidroid 0:2887415a46cd 365 * feature_int.enable_irq(); //Enable interrupt. *
Davidroid 0:2887415a46cd 366 * feature_int.disable_irq(); //Disable interrupt. *
Davidroid 0:2887415a46cd 367 * + Arduino: *
Davidroid 0:2887415a46cd 368 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
Davidroid 0:2887415a46cd 369 * detachInterrupt(pin); //Detach a callback. *
Davidroid 0:2887415a46cd 370 * *
Davidroid 0:2887415a46cd 371 * Example (mbed): *
Davidroid 0:2887415a46cd 372 * void Attach_Feature_IRQ(void (*fptr) (void)) *
Davidroid 0:2887415a46cd 373 * { *
Davidroid 0:2887415a46cd 374 * feature_int.rise(fptr); *
Davidroid 0:2887415a46cd 375 * } *
Davidroid 0:2887415a46cd 376 * *
Davidroid 0:2887415a46cd 377 * void Enable_Feature_IRQ(void) *
Davidroid 0:2887415a46cd 378 * { *
Davidroid 0:2887415a46cd 379 * feature_int.enable_irq(); *
Davidroid 0:2887415a46cd 380 * } *
Davidroid 0:2887415a46cd 381 * *
Davidroid 0:2887415a46cd 382 * void Disable_Feature_IRQ(void) *
Davidroid 0:2887415a46cd 383 * { *
Davidroid 0:2887415a46cd 384 * feature_int.disable_irq(); *
Davidroid 0:2887415a46cd 385 * } *
Davidroid 0:2887415a46cd 386 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 387
Davidroid 0:2887415a46cd 388
Davidroid 0:2887415a46cd 389 protected:
Davidroid 0:2887415a46cd 390
Davidroid 0:2887415a46cd 391 /*** Protected Component Related Methods ***/
Davidroid 0:2887415a46cd 392
Davidroid 0:2887415a46cd 393 /* ACTION 7 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 394 * Declare here the component's specific methods. *
Davidroid 0:2887415a46cd 395 * They should be: *
Davidroid 0:2887415a46cd 396 * + Methods with the same name of the C component's virtual table's *
Davidroid 0:2887415a46cd 397 * functions (1); *
Davidroid 0:2887415a46cd 398 * + Methods with the same name of the C component's extended virtual *
Davidroid 0:2887415a46cd 399 * table's functions, if any (2); *
Davidroid 0:2887415a46cd 400 * + Helper methods, if any, like functions declared in the component's *
Davidroid 0:2887415a46cd 401 * source files but not pointed by the component's virtual table (3). *
Davidroid 0:2887415a46cd 402 * *
Davidroid 0:2887415a46cd 403 * Example: *
Davidroid 0:2887415a46cd 404 * DrvStatusTypeDef COMPONENT_GetValue(float* pfData); //(1) *
Davidroid 0:2887415a46cd 405 * DrvStatusTypeDef COMPONENT_EnableFeature(void); //(2) *
Davidroid 0:2887415a46cd 406 * DrvStatusTypeDef COMPONENT_ComputeAverage(void); //(3) *
Davidroid 0:2887415a46cd 407 *------------------------------------------------------------------------*/
Davidroid 1:b38ebb8ea286 408 void L6474_AttachErrorHandler(void (*callback)(uint16_t error)); //Attach a user callback to the error handler
Davidroid 1:b38ebb8ea286 409 void L6474_AttachFlagInterrupt(void (*callback)(void)); //Attach a user callback to the flag Interrupt
Davidroid 1:b38ebb8ea286 410 DrvStatusTypeDef L6474_Init(MOTOR_InitTypeDef *init); //Start the L6474 library
Davidroid 1:b38ebb8ea286 411 DrvStatusTypeDef L6474_ReadID(uint8_t *id); //Read Id to get driver instance
Davidroid 1:b38ebb8ea286 412 uint16_t L6474_GetAcceleration(void); //Return the acceleration in pps^2
Davidroid 1:b38ebb8ea286 413 uint16_t L6474_GetCurrentSpeed(void); //Return the current speed in pps
Davidroid 1:b38ebb8ea286 414 uint16_t L6474_GetDeceleration(void); //Return the deceleration in pps^2
Davidroid 1:b38ebb8ea286 415 motorState_t L6474_GetDeviceState(void); //Return the device state
Davidroid 1:b38ebb8ea286 416 uint8_t L6474_GetFwVersion(void); //Return the FW version
Davidroid 1:b38ebb8ea286 417 int32_t L6474_GetMark(void); //Return the mark position
Davidroid 1:b38ebb8ea286 418 uint16_t L6474_GetMaxSpeed(void); //Return the max speed in pps
Davidroid 1:b38ebb8ea286 419 uint16_t L6474_GetMinSpeed(void); //Return the min speed in pps
Davidroid 1:b38ebb8ea286 420 int32_t L6474_GetPosition(void); //Return the ABS_POSITION (32b signed)
Davidroid 1:b38ebb8ea286 421 void L6474_GoHome(void); //Move to the home position
Davidroid 1:b38ebb8ea286 422 void L6474_GoMark(void); //Move to the Mark position
Davidroid 1:b38ebb8ea286 423 void L6474_GoTo(int32_t targetPosition); //Go to the specified position
Davidroid 1:b38ebb8ea286 424 void L6474_HardStop(void); //Stop the motor and disable the power bridge
Davidroid 5:d3c78f12a78d 425 void L6474_Move(motorDir_t direction, uint32_t stepCount); //Move the motor of the specified number of steps
Davidroid 5:d3c78f12a78d 426 void L6474_Run(motorDir_t direction); //Run the motor
Davidroid 1:b38ebb8ea286 427 bool L6474_SetAcceleration(uint16_t newAcc); //Set the acceleration in pps^2
Davidroid 1:b38ebb8ea286 428 bool L6474_SetDeceleration(uint16_t newDec); //Set the deceleration in pps^2
Davidroid 1:b38ebb8ea286 429 void L6474_SetHome(void); //Set current position to be the home position
Davidroid 1:b38ebb8ea286 430 void L6474_SetMark(void); //Set current position to be the Markposition
Davidroid 1:b38ebb8ea286 431 bool L6474_SetMaxSpeed(uint16_t newMaxSpeed); //Set the max speed in pps
Davidroid 1:b38ebb8ea286 432 bool L6474_SetMinSpeed(uint16_t newMinSpeed); //Set the min speed in pps
Davidroid 1:b38ebb8ea286 433 bool L6474_SoftStop(void); //Progressively stops the motor
Davidroid 1:b38ebb8ea286 434 void L6474_WaitWhileActive(void); //Wait for the device state becomes Inactive
Davidroid 1:b38ebb8ea286 435 void L6474_CmdDisable(void); //Send the L6474_DISABLE command
Davidroid 1:b38ebb8ea286 436 void L6474_CmdEnable(void); //Send the L6474_ENABLE command
Davidroid 1:b38ebb8ea286 437 uint32_t L6474_CmdGetParam(uint32_t param); //Send the L6474_GET_PARAM command
Davidroid 1:b38ebb8ea286 438 uint16_t L6474_CmdGetStatus(void); //Send the L6474_GET_STATUS command
Davidroid 1:b38ebb8ea286 439 void L6474_CmdNop(void); //Send the L6474_NOP command
Davidroid 1:b38ebb8ea286 440 void L6474_CmdSetParam(uint32_t param, uint32_t value); //Send the L6474_SET_PARAM command
Davidroid 1:b38ebb8ea286 441 uint16_t L6474_ReadStatusRegister(void); //Read the L6474_STATUS register without clearing the flags
Davidroid 1:b38ebb8ea286 442 void L6474_SelectStepMode(motorStepMode_t stepMod); //Step mode selection
Davidroid 5:d3c78f12a78d 443 motorDir_t L6474_GetDirection(void); //Get the direction of rotation
Davidroid 5:d3c78f12a78d 444 void L6474_SetDirection(motorDir_t direction); //Set the direction of rotation
Davidroid 0:2887415a46cd 445 void L6474_ApplySpeed(uint16_t newSpeed);
Davidroid 0:2887415a46cd 446 void L6474_ComputeSpeedProfile(uint32_t nbSteps);
Davidroid 0:2887415a46cd 447 int32_t L6474_ConvertPosition(uint32_t abs_position_reg);
Davidroid 0:2887415a46cd 448 void L6474_ErrorHandler(uint16_t error);
Davidroid 0:2887415a46cd 449 void L6474_FlagInterruptHandler(void);
Davidroid 0:2887415a46cd 450 void L6474_SendCommand(uint8_t param);
Davidroid 0:2887415a46cd 451 void L6474_SetRegisterToPredefinedValues(void);
Davidroid 0:2887415a46cd 452 void L6474_WriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte);
Davidroid 0:2887415a46cd 453 void L6474_SetDeviceParamsToPredefinedValues(void);
Davidroid 0:2887415a46cd 454 void L6474_StartMovement(void);
Davidroid 0:2887415a46cd 455 void L6474_StepClockHandler(void);
Davidroid 0:2887415a46cd 456 uint8_t L6474_Tval_Current_to_Par(double Tval);
Davidroid 0:2887415a46cd 457 uint8_t L6474_Tmin_Time_to_Par(double Tmin);
Davidroid 0:2887415a46cd 458
Davidroid 0:2887415a46cd 459
Davidroid 0:2887415a46cd 460 /*** Component's I/O Methods ***/
Davidroid 0:2887415a46cd 461
Davidroid 0:2887415a46cd 462 /**
Davidroid 0:2887415a46cd 463 * @brief Utility function to read data from L6474.
Davidroid 0:2887415a46cd 464 * @param[out] pBuffer pointer to the buffer to read data into.
Davidroid 0:2887415a46cd 465 * @param[in] NumBytesToRead number of bytes to read.
Davidroid 0:2887415a46cd 466 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 467 */
Davidroid 0:2887415a46cd 468 DrvStatusTypeDef Read(uint8_t* pBuffer, uint16_t NumBytesToRead)
Davidroid 0:2887415a46cd 469 {
Davidroid 0:2887415a46cd 470 if (dev_spi.spi_read(pBuffer, ssel, NumBytesToRead) != 0)
Davidroid 0:2887415a46cd 471 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 472 return COMPONENT_OK;
Davidroid 0:2887415a46cd 473 }
Davidroid 0:2887415a46cd 474
Davidroid 0:2887415a46cd 475 /**
Davidroid 0:2887415a46cd 476 * @brief Utility function to write data to L6474.
Davidroid 0:2887415a46cd 477 * @param[in] pBuffer pointer to the buffer of data to send.
Davidroid 0:2887415a46cd 478 * @param[in] NumBytesToWrite number of bytes to write.
Davidroid 0:2887415a46cd 479 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 480 */
Davidroid 0:2887415a46cd 481 DrvStatusTypeDef Write(uint8_t* pBuffer, uint16_t NumBytesToWrite)
Davidroid 0:2887415a46cd 482 {
Davidroid 0:2887415a46cd 483 if (dev_spi.spi_write(pBuffer, ssel, NumBytesToWrite) != 0)
Davidroid 0:2887415a46cd 484 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 485 return COMPONENT_OK;
Davidroid 0:2887415a46cd 486 }
Davidroid 0:2887415a46cd 487
Davidroid 0:2887415a46cd 488 /**
Davidroid 0:2887415a46cd 489 * @brief Utility function to read and write data from/to L6474 at the same time.
Davidroid 0:2887415a46cd 490 * @param[out] pBufferToRead pointer to the buffer to read data into.
Davidroid 0:2887415a46cd 491 * @param[in] pBufferToWrite pointer to the buffer of data to send.
Davidroid 0:2887415a46cd 492 * @param[in] NumBytes number of bytes to read and write.
Davidroid 0:2887415a46cd 493 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 494 */
Davidroid 0:2887415a46cd 495 DrvStatusTypeDef ReadWrite(uint8_t* pBufferToRead, uint8_t* pBufferToWrite, uint16_t NumBytes)
Davidroid 0:2887415a46cd 496 {
Davidroid 0:2887415a46cd 497 if (dev_spi.spi_read_write(pBufferToRead, pBufferToWrite, ssel, NumBytes) != 0)
Davidroid 0:2887415a46cd 498 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 499 return COMPONENT_OK;
Davidroid 0:2887415a46cd 500 }
Davidroid 0:2887415a46cd 501
Davidroid 0:2887415a46cd 502 /* ACTION 8 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 503 * Implement here other I/O methods beyond those already implemented *
Davidroid 0:2887415a46cd 504 * above, which are declared extern within the component's header file. *
Davidroid 0:2887415a46cd 505 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 506 /*
Davidroid 0:2887415a46cd 507 * System call to make the CPU wait.
Davidroid 0:2887415a46cd 508 */
Davidroid 0:2887415a46cd 509 void L6474_Delay(uint32_t delay)
Davidroid 0:2887415a46cd 510 {
Davidroid 5:d3c78f12a78d 511 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 512 wait_ms(delay);
Davidroid 0:2887415a46cd 513 }
Davidroid 0:2887415a46cd 514
Davidroid 0:2887415a46cd 515 /*
Davidroid 0:2887415a46cd 516 * System call to enable interrupts.
Davidroid 0:2887415a46cd 517 */
Davidroid 0:2887415a46cd 518 void L6474_EnableIrq(void)
Davidroid 0:2887415a46cd 519 {
Davidroid 5:d3c78f12a78d 520 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 521 __enable_irq();
Davidroid 0:2887415a46cd 522 }
Davidroid 0:2887415a46cd 523
Davidroid 0:2887415a46cd 524 /*
Davidroid 0:2887415a46cd 525 * System call to disable interrupts.
Davidroid 0:2887415a46cd 526 */
Davidroid 0:2887415a46cd 527 void L6474_DisableIrq(void)
Davidroid 0:2887415a46cd 528 {
Davidroid 5:d3c78f12a78d 529 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 530 __disable_irq();
Davidroid 0:2887415a46cd 531 }
Davidroid 0:2887415a46cd 532
Davidroid 0:2887415a46cd 533 /*
Davidroid 0:2887415a46cd 534 * Sets the frequency of PWM.
Davidroid 0:2887415a46cd 535 * The frequency is directly the current speed of the device.
Davidroid 0:2887415a46cd 536 */
Davidroid 0:2887415a46cd 537 void L6474_PwmSetFreq(uint16_t newFreq)
Davidroid 0:2887415a46cd 538 {
Davidroid 5:d3c78f12a78d 539 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 540 double period = 1.0f / newFreq;
Davidroid 0:2887415a46cd 541 pwm.period(period);
Davidroid 0:2887415a46cd 542 pwm.write(0.5f);
Davidroid 1:b38ebb8ea286 543 ticker.attach(this, &L6474::L6474_StepClockHandler, period);
Davidroid 0:2887415a46cd 544 }
Davidroid 0:2887415a46cd 545
Davidroid 0:2887415a46cd 546 /*
Davidroid 0:2887415a46cd 547 * Initialises the PWM uses by the specified device.
Davidroid 0:2887415a46cd 548 * + Device 0 uses PWM1 based on timer 1;
Davidroid 0:2887415a46cd 549 * + Device 1 uses PWM2 based on timer 2;
Davidroid 0:2887415a46cd 550 * + Device 2 uses PWM3 based on timer 3.
Davidroid 0:2887415a46cd 551 */
Davidroid 0:2887415a46cd 552 void L6474_PwmInit(void)
Davidroid 0:2887415a46cd 553 {
Davidroid 5:d3c78f12a78d 554 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 555 }
Davidroid 0:2887415a46cd 556
Davidroid 0:2887415a46cd 557 /*
Davidroid 0:2887415a46cd 558 * Stops the PWM.
Davidroid 0:2887415a46cd 559 */
Davidroid 0:2887415a46cd 560 void L6474_PwmStop(void)
Davidroid 0:2887415a46cd 561 {
Davidroid 5:d3c78f12a78d 562 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs.*/
Davidroid 0:2887415a46cd 563 pwm.write(0.0f);
Davidroid 0:2887415a46cd 564 ticker.detach();
Davidroid 0:2887415a46cd 565 }
Davidroid 0:2887415a46cd 566
Davidroid 0:2887415a46cd 567 /*
Davidroid 4:83a1eb397a65 568 * Puts the device in standby mode.
Davidroid 0:2887415a46cd 569 */
Davidroid 0:2887415a46cd 570 void L6474_ReleaseReset(void)
Davidroid 0:2887415a46cd 571 {
Davidroid 4:83a1eb397a65 572 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs. */
Davidroid 4:83a1eb397a65 573 standby_reset = 1;
Davidroid 0:2887415a46cd 574 }
Davidroid 0:2887415a46cd 575
Davidroid 0:2887415a46cd 576 /*
Davidroid 4:83a1eb397a65 577 * Puts the device in reset mode.
Davidroid 0:2887415a46cd 578 */
Davidroid 0:2887415a46cd 579 void L6474_Reset(void)
Davidroid 0:2887415a46cd 580 {
Davidroid 4:83a1eb397a65 581 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs. */
Davidroid 4:83a1eb397a65 582 standby_reset = 0;
Davidroid 0:2887415a46cd 583 }
Davidroid 0:2887415a46cd 584
Davidroid 0:2887415a46cd 585 /*
Davidroid 0:2887415a46cd 586 * Set the direction of rotation.
Davidroid 0:2887415a46cd 587 */
Davidroid 0:2887415a46cd 588 void L6474_SetDirectionGpio(uint8_t gpioState)
Davidroid 0:2887415a46cd 589 {
Davidroid 0:2887415a46cd 590 direction = gpioState;
Davidroid 0:2887415a46cd 591 }
Davidroid 0:2887415a46cd 592
Davidroid 0:2887415a46cd 593 /*
Davidroid 0:2887415a46cd 594 * Write and read bytes to/from the component through the SPI at the same time.
Davidroid 0:2887415a46cd 595 */
Davidroid 0:2887415a46cd 596 uint8_t L6474_SpiWriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte)
Davidroid 0:2887415a46cd 597 {
Davidroid 0:2887415a46cd 598 return (uint8_t) ReadWrite(pReceivedByte, pByteToTransmit, numberOfDevices);
Davidroid 0:2887415a46cd 599 }
Davidroid 0:2887415a46cd 600
Davidroid 0:2887415a46cd 601
Davidroid 0:2887415a46cd 602 /*** Component's Instance Variables ***/
Davidroid 0:2887415a46cd 603
Davidroid 0:2887415a46cd 604 /* Identity */
Davidroid 0:2887415a46cd 605 uint8_t who_am_i;
Davidroid 0:2887415a46cd 606
Davidroid 0:2887415a46cd 607 /* ACTION 9 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 608 * There should be only a unique identifier for each component, which *
Davidroid 0:2887415a46cd 609 * should be the "who_am_i" parameter, hence this parameter is optional. *
Davidroid 0:2887415a46cd 610 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 611 /* Type. */
Davidroid 0:2887415a46cd 612 uint8_t type;
Davidroid 0:2887415a46cd 613
Davidroid 4:83a1eb397a65 614 /* Standby/reset pin. */
Davidroid 4:83a1eb397a65 615 DigitalOut standby_reset;
Davidroid 0:2887415a46cd 616
Davidroid 0:2887415a46cd 617 /* Direction of rotation pin. */
Davidroid 0:2887415a46cd 618 DigitalOut direction;
Davidroid 0:2887415a46cd 619
Davidroid 0:2887415a46cd 620 /* Pulse Width Modulation pin. */
Davidroid 0:2887415a46cd 621 PwmOut pwm;
Davidroid 0:2887415a46cd 622
Davidroid 4:83a1eb397a65 623 /* Configuration. */
Davidroid 4:83a1eb397a65 624 DigitalOut ssel;
Davidroid 0:2887415a46cd 625
Davidroid 0:2887415a46cd 626 /* IO Device. */
Davidroid 0:2887415a46cd 627 DevSPI &dev_spi;
Davidroid 0:2887415a46cd 628
Davidroid 4:83a1eb397a65 629 /* Timer to trigger the PWM callback at each PWM pulse. */
Davidroid 4:83a1eb397a65 630 Ticker ticker;
Davidroid 4:83a1eb397a65 631
Davidroid 0:2887415a46cd 632 /* Interrupts. */
Davidroid 0:2887415a46cd 633 /* ACTION 10 -------------------------------------------------------------*
Davidroid 0:2887415a46cd 634 * Put here interrupt related objects, if needed. *
Davidroid 0:2887415a46cd 635 * Note that interrupt handling is platform dependent, see *
Davidroid 0:2887415a46cd 636 * "Interrupt Related Methods" above. *
Davidroid 0:2887415a46cd 637 * *
Davidroid 0:2887415a46cd 638 * Example: *
Davidroid 0:2887415a46cd 639 * + mbed: *
Davidroid 0:2887415a46cd 640 * InterruptIn feature_int; *
Davidroid 0:2887415a46cd 641 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 642
Davidroid 0:2887415a46cd 643 /* Data. */
Davidroid 0:2887415a46cd 644 /* ACTION 11 -------------------------------------------------------------*
Davidroid 0:2887415a46cd 645 * Declare here the component's data, one variable per line. *
Davidroid 0:2887415a46cd 646 * *
Davidroid 0:2887415a46cd 647 * Example: *
Davidroid 0:2887415a46cd 648 * int T0_out; *
Davidroid 0:2887415a46cd 649 * int T1_out; *
Davidroid 0:2887415a46cd 650 * float T0_degC; *
Davidroid 0:2887415a46cd 651 * float T1_degC; *
Davidroid 0:2887415a46cd 652 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 653 void (*flagInterruptCallback)(void);
Davidroid 0:2887415a46cd 654 void (*errorHandlerCallback)(uint16_t error);
Davidroid 0:2887415a46cd 655 deviceParams_t devicePrm;
Davidroid 5:d3c78f12a78d 656 uint8_t deviceInstance;
Davidroid 0:2887415a46cd 657 static uint8_t numberOfDevices;
Davidroid 6:a47569fc7534 658 static bool spiPreemtionByIsr;
Davidroid 6:a47569fc7534 659 static bool isrFlag;
Davidroid 5:d3c78f12a78d 660 static uint8_t spiTxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
Davidroid 5:d3c78f12a78d 661 static uint8_t spiRxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
Davidroid 0:2887415a46cd 662 };
Davidroid 0:2887415a46cd 663
Davidroid 0:2887415a46cd 664 #endif // __L6474_CLASS_H
Davidroid 0:2887415a46cd 665
Davidroid 0:2887415a46cd 666 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/