Quirin Bufler / X_NUCLEO_IHM04A1

Dependencies:   ST_INTERFACES

Committer:
davide.aliprandi@st.com
Date:
Fri Mar 24 10:59:06 2017 +0100
Revision:
4:24158c44f02e
Parent:
1:2597a6165252
Aligning to ARM mbed coding style.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brdirais 0:2cb6ce8e07bd 1 /**
brdirais 0:2cb6ce8e07bd 2 ******************************************************************************
davide.aliprandi@st.com 4:24158c44f02e 3 * @file L6206.h
brdirais 0:2cb6ce8e07bd 4 * @author IPC Rennes
davide.aliprandi@st.com 4:24158c44f02e 5 * @version V1.1.0
davide.aliprandi@st.com 4:24158c44f02e 6 * @date March 02, 2016
davide.aliprandi@st.com 4:24158c44f02e 7 * @brief L6206 driver (dual full bridge driver)
davide.aliprandi@st.com 4:24158c44f02e 8 * @note (C) COPYRIGHT 2015 STMicroelectronics
brdirais 0:2cb6ce8e07bd 9 ******************************************************************************
brdirais 0:2cb6ce8e07bd 10 * @attention
brdirais 0:2cb6ce8e07bd 11 *
davide.aliprandi@st.com 4:24158c44f02e 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
brdirais 0:2cb6ce8e07bd 13 *
brdirais 0:2cb6ce8e07bd 14 * Redistribution and use in source and binary forms, with or without modification,
brdirais 0:2cb6ce8e07bd 15 * are permitted provided that the following conditions are met:
brdirais 0:2cb6ce8e07bd 16 * 1. Redistributions of source code must retain the above copyright notice,
brdirais 0:2cb6ce8e07bd 17 * this list of conditions and the following disclaimer.
brdirais 0:2cb6ce8e07bd 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
brdirais 0:2cb6ce8e07bd 19 * this list of conditions and the following disclaimer in the documentation
brdirais 0:2cb6ce8e07bd 20 * and/or other materials provided with the distribution.
brdirais 0:2cb6ce8e07bd 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
brdirais 0:2cb6ce8e07bd 22 * may be used to endorse or promote products derived from this software
brdirais 0:2cb6ce8e07bd 23 * without specific prior written permission.
brdirais 0:2cb6ce8e07bd 24 *
brdirais 0:2cb6ce8e07bd 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
brdirais 0:2cb6ce8e07bd 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
brdirais 0:2cb6ce8e07bd 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
brdirais 0:2cb6ce8e07bd 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
brdirais 0:2cb6ce8e07bd 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
brdirais 0:2cb6ce8e07bd 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
brdirais 0:2cb6ce8e07bd 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
brdirais 0:2cb6ce8e07bd 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
brdirais 0:2cb6ce8e07bd 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
brdirais 0:2cb6ce8e07bd 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
brdirais 0:2cb6ce8e07bd 35 *
brdirais 0:2cb6ce8e07bd 36 ******************************************************************************
brdirais 0:2cb6ce8e07bd 37 */
brdirais 0:2cb6ce8e07bd 38
davide.aliprandi@st.com 4:24158c44f02e 39
davide.aliprandi@st.com 4:24158c44f02e 40 /* Generated with STM32CubeTOO -----------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 41
brdirais 0:2cb6ce8e07bd 42
davide.aliprandi@st.com 4:24158c44f02e 43 /* Revision ------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 44 /*
davide.aliprandi@st.com 4:24158c44f02e 45 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
davide.aliprandi@st.com 4:24158c44f02e 46 Branch/Trunk/Tag: trunk
davide.aliprandi@st.com 4:24158c44f02e 47 Based on: X-CUBE-SPN4/trunk/Drivers/BSP/Components/L6206/L6206.h
davide.aliprandi@st.com 4:24158c44f02e 48 Revision: 0
davide.aliprandi@st.com 4:24158c44f02e 49 */
davide.aliprandi@st.com 4:24158c44f02e 50
davide.aliprandi@st.com 4:24158c44f02e 51
davide.aliprandi@st.com 4:24158c44f02e 52 /* Define to prevent recursive inclusion -------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 53
davide.aliprandi@st.com 4:24158c44f02e 54 #ifndef __L6206_CLASS_H
davide.aliprandi@st.com 4:24158c44f02e 55 #define __L6206_CLASS_H
davide.aliprandi@st.com 4:24158c44f02e 56
brdirais 0:2cb6ce8e07bd 57
brdirais 0:2cb6ce8e07bd 58 /* Includes ------------------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 59
davide.aliprandi@st.com 4:24158c44f02e 60 /* ACTION 1 ------------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 61 * Include here platform specific header files. *
davide.aliprandi@st.com 4:24158c44f02e 62 *----------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 63 #include "mbed.h"
davide.aliprandi@st.com 4:24158c44f02e 64 /* ACTION 2 ------------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 65 * Include here component specific header files. *
davide.aliprandi@st.com 4:24158c44f02e 66 *----------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 67 #include "L6206.h"
davide.aliprandi@st.com 4:24158c44f02e 68 /* ACTION 3 ------------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 69 * Include here interface specific header files. *
davide.aliprandi@st.com 4:24158c44f02e 70 * *
davide.aliprandi@st.com 4:24158c44f02e 71 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 72 * #include "HumiditySensor.h" *
davide.aliprandi@st.com 4:24158c44f02e 73 * #include "TemperatureSensor.h" *
davide.aliprandi@st.com 4:24158c44f02e 74 *----------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 75 #include "BDCMotor.h"
brdirais 0:2cb6ce8e07bd 76
brdirais 0:2cb6ce8e07bd 77
brdirais 0:2cb6ce8e07bd 78
davide.aliprandi@st.com 4:24158c44f02e 79 /* Private constants ---------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 80
davide.aliprandi@st.com 4:24158c44f02e 81 /** @defgroup L6206_Private_Constants L6206 Private Constants
brdirais 0:2cb6ce8e07bd 82 * @{
brdirais 0:2cb6ce8e07bd 83 */
brdirais 0:2cb6ce8e07bd 84
davide.aliprandi@st.com 4:24158c44f02e 85 /// The Number of L6206 devices required for initialisation is not supported
davide.aliprandi@st.com 4:24158c44f02e 86 #define L6206_ERROR_0 (0x8000)
davide.aliprandi@st.com 4:24158c44f02e 87 /// Error: Access a motor index greater than the one of the current brigde configuration
davide.aliprandi@st.com 4:24158c44f02e 88 #define L6206_ERROR_1 (0x8001)
davide.aliprandi@st.com 4:24158c44f02e 89 /// Error: Access a motor index which is not bidirectionnal
davide.aliprandi@st.com 4:24158c44f02e 90 #define L6206_ERROR_2 (0x8002)
brdirais 0:2cb6ce8e07bd 91
davide.aliprandi@st.com 4:24158c44f02e 92 /// Maximum frequency of the PWMs in Hz
davide.aliprandi@st.com 4:24158c44f02e 93 #define L6206_MAX_PWM_FREQ (100000)
davide.aliprandi@st.com 4:24158c44f02e 94
davide.aliprandi@st.com 4:24158c44f02e 95 /// Minimum frequency of the PWMs in Hz
davide.aliprandi@st.com 4:24158c44f02e 96 #define L6206_MIN_PWM_FREQ (2)
brdirais 0:2cb6ce8e07bd 97
davide.aliprandi@st.com 4:24158c44f02e 98 /// Bridge Input 1A
davide.aliprandi@st.com 4:24158c44f02e 99 #define INPUT_1A (0)
davide.aliprandi@st.com 4:24158c44f02e 100 /// Bridge Input 2A
davide.aliprandi@st.com 4:24158c44f02e 101 #define INPUT_2A (1)
davide.aliprandi@st.com 4:24158c44f02e 102 /// Bridge Input 1B
davide.aliprandi@st.com 4:24158c44f02e 103 #define INPUT_1B (2)
davide.aliprandi@st.com 4:24158c44f02e 104 /// Bridge Input 2B
davide.aliprandi@st.com 4:24158c44f02e 105 #define INPUT_2B (3)
brdirais 0:2cb6ce8e07bd 106
davide.aliprandi@st.com 4:24158c44f02e 107 /// Bridge A
davide.aliprandi@st.com 4:24158c44f02e 108 #define BRIDGE_A (0)
davide.aliprandi@st.com 4:24158c44f02e 109 /// Bridge B
davide.aliprandi@st.com 4:24158c44f02e 110 #define BRIDGE_B (1)
brdirais 0:2cb6ce8e07bd 111
brdirais 0:2cb6ce8e07bd 112
brdirais 0:2cb6ce8e07bd 113
brdirais 0:2cb6ce8e07bd 114
brdirais 0:2cb6ce8e07bd 115
davide.aliprandi@st.com 4:24158c44f02e 116 /* Classes -------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 117
davide.aliprandi@st.com 4:24158c44f02e 118 /**
davide.aliprandi@st.com 4:24158c44f02e 119 * @brief Class representing a L6206 component.
davide.aliprandi@st.com 4:24158c44f02e 120 */
davide.aliprandi@st.com 4:24158c44f02e 121 class L6206 : public BDCMotor
davide.aliprandi@st.com 4:24158c44f02e 122 {
davide.aliprandi@st.com 4:24158c44f02e 123 public:
davide.aliprandi@st.com 4:24158c44f02e 124
davide.aliprandi@st.com 4:24158c44f02e 125 /*** Constructor and Destructor Methods ***/
davide.aliprandi@st.com 4:24158c44f02e 126
davide.aliprandi@st.com 4:24158c44f02e 127 /**
davide.aliprandi@st.com 4:24158c44f02e 128 * @brief Constructor.
davide.aliprandi@st.com 4:24158c44f02e 129 */
davide.aliprandi@st.com 4:24158c44f02e 130 L6206(PinName EN_flag_A, PinName EN_flag_B, PinName pwm_1A, PinName pwm_2A, PinName pwm_1B, PinName pwm_2B) : BDCMotor(), flag_A_irq(EN_flag_A), flag_B_irq(EN_flag_B), EN_flag_A(EN_flag_A), EN_flag_B(EN_flag_B), pwm_1A(pwm_1A), pwm_2A(pwm_2A), pwm_1B(pwm_1B), pwm_2B(pwm_2B)
davide.aliprandi@st.com 4:24158c44f02e 131 {
davide.aliprandi@st.com 4:24158c44f02e 132 /* ACTION 4 ----------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 133 * Initialize here the component's member variables, one variable per *
davide.aliprandi@st.com 4:24158c44f02e 134 * line. *
davide.aliprandi@st.com 4:24158c44f02e 135 * *
davide.aliprandi@st.com 4:24158c44f02e 136 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 137 * measure = 0; *
davide.aliprandi@st.com 4:24158c44f02e 138 * instance_id = number_of_instances++; *
davide.aliprandi@st.com 4:24158c44f02e 139 *--------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 140
davide.aliprandi@st.com 4:24158c44f02e 141 flagInterruptCallback = 0;
davide.aliprandi@st.com 4:24158c44f02e 142 errorHandlerCallback = 0;
davide.aliprandi@st.com 4:24158c44f02e 143 numberOfDevices = 0;
davide.aliprandi@st.com 4:24158c44f02e 144 deviceInstance = 0;
davide.aliprandi@st.com 4:24158c44f02e 145 }
davide.aliprandi@st.com 4:24158c44f02e 146
davide.aliprandi@st.com 4:24158c44f02e 147 /**
davide.aliprandi@st.com 4:24158c44f02e 148 * @brief Destructor.
davide.aliprandi@st.com 4:24158c44f02e 149 */
davide.aliprandi@st.com 4:24158c44f02e 150 virtual ~L6206(void) {}
davide.aliprandi@st.com 4:24158c44f02e 151
davide.aliprandi@st.com 4:24158c44f02e 152
davide.aliprandi@st.com 4:24158c44f02e 153 /*** Public Component Related Methods ***/
brdirais 0:2cb6ce8e07bd 154
davide.aliprandi@st.com 4:24158c44f02e 155 /* ACTION 5 --------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 156 * Implement here the component's public methods, as wrappers of the C *
davide.aliprandi@st.com 4:24158c44f02e 157 * component's functions. *
davide.aliprandi@st.com 4:24158c44f02e 158 * They should be: *
davide.aliprandi@st.com 4:24158c44f02e 159 * + Methods with the same name of the C component's virtual table's *
davide.aliprandi@st.com 4:24158c44f02e 160 * functions (1); *
davide.aliprandi@st.com 4:24158c44f02e 161 * + Methods with the same name of the C component's extended virtual *
davide.aliprandi@st.com 4:24158c44f02e 162 * table's functions, if any (2). *
davide.aliprandi@st.com 4:24158c44f02e 163 * *
davide.aliprandi@st.com 4:24158c44f02e 164 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 165 * virtual int GetValue(float *f) //(1) *
davide.aliprandi@st.com 4:24158c44f02e 166 * { *
davide.aliprandi@st.com 4:24158c44f02e 167 * return COMPONENT_GetValue(float *f); *
davide.aliprandi@st.com 4:24158c44f02e 168 * } *
davide.aliprandi@st.com 4:24158c44f02e 169 * *
davide.aliprandi@st.com 4:24158c44f02e 170 * virtual int EnableFeature(void) //(2) *
davide.aliprandi@st.com 4:24158c44f02e 171 * { *
davide.aliprandi@st.com 4:24158c44f02e 172 * return COMPONENT_EnableFeature(); *
davide.aliprandi@st.com 4:24158c44f02e 173 * } *
davide.aliprandi@st.com 4:24158c44f02e 174 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 175
davide.aliprandi@st.com 4:24158c44f02e 176 /**
davide.aliprandi@st.com 4:24158c44f02e 177 * @brief Initializing the component.
davide.aliprandi@st.com 4:24158c44f02e 178 * @param init Pointer to device specific initalization structure.
davide.aliprandi@st.com 4:24158c44f02e 179 * @retval "0" in case of success, an error code otherwise.
davide.aliprandi@st.com 4:24158c44f02e 180 */
davide.aliprandi@st.com 4:24158c44f02e 181 virtual int init(void *init = NULL)
davide.aliprandi@st.com 4:24158c44f02e 182 {
davide.aliprandi@st.com 4:24158c44f02e 183 return (int) L6206_Init((void *) init);
davide.aliprandi@st.com 4:24158c44f02e 184 }
davide.aliprandi@st.com 4:24158c44f02e 185
davide.aliprandi@st.com 4:24158c44f02e 186 /**
davide.aliprandi@st.com 4:24158c44f02e 187 * @brief Getting the ID of the component.
davide.aliprandi@st.com 4:24158c44f02e 188 * @param id Pointer to an allocated variable to store the ID into.
davide.aliprandi@st.com 4:24158c44f02e 189 * @retval "0" in case of success, an error code otherwise.
davide.aliprandi@st.com 4:24158c44f02e 190 */
davide.aliprandi@st.com 4:24158c44f02e 191 virtual int read_id(uint8_t *id = NULL)
davide.aliprandi@st.com 4:24158c44f02e 192 {
davide.aliprandi@st.com 4:24158c44f02e 193 return (int) L6206_ReadId((uint8_t *) id);
davide.aliprandi@st.com 4:24158c44f02e 194 }
brdirais 0:2cb6ce8e07bd 195
brdirais 0:2cb6ce8e07bd 196
davide.aliprandi@st.com 4:24158c44f02e 197 /**
davide.aliprandi@st.com 4:24158c44f02e 198 * @brief Attaches a user callback to the error Handler.
davide.aliprandi@st.com 4:24158c44f02e 199 * The call back will be then called each time the library detects an error
davide.aliprandi@st.com 4:24158c44f02e 200 * @param[in] callback Name of the callback to attach to the error Hanlder
davide.aliprandi@st.com 4:24158c44f02e 201 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 202 */
davide.aliprandi@st.com 4:24158c44f02e 203 virtual void attach_error_handler(void (*callback)(uint16_t error))
davide.aliprandi@st.com 4:24158c44f02e 204 {
davide.aliprandi@st.com 4:24158c44f02e 205 L6206_AttachErrorHandler((void (*)(uint16_t error)) callback);
davide.aliprandi@st.com 4:24158c44f02e 206 }
brdirais 0:2cb6ce8e07bd 207
brdirais 0:2cb6ce8e07bd 208
davide.aliprandi@st.com 4:24158c44f02e 209 /**
davide.aliprandi@st.com 4:24158c44f02e 210 * @brief Attaches a user callback to the flag Interrupt
davide.aliprandi@st.com 4:24158c44f02e 211 * The call back will be then called each time the status
davide.aliprandi@st.com 4:24158c44f02e 212 * flag pin will be pulled down due to the occurrence of
davide.aliprandi@st.com 4:24158c44f02e 213 * a programmed alarms ( OCD, thermal alert)
davide.aliprandi@st.com 4:24158c44f02e 214 * @param[in] callback Name of the callback to attach
davide.aliprandi@st.com 4:24158c44f02e 215 * to the Flag Interrupt
davide.aliprandi@st.com 4:24158c44f02e 216 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 217 */
davide.aliprandi@st.com 4:24158c44f02e 218 virtual void attach_flag_interrupt(void (*callback)(void))
davide.aliprandi@st.com 4:24158c44f02e 219 {
davide.aliprandi@st.com 4:24158c44f02e 220 L6206_attach_flag_interrupt((void (*)(void)) callback);
davide.aliprandi@st.com 4:24158c44f02e 221 }
davide.aliprandi@st.com 4:24158c44f02e 222
davide.aliprandi@st.com 4:24158c44f02e 223 /**
davide.aliprandi@st.com 4:24158c44f02e 224 * @brief Returns the current speed of the specified motor
davide.aliprandi@st.com 4:24158c44f02e 225 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 226 * @retval current speed in % from 0 to 100
davide.aliprandi@st.com 4:24158c44f02e 227 */
davide.aliprandi@st.com 4:24158c44f02e 228 virtual unsigned int get_speed(unsigned int motorId)
davide.aliprandi@st.com 4:24158c44f02e 229 {
davide.aliprandi@st.com 4:24158c44f02e 230 return (unsigned int) L6206_GetCurrentSpeed((uint8_t) motorId);
davide.aliprandi@st.com 4:24158c44f02e 231 }
davide.aliprandi@st.com 4:24158c44f02e 232
davide.aliprandi@st.com 4:24158c44f02e 233 /**
davide.aliprandi@st.com 4:24158c44f02e 234 * @brief Returns the device state
davide.aliprandi@st.com 4:24158c44f02e 235 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 236 * @retval State (STEADY or INACTIVE)
davide.aliprandi@st.com 4:24158c44f02e 237 */
davide.aliprandi@st.com 4:24158c44f02e 238 virtual motorState_t get_device_state(unsigned int motorId)
davide.aliprandi@st.com 4:24158c44f02e 239 {
davide.aliprandi@st.com 4:24158c44f02e 240 return (motorState_t) L6206_get_device_state((uint8_t) motorId);
davide.aliprandi@st.com 4:24158c44f02e 241 }
davide.aliprandi@st.com 4:24158c44f02e 242
davide.aliprandi@st.com 4:24158c44f02e 243 /**
davide.aliprandi@st.com 4:24158c44f02e 244 * @brief Returns the FW version of the library
davide.aliprandi@st.com 4:24158c44f02e 245 * @retval L6206_FW_VERSION
davide.aliprandi@st.com 4:24158c44f02e 246 */
davide.aliprandi@st.com 4:24158c44f02e 247 virtual uint8_t get_fw_version(void)
davide.aliprandi@st.com 4:24158c44f02e 248 {
davide.aliprandi@st.com 4:24158c44f02e 249 return (uint8_t) L6206_GetFwVersion();
davide.aliprandi@st.com 4:24158c44f02e 250 }
davide.aliprandi@st.com 4:24158c44f02e 251
davide.aliprandi@st.com 4:24158c44f02e 252 /**
davide.aliprandi@st.com 4:24158c44f02e 253 * @brief Returns the max speed of the specified motor
davide.aliprandi@st.com 4:24158c44f02e 254 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 255 * @retval maxSpeed in % from 0 to 100
davide.aliprandi@st.com 4:24158c44f02e 256 */
davide.aliprandi@st.com 4:24158c44f02e 257 virtual uint16_t get_max_speed(unsigned int motorId)
davide.aliprandi@st.com 4:24158c44f02e 258 {
davide.aliprandi@st.com 4:24158c44f02e 259 return (uint16_t) L6206_GetMaxSpeed((uint8_t) motorId);
davide.aliprandi@st.com 4:24158c44f02e 260 }
davide.aliprandi@st.com 4:24158c44f02e 261
davide.aliprandi@st.com 4:24158c44f02e 262 /**
davide.aliprandi@st.com 4:24158c44f02e 263 * @brief Stops the motor without disabling the bridge
davide.aliprandi@st.com 4:24158c44f02e 264 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 265 * @retval none
davide.aliprandi@st.com 4:24158c44f02e 266 */
davide.aliprandi@st.com 4:24158c44f02e 267 virtual void hard_stop(unsigned int motorId)
davide.aliprandi@st.com 4:24158c44f02e 268 {
davide.aliprandi@st.com 4:24158c44f02e 269 L6206_HardStop((uint8_t) motorId);
davide.aliprandi@st.com 4:24158c44f02e 270 }
davide.aliprandi@st.com 4:24158c44f02e 271
davide.aliprandi@st.com 4:24158c44f02e 272 /**
davide.aliprandi@st.com 4:24158c44f02e 273 * @brief Runs the motor
davide.aliprandi@st.com 4:24158c44f02e 274 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 275 * @param[in] direction FORWARD or BACKWARD
davide.aliprandi@st.com 4:24158c44f02e 276 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 277 * @note For unidirectionnal motor, direction parameter has no effect
davide.aliprandi@st.com 4:24158c44f02e 278 */
davide.aliprandi@st.com 4:24158c44f02e 279 virtual void run(unsigned int motorId, direction_t direction)
davide.aliprandi@st.com 4:24158c44f02e 280 {
davide.aliprandi@st.com 4:24158c44f02e 281 L6206_Run((uint8_t) motorId, (motorDir_t) direction);
davide.aliprandi@st.com 4:24158c44f02e 282 }
davide.aliprandi@st.com 4:24158c44f02e 283
davide.aliprandi@st.com 4:24158c44f02e 284 /**
davide.aliprandi@st.com 4:24158c44f02e 285 * @brief Changes the max speed of the specified device
davide.aliprandi@st.com 4:24158c44f02e 286 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 287 * @param[in] newMaxSpeed in % from 0 to 100
davide.aliprandi@st.com 4:24158c44f02e 288 * @retval true if the command is successfully executed, else false
davide.aliprandi@st.com 4:24158c44f02e 289 */
davide.aliprandi@st.com 4:24158c44f02e 290 virtual bool set_speed(unsigned int motorId, unsigned int newMaxSpeed)
davide.aliprandi@st.com 4:24158c44f02e 291 {
davide.aliprandi@st.com 4:24158c44f02e 292 return (bool) L6206_SetMaxSpeed((uint8_t) motorId, (uint16_t) newMaxSpeed);
davide.aliprandi@st.com 4:24158c44f02e 293 }
davide.aliprandi@st.com 4:24158c44f02e 294
davide.aliprandi@st.com 4:24158c44f02e 295 /**
davide.aliprandi@st.com 4:24158c44f02e 296 * @brief Disable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 297 * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
davide.aliprandi@st.com 4:24158c44f02e 298 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 299 * @note When input of different brigdes are parallelized
davide.aliprandi@st.com 4:24158c44f02e 300 * together, the disabling of one bridge leads to the disabling
davide.aliprandi@st.com 4:24158c44f02e 301 * of the second one
davide.aliprandi@st.com 4:24158c44f02e 302 */
davide.aliprandi@st.com 4:24158c44f02e 303 virtual void disable_bridge(unsigned int bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 304 {
davide.aliprandi@st.com 4:24158c44f02e 305 L6206_DisableBridge((uint8_t) bridgeId);
davide.aliprandi@st.com 4:24158c44f02e 306 }
davide.aliprandi@st.com 4:24158c44f02e 307
davide.aliprandi@st.com 4:24158c44f02e 308 /**
davide.aliprandi@st.com 4:24158c44f02e 309 * @brief Enable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 310 * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
davide.aliprandi@st.com 4:24158c44f02e 311 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 312 * @note When input of different brigdes are parallelized
davide.aliprandi@st.com 4:24158c44f02e 313 * together, the enabling of one bridge leads to the enabling
davide.aliprandi@st.com 4:24158c44f02e 314 * of the second one
davide.aliprandi@st.com 4:24158c44f02e 315 */
davide.aliprandi@st.com 4:24158c44f02e 316 virtual void enable_bridge(unsigned int bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 317 {
davide.aliprandi@st.com 4:24158c44f02e 318 L6206_EnableBridge((uint8_t) bridgeId);
davide.aliprandi@st.com 4:24158c44f02e 319 }
davide.aliprandi@st.com 4:24158c44f02e 320
davide.aliprandi@st.com 4:24158c44f02e 321 /**
davide.aliprandi@st.com 4:24158c44f02e 322 * @brief Get the status of the bridge enabling of the corresponding bridge
davide.aliprandi@st.com 4:24158c44f02e 323 * @param[in] bridgeId from 0 for bridge A to 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 324 * @retval State of the Enable&Flag pin of the corresponding bridge (1 set, 0 for reset)
davide.aliprandi@st.com 4:24158c44f02e 325 */
davide.aliprandi@st.com 4:24158c44f02e 326 virtual unsigned int get_bridge_status(unsigned int bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 327 {
davide.aliprandi@st.com 4:24158c44f02e 328 return (unsigned int) L6206_GetBridgeStatus((uint8_t) bridgeId);
davide.aliprandi@st.com 4:24158c44f02e 329 }
brdirais 0:2cb6ce8e07bd 330
davide.aliprandi@st.com 4:24158c44f02e 331 /**
davide.aliprandi@st.com 4:24158c44f02e 332 * @brief Immediatly stops the motor and disable the power bridge
davide.aliprandi@st.com 4:24158c44f02e 333 * @param[in] motorId from 0 to MAX_NUMBER_OF_BRUSH_DC_MOTORS
davide.aliprandi@st.com 4:24158c44f02e 334 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 335 * @note if two motors uses the same power bridge, the
davide.aliprandi@st.com 4:24158c44f02e 336 * power bridge will be disable only if the two motors are stopped
davide.aliprandi@st.com 4:24158c44f02e 337 */
davide.aliprandi@st.com 4:24158c44f02e 338 virtual void hard_hiz(unsigned int motorId)
davide.aliprandi@st.com 4:24158c44f02e 339 {
davide.aliprandi@st.com 4:24158c44f02e 340 L6206_HardHiz((uint8_t) motorId);
davide.aliprandi@st.com 4:24158c44f02e 341 }
davide.aliprandi@st.com 4:24158c44f02e 342
davide.aliprandi@st.com 4:24158c44f02e 343 /**
davide.aliprandi@st.com 4:24158c44f02e 344 * @brief Error handler which calls the user callback (if defined)
davide.aliprandi@st.com 4:24158c44f02e 345 * @param[in] error Number of the error
davide.aliprandi@st.com 4:24158c44f02e 346 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 347 */
davide.aliprandi@st.com 4:24158c44f02e 348 virtual void error_handler(uint16_t error)
davide.aliprandi@st.com 4:24158c44f02e 349 {
davide.aliprandi@st.com 4:24158c44f02e 350 L6206_ErrorHandler((uint16_t) error);
davide.aliprandi@st.com 4:24158c44f02e 351 }
davide.aliprandi@st.com 4:24158c44f02e 352
davide.aliprandi@st.com 4:24158c44f02e 353 /**
davide.aliprandi@st.com 4:24158c44f02e 354 * @brief Set dual full bridge parallelling configuration
davide.aliprandi@st.com 4:24158c44f02e 355 * @param[in] newConfig bridge configuration to apply from
davide.aliprandi@st.com 4:24158c44f02e 356 * dualFullBridgeConfig_t enum
davide.aliprandi@st.com 4:24158c44f02e 357 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 358 */
davide.aliprandi@st.com 4:24158c44f02e 359 virtual void set_dual_full_bridge_config(unsigned int newConfig)
davide.aliprandi@st.com 4:24158c44f02e 360 {
davide.aliprandi@st.com 4:24158c44f02e 361 L6206_SetDualFullBridgeConfig((uint8_t) newConfig);
davide.aliprandi@st.com 4:24158c44f02e 362 }
davide.aliprandi@st.com 4:24158c44f02e 363
davide.aliprandi@st.com 4:24158c44f02e 364 /**
davide.aliprandi@st.com 4:24158c44f02e 365 * @brief Get the PWM frequency of the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 366 * @param[in] bridgeId 0 for bridge A, 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 367 * @retval Freq in Hz
davide.aliprandi@st.com 4:24158c44f02e 368 */
davide.aliprandi@st.com 4:24158c44f02e 369 virtual unsigned int get_bridge_input_pwm_freq(unsigned int bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 370 {
davide.aliprandi@st.com 4:24158c44f02e 371 return (unsigned int) L6206_GetBridgeInputPwmFreq((uint8_t) bridgeId);
davide.aliprandi@st.com 4:24158c44f02e 372 }
davide.aliprandi@st.com 4:24158c44f02e 373
davide.aliprandi@st.com 4:24158c44f02e 374 /**
davide.aliprandi@st.com 4:24158c44f02e 375 * @brief Changes the PWM frequency of the bridge input
davide.aliprandi@st.com 4:24158c44f02e 376 * @param[in] bridgeId 0 for bridge A, 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 377 * @param[in] newFreq in Hz
davide.aliprandi@st.com 4:24158c44f02e 378 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 379 */
davide.aliprandi@st.com 4:24158c44f02e 380 virtual void set_bridge_input_pwm_freq(unsigned int bridgeId, unsigned int newFreq)
davide.aliprandi@st.com 4:24158c44f02e 381 {
davide.aliprandi@st.com 4:24158c44f02e 382 L6206_SetBridgeInputPwmFreq((uint8_t) bridgeId, (uint32_t) newFreq);
davide.aliprandi@st.com 4:24158c44f02e 383 }
davide.aliprandi@st.com 4:24158c44f02e 384
davide.aliprandi@st.com 4:24158c44f02e 385 /**
davide.aliprandi@st.com 4:24158c44f02e 386 * @brief Sets the number of devices to be used
davide.aliprandi@st.com 4:24158c44f02e 387 * @param[in] nbDevices (from 1 to MAX_NUMBER_OF_DEVICES)
davide.aliprandi@st.com 4:24158c44f02e 388 * @retval TRUE if successfull, FALSE if failure, attempt to set a number of
davide.aliprandi@st.com 4:24158c44f02e 389 * devices greater than MAX_NUMBER_OF_DEVICES
davide.aliprandi@st.com 4:24158c44f02e 390 */
davide.aliprandi@st.com 4:24158c44f02e 391 virtual bool set_nb_devices(uint8_t nbDevices)
davide.aliprandi@st.com 4:24158c44f02e 392 {
davide.aliprandi@st.com 4:24158c44f02e 393 return (bool) L6206_SetNbDevices((uint8_t) nbDevices);
davide.aliprandi@st.com 4:24158c44f02e 394 }
davide.aliprandi@st.com 4:24158c44f02e 395
brdirais 0:2cb6ce8e07bd 396
davide.aliprandi@st.com 4:24158c44f02e 397 /*** Public Interrupt Related Methods ***/
brdirais 0:2cb6ce8e07bd 398
davide.aliprandi@st.com 4:24158c44f02e 399 /* ACTION 6 --------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 400 * Implement here interrupt related methods, if any. *
davide.aliprandi@st.com 4:24158c44f02e 401 * Note that interrupt handling is platform dependent, e.g.: *
davide.aliprandi@st.com 4:24158c44f02e 402 * + mbed: *
davide.aliprandi@st.com 4:24158c44f02e 403 * InterruptIn feature_irq(pin); //Interrupt object. *
davide.aliprandi@st.com 4:24158c44f02e 404 * feature_irq.fall(callback); //Attach a callback. *
davide.aliprandi@st.com 4:24158c44f02e 405 * feature_irq.mode(PullNone); //Set interrupt mode. *
davide.aliprandi@st.com 4:24158c44f02e 406 * feature_irq.enable_irq(); //Enable interrupt. *
davide.aliprandi@st.com 4:24158c44f02e 407 * feature_irq.disable_irq(); //Disable interrupt. *
davide.aliprandi@st.com 4:24158c44f02e 408 * + Arduino: *
davide.aliprandi@st.com 4:24158c44f02e 409 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
davide.aliprandi@st.com 4:24158c44f02e 410 * detachInterrupt(pin); //Detach a callback. *
davide.aliprandi@st.com 4:24158c44f02e 411 * *
davide.aliprandi@st.com 4:24158c44f02e 412 * Example (mbed): *
davide.aliprandi@st.com 4:24158c44f02e 413 * void attach_feature_irq(void (*fptr) (void)) *
davide.aliprandi@st.com 4:24158c44f02e 414 * { *
davide.aliprandi@st.com 4:24158c44f02e 415 * feature_irq.fall(fptr); *
davide.aliprandi@st.com 4:24158c44f02e 416 * } *
davide.aliprandi@st.com 4:24158c44f02e 417 * *
davide.aliprandi@st.com 4:24158c44f02e 418 * void enable_feature_irq(void) *
davide.aliprandi@st.com 4:24158c44f02e 419 * { *
davide.aliprandi@st.com 4:24158c44f02e 420 * feature_irq.enable_irq(); *
davide.aliprandi@st.com 4:24158c44f02e 421 * } *
davide.aliprandi@st.com 4:24158c44f02e 422 * *
davide.aliprandi@st.com 4:24158c44f02e 423 * void disable_feature_irq(void) *
davide.aliprandi@st.com 4:24158c44f02e 424 * { *
davide.aliprandi@st.com 4:24158c44f02e 425 * feature_irq.disable_irq(); *
davide.aliprandi@st.com 4:24158c44f02e 426 * } *
davide.aliprandi@st.com 4:24158c44f02e 427 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 428
brdirais 0:2cb6ce8e07bd 429
davide.aliprandi@st.com 4:24158c44f02e 430 /**
davide.aliprandi@st.com 4:24158c44f02e 431 * @brief Enabling the FLAG interrupt handling.
davide.aliprandi@st.com 4:24158c44f02e 432 * @param[in] bridgeId 0 for bridge A, 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 433 * @retval None.
davide.aliprandi@st.com 4:24158c44f02e 434 */
davide.aliprandi@st.com 4:24158c44f02e 435 virtual void enable_flag_irq(uint8_t bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 436 {
davide.aliprandi@st.com 4:24158c44f02e 437 if (bridgeId == BRIDGE_A)
davide.aliprandi@st.com 4:24158c44f02e 438 {
davide.aliprandi@st.com 4:24158c44f02e 439 flag_A_irq.mode(PullUp);
davide.aliprandi@st.com 4:24158c44f02e 440 flag_A_irq.fall(this, &L6206::L6206_FlagInterruptHandler);
davide.aliprandi@st.com 4:24158c44f02e 441 }
davide.aliprandi@st.com 4:24158c44f02e 442 else
davide.aliprandi@st.com 4:24158c44f02e 443 {
davide.aliprandi@st.com 4:24158c44f02e 444 flag_B_irq.mode(PullUp);
davide.aliprandi@st.com 4:24158c44f02e 445 flag_B_irq.fall(this, &L6206::L6206_FlagInterruptHandler);
davide.aliprandi@st.com 4:24158c44f02e 446 }
davide.aliprandi@st.com 4:24158c44f02e 447 }
brdirais 0:2cb6ce8e07bd 448
davide.aliprandi@st.com 4:24158c44f02e 449 /**
davide.aliprandi@st.com 4:24158c44f02e 450 * @brief Disabling the FLAG interrupt handling.
davide.aliprandi@st.com 4:24158c44f02e 451 * @param[in] bridgeId 0 for bridge A, 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 452 * @retval None.
davide.aliprandi@st.com 4:24158c44f02e 453 */
davide.aliprandi@st.com 4:24158c44f02e 454 virtual void disable_flag_irq(uint8_t bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 455 {
davide.aliprandi@st.com 4:24158c44f02e 456 if (bridgeId == BRIDGE_A)
davide.aliprandi@st.com 4:24158c44f02e 457 flag_A_irq.fall(NULL);
davide.aliprandi@st.com 4:24158c44f02e 458 else
davide.aliprandi@st.com 4:24158c44f02e 459 flag_B_irq.fall(NULL);
davide.aliprandi@st.com 4:24158c44f02e 460 }
brdirais 0:2cb6ce8e07bd 461
davide.aliprandi@st.com 4:24158c44f02e 462
davide.aliprandi@st.com 4:24158c44f02e 463 /*** Public In/Out Related Methods ***/
brdirais 0:2cb6ce8e07bd 464
brdirais 0:2cb6ce8e07bd 465
brdirais 0:2cb6ce8e07bd 466
davide.aliprandi@st.com 4:24158c44f02e 467 protected:
davide.aliprandi@st.com 4:24158c44f02e 468
davide.aliprandi@st.com 4:24158c44f02e 469 /*** Protected Component Related Methods ***/
davide.aliprandi@st.com 4:24158c44f02e 470
davide.aliprandi@st.com 4:24158c44f02e 471 /* ACTION 7 --------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 472 * Declare here the component's specific methods. *
davide.aliprandi@st.com 4:24158c44f02e 473 * They should be: *
davide.aliprandi@st.com 4:24158c44f02e 474 * + Methods with the same name of the C component's virtual table's *
davide.aliprandi@st.com 4:24158c44f02e 475 * functions (1); *
davide.aliprandi@st.com 4:24158c44f02e 476 * + Methods with the same name of the C component's extended virtual *
davide.aliprandi@st.com 4:24158c44f02e 477 * table's functions, if any (2); *
davide.aliprandi@st.com 4:24158c44f02e 478 * + Helper methods, if any, like functions declared in the component's *
davide.aliprandi@st.com 4:24158c44f02e 479 * source files but not pointed by the component's virtual table (3). *
davide.aliprandi@st.com 4:24158c44f02e 480 * *
davide.aliprandi@st.com 4:24158c44f02e 481 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 482 * status_t COMPONENT_get_value(float *f); //(1) *
davide.aliprandi@st.com 4:24158c44f02e 483 * status_t COMPONENT_enable_feature(void); //(2) *
davide.aliprandi@st.com 4:24158c44f02e 484 * status_t COMPONENT_compute_average(void); //(3) *
davide.aliprandi@st.com 4:24158c44f02e 485 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 486 status_t L6206_Init(void *init);
davide.aliprandi@st.com 4:24158c44f02e 487 status_t L6206_ReadId(uint8_t *id);
davide.aliprandi@st.com 4:24158c44f02e 488 void L6206_TickHandler(uint8_t deviceId); //Handle the device state machine at each tick timer pulse end
davide.aliprandi@st.com 4:24158c44f02e 489 void L6206_AttachErrorHandler(void (*callback)(uint16_t error)); //Attach a user callback to the error handler
davide.aliprandi@st.com 4:24158c44f02e 490 void L6206_attach_flag_interrupt(void (*callback)(void)); //Attach a user callback to the flag Interrupt
davide.aliprandi@st.com 4:24158c44f02e 491 void L6206_DisableBridge(uint8_t bridgeId); //Disable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 492 void L6206_EnableBridge(uint8_t bridgeId); //Enable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 493 uint16_t L6206_GetBridgeStatus(uint8_t deviceId); //Get bridge status
davide.aliprandi@st.com 4:24158c44f02e 494 uint16_t L6206_GetCurrentSpeed(uint8_t motorId); //Return the current speed in pps
davide.aliprandi@st.com 4:24158c44f02e 495 motorState_t L6206_get_device_state(uint8_t motorId); //Return the device state
davide.aliprandi@st.com 4:24158c44f02e 496 uint8_t L6206_GetFwVersion(void); //Return the FW version
davide.aliprandi@st.com 4:24158c44f02e 497 uint16_t L6206_GetMaxSpeed(uint8_t motorId); //Return the max speed in pps
davide.aliprandi@st.com 4:24158c44f02e 498 void L6206_HardHiz(uint8_t motorId); //Stop the motor and disable the power bridge
davide.aliprandi@st.com 4:24158c44f02e 499 void L6206_HardStop(uint8_t motorId); //Stop the motor without disabling the power bridge
davide.aliprandi@st.com 4:24158c44f02e 500 void L6206_Run(uint8_t motorId, motorDir_t direction); //run the motor
davide.aliprandi@st.com 4:24158c44f02e 501 uint32_t L6206_GetBridgeInputPwmFreq(uint8_t bridgeId); // Get the PWM frequency of the bridge input
davide.aliprandi@st.com 4:24158c44f02e 502 void L6206_SetBridgeInputPwmFreq(uint8_t bridgeId, uint32_t newFreq); // Set the PWM frequency of the bridge input
davide.aliprandi@st.com 4:24158c44f02e 503 void L6206_SetDualFullBridgeConfig(uint8_t newConfig); // Set dual full bridge configuration
davide.aliprandi@st.com 4:24158c44f02e 504 bool L6206_SetMaxSpeed(uint8_t motorId,uint16_t newMaxSpeed); //Set the max speed in pps
davide.aliprandi@st.com 4:24158c44f02e 505 bool L6206_SetNbDevices(uint8_t nbDevices); //Set the number of driver devices
davide.aliprandi@st.com 4:24158c44f02e 506 void L6206_ErrorHandler(uint16_t error);
davide.aliprandi@st.com 4:24158c44f02e 507 void L6206_FlagInterruptHandler(void);
davide.aliprandi@st.com 4:24158c44f02e 508 uint8_t L6206_GetBridgeIdUsedByMotorId(uint8_t motorId);
davide.aliprandi@st.com 4:24158c44f02e 509 uint8_t L6206_GetBridgeInputUsedByMotorId(uint8_t motorId);
davide.aliprandi@st.com 4:24158c44f02e 510 uint8_t L6206_GetMotorIdUsingbridgeInput(uint8_t bridgeInput);
davide.aliprandi@st.com 4:24158c44f02e 511 uint8_t L6206_GetSecondBridgeInputUsedByMotorId(uint8_t motorId);
davide.aliprandi@st.com 4:24158c44f02e 512 bool L6206_IsBidirectionnalMotor(uint8_t motorId);
davide.aliprandi@st.com 4:24158c44f02e 513 void L6206_SetDeviceParamsToPredefinedValues(void);
davide.aliprandi@st.com 4:24158c44f02e 514 void L6206_SetDeviceParamsToGivenValues(L6206_init_t* initDevicePrm);
davide.aliprandi@st.com 4:24158c44f02e 515
davide.aliprandi@st.com 4:24158c44f02e 516 /*** Component's I/O Methods ***/
davide.aliprandi@st.com 4:24158c44f02e 517
davide.aliprandi@st.com 4:24158c44f02e 518 /* ACTION 8 --------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 519 * Implement here other I/O methods beyond those already implemented *
davide.aliprandi@st.com 4:24158c44f02e 520 * above, which are declared extern within the component's header file. *
davide.aliprandi@st.com 4:24158c44f02e 521 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 522
davide.aliprandi@st.com 4:24158c44f02e 523 /**
davide.aliprandi@st.com 4:24158c44f02e 524 * @brief Utility function to set or unset EN pin for Bridge A or Bridge B.
davide.aliprandi@st.com 4:24158c44f02e 525 * @param[out] none
davide.aliprandi@st.com 4:24158c44f02e 526 * @param[in] bridgeId 0 for bridge A, 1 for bridge B
davide.aliprandi@st.com 4:24158c44f02e 527 * @retval none
davide.aliprandi@st.com 4:24158c44f02e 528 */
davide.aliprandi@st.com 4:24158c44f02e 529 void L6206_OutVal( uint8_t bridgeId, uint8_t val)
davide.aliprandi@st.com 4:24158c44f02e 530 {
davide.aliprandi@st.com 4:24158c44f02e 531 if( bridgeId == BRIDGE_A)
davide.aliprandi@st.com 4:24158c44f02e 532 {
davide.aliprandi@st.com 4:24158c44f02e 533 EN_flag_A.output();
davide.aliprandi@st.com 4:24158c44f02e 534 EN_flag_A.mode(PullNone);
davide.aliprandi@st.com 4:24158c44f02e 535 EN_flag_A.write(val);
davide.aliprandi@st.com 4:24158c44f02e 536 }
davide.aliprandi@st.com 4:24158c44f02e 537 else
davide.aliprandi@st.com 4:24158c44f02e 538 {
davide.aliprandi@st.com 4:24158c44f02e 539 EN_flag_B.output();
davide.aliprandi@st.com 4:24158c44f02e 540 EN_flag_B.mode(PullNone);
davide.aliprandi@st.com 4:24158c44f02e 541 EN_flag_B.write(val);
davide.aliprandi@st.com 4:24158c44f02e 542 }
davide.aliprandi@st.com 4:24158c44f02e 543 }
davide.aliprandi@st.com 4:24158c44f02e 544
davide.aliprandi@st.com 4:24158c44f02e 545 /**
davide.aliprandi@st.com 4:24158c44f02e 546 * @brief Making the CPU wait.
davide.aliprandi@st.com 4:24158c44f02e 547 * @param None.
davide.aliprandi@st.com 4:24158c44f02e 548 * @retval None.
davide.aliprandi@st.com 4:24158c44f02e 549 */
davide.aliprandi@st.com 4:24158c44f02e 550 void L6206_Board_Delay(uint32_t delay)
davide.aliprandi@st.com 4:24158c44f02e 551 {
davide.aliprandi@st.com 4:24158c44f02e 552 wait_ms(delay);
davide.aliprandi@st.com 4:24158c44f02e 553 }
davide.aliprandi@st.com 4:24158c44f02e 554
davide.aliprandi@st.com 4:24158c44f02e 555 /**
davide.aliprandi@st.com 4:24158c44f02e 556 * @brief Disable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 557 * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
davide.aliprandi@st.com 4:24158c44f02e 558 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 559 * @note When input of different brigdes are parallelized
davide.aliprandi@st.com 4:24158c44f02e 560 * together, the disabling of one bridge leads to the disabling
davide.aliprandi@st.com 4:24158c44f02e 561 * of the second one
davide.aliprandi@st.com 4:24158c44f02e 562 */
davide.aliprandi@st.com 4:24158c44f02e 563 void L6206_Board_DisableBridge(uint8_t bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 564 {
davide.aliprandi@st.com 4:24158c44f02e 565 disable_flag_irq(BRIDGE_A);
davide.aliprandi@st.com 4:24158c44f02e 566 disable_flag_irq(BRIDGE_B);
davide.aliprandi@st.com 4:24158c44f02e 567
davide.aliprandi@st.com 4:24158c44f02e 568 __disable_irq();
davide.aliprandi@st.com 4:24158c44f02e 569 L6206_OutVal( bridgeId, 0);
davide.aliprandi@st.com 4:24158c44f02e 570 __enable_irq();
davide.aliprandi@st.com 4:24158c44f02e 571 }
davide.aliprandi@st.com 4:24158c44f02e 572
davide.aliprandi@st.com 4:24158c44f02e 573 /**
davide.aliprandi@st.com 4:24158c44f02e 574 * @brief Enable the specified bridge
davide.aliprandi@st.com 4:24158c44f02e 575 * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
davide.aliprandi@st.com 4:24158c44f02e 576 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 577 * @note When input of different brigdes are parallelized
davide.aliprandi@st.com 4:24158c44f02e 578 * together, the enabling of one bridge leads to the enabling
davide.aliprandi@st.com 4:24158c44f02e 579 * of the second one
davide.aliprandi@st.com 4:24158c44f02e 580 */
davide.aliprandi@st.com 4:24158c44f02e 581 void L6206_Board_EnableBridge(uint8_t bridgeId, uint8_t addDelay)
davide.aliprandi@st.com 4:24158c44f02e 582 {
davide.aliprandi@st.com 4:24158c44f02e 583 L6206_OutVal( bridgeId, 1);
davide.aliprandi@st.com 4:24158c44f02e 584
davide.aliprandi@st.com 4:24158c44f02e 585 if (addDelay != 0)
davide.aliprandi@st.com 4:24158c44f02e 586 {
davide.aliprandi@st.com 4:24158c44f02e 587 wait_ms(BSP_MOTOR_CONTROL_BOARD_BRIDGE_TURN_ON_DELAY);
davide.aliprandi@st.com 4:24158c44f02e 588 }
brdirais 0:2cb6ce8e07bd 589
davide.aliprandi@st.com 4:24158c44f02e 590 enable_flag_irq( bridgeId);
davide.aliprandi@st.com 4:24158c44f02e 591 }
davide.aliprandi@st.com 4:24158c44f02e 592
davide.aliprandi@st.com 4:24158c44f02e 593 /**
davide.aliprandi@st.com 4:24158c44f02e 594 * @brief Returns the FLAG pin state.
davide.aliprandi@st.com 4:24158c44f02e 595 * @param[in] bridgeId (from 0 for bridge A to 1 for bridge B)
davide.aliprandi@st.com 4:24158c44f02e 596 * @retval The FLAG pin value.
davide.aliprandi@st.com 4:24158c44f02e 597 */
davide.aliprandi@st.com 4:24158c44f02e 598 uint32_t L6206_Board_GetFlagPinState(uint8_t bridgeId)
davide.aliprandi@st.com 4:24158c44f02e 599 {
davide.aliprandi@st.com 4:24158c44f02e 600 if (bridgeId == 0)
davide.aliprandi@st.com 4:24158c44f02e 601 {
davide.aliprandi@st.com 4:24158c44f02e 602 EN_flag_A.input();
davide.aliprandi@st.com 4:24158c44f02e 603 return EN_flag_A.read();
davide.aliprandi@st.com 4:24158c44f02e 604 }
davide.aliprandi@st.com 4:24158c44f02e 605 else
davide.aliprandi@st.com 4:24158c44f02e 606 {
davide.aliprandi@st.com 4:24158c44f02e 607 EN_flag_B.input();
davide.aliprandi@st.com 4:24158c44f02e 608 return EN_flag_B.read();
davide.aliprandi@st.com 4:24158c44f02e 609 }
davide.aliprandi@st.com 4:24158c44f02e 610 }
davide.aliprandi@st.com 4:24158c44f02e 611
davide.aliprandi@st.com 4:24158c44f02e 612 /**
davide.aliprandi@st.com 4:24158c44f02e 613 * @brief Initiliases the GPIOs used by the L6206s
davide.aliprandi@st.com 4:24158c44f02e 614 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 615 */
davide.aliprandi@st.com 4:24158c44f02e 616 void L6206_Board_GpioInit(void)
davide.aliprandi@st.com 4:24158c44f02e 617 {
davide.aliprandi@st.com 4:24158c44f02e 618 /* init bridge Enable */
davide.aliprandi@st.com 4:24158c44f02e 619 EN_flag_A.output();
davide.aliprandi@st.com 4:24158c44f02e 620 EN_flag_A.write(0);
davide.aliprandi@st.com 4:24158c44f02e 621 EN_flag_A.input();
davide.aliprandi@st.com 4:24158c44f02e 622
davide.aliprandi@st.com 4:24158c44f02e 623 EN_flag_B.output();
davide.aliprandi@st.com 4:24158c44f02e 624 EN_flag_B.write(0);
davide.aliprandi@st.com 4:24158c44f02e 625 EN_flag_B.input();
davide.aliprandi@st.com 4:24158c44f02e 626
davide.aliprandi@st.com 4:24158c44f02e 627
davide.aliprandi@st.com 4:24158c44f02e 628 /* init flag Irq */
davide.aliprandi@st.com 4:24158c44f02e 629 disable_flag_irq(BRIDGE_A);
davide.aliprandi@st.com 4:24158c44f02e 630 disable_flag_irq(BRIDGE_B);
davide.aliprandi@st.com 4:24158c44f02e 631
davide.aliprandi@st.com 4:24158c44f02e 632 }
davide.aliprandi@st.com 4:24158c44f02e 633
davide.aliprandi@st.com 4:24158c44f02e 634 /**
davide.aliprandi@st.com 4:24158c44f02e 635 * @brief Sets the frequency of PWM used for bridges inputs
davide.aliprandi@st.com 4:24158c44f02e 636 * @param[in] bridgeInput 0 for input 1A, 1 for input 2A,
davide.aliprandi@st.com 4:24158c44f02e 637 * 2 for input 1B, 3 for input 2B
davide.aliprandi@st.com 4:24158c44f02e 638 * @param[in] newFreq in Hz
davide.aliprandi@st.com 4:24158c44f02e 639 * @param[in] duty Duty cycle
davide.aliprandi@st.com 4:24158c44f02e 640 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 641 * @note The frequency is directly the current speed of the device
davide.aliprandi@st.com 4:24158c44f02e 642 */
davide.aliprandi@st.com 4:24158c44f02e 643 void L6206_Board_PwmSetFreq(uint8_t bridgeInput, uint32_t newFreq, uint8_t duty)
davide.aliprandi@st.com 4:24158c44f02e 644 {
davide.aliprandi@st.com 4:24158c44f02e 645 /* Computing the period of PWM. */
davide.aliprandi@st.com 4:24158c44f02e 646 float period = 1.0f / newFreq;
davide.aliprandi@st.com 4:24158c44f02e 647 float duty_cycle;
davide.aliprandi@st.com 4:24158c44f02e 648 int period_us = (int)(period * 1000000);
davide.aliprandi@st.com 4:24158c44f02e 649
davide.aliprandi@st.com 4:24158c44f02e 650 if (duty > 100) duty = 100;
davide.aliprandi@st.com 4:24158c44f02e 651 duty_cycle = (float)duty / 100.0f;
davide.aliprandi@st.com 4:24158c44f02e 652
davide.aliprandi@st.com 4:24158c44f02e 653 switch (bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 654 {
davide.aliprandi@st.com 4:24158c44f02e 655 case 0:
davide.aliprandi@st.com 4:24158c44f02e 656 default:
davide.aliprandi@st.com 4:24158c44f02e 657 /* Setting the period and the duty-cycle of PWM. */
davide.aliprandi@st.com 4:24158c44f02e 658 pwm_1A.period_us(period_us);
davide.aliprandi@st.com 4:24158c44f02e 659 pwm_1A.write(duty_cycle);
davide.aliprandi@st.com 4:24158c44f02e 660 break;
davide.aliprandi@st.com 4:24158c44f02e 661
davide.aliprandi@st.com 4:24158c44f02e 662 case 1:
davide.aliprandi@st.com 4:24158c44f02e 663 /* Setting the period and the duty-cycle of PWM. */
davide.aliprandi@st.com 4:24158c44f02e 664 pwm_2A.period_us(period_us);
davide.aliprandi@st.com 4:24158c44f02e 665 pwm_2A.write(duty_cycle);
davide.aliprandi@st.com 4:24158c44f02e 666 break;
davide.aliprandi@st.com 4:24158c44f02e 667
davide.aliprandi@st.com 4:24158c44f02e 668 case 2:
davide.aliprandi@st.com 4:24158c44f02e 669 /* Setting the period and the duty-cycle of PWM. */
davide.aliprandi@st.com 4:24158c44f02e 670 pwm_1B.period_us(period_us);
davide.aliprandi@st.com 4:24158c44f02e 671 pwm_1B.write(duty_cycle);
davide.aliprandi@st.com 4:24158c44f02e 672 break;
davide.aliprandi@st.com 4:24158c44f02e 673
davide.aliprandi@st.com 4:24158c44f02e 674 case 3:
davide.aliprandi@st.com 4:24158c44f02e 675 /* Setting the period and the duty-cycle of PWM. */
davide.aliprandi@st.com 4:24158c44f02e 676 pwm_2B.period_us(period_us);
davide.aliprandi@st.com 4:24158c44f02e 677 pwm_2B.write(duty_cycle);
davide.aliprandi@st.com 4:24158c44f02e 678 break;
davide.aliprandi@st.com 4:24158c44f02e 679 }
davide.aliprandi@st.com 4:24158c44f02e 680 }
davide.aliprandi@st.com 4:24158c44f02e 681
davide.aliprandi@st.com 4:24158c44f02e 682 /**
davide.aliprandi@st.com 4:24158c44f02e 683 * @brief Reset the PWM for the specified brigde input
davide.aliprandi@st.com 4:24158c44f02e 684 * @param[in] bridgeInput 0 for input 1A, 1 for input 2A,
davide.aliprandi@st.com 4:24158c44f02e 685 * 2 for input 1B, 3 for input 2B
davide.aliprandi@st.com 4:24158c44f02e 686 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 687 */
davide.aliprandi@st.com 4:24158c44f02e 688 void L6206_Board_PwmDeInit(uint8_t bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 689 {
davide.aliprandi@st.com 4:24158c44f02e 690 switch (bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 691 {
davide.aliprandi@st.com 4:24158c44f02e 692 case 0:
davide.aliprandi@st.com 4:24158c44f02e 693 default:
davide.aliprandi@st.com 4:24158c44f02e 694 //timer_pwm_1A.detach();
davide.aliprandi@st.com 4:24158c44f02e 695 break;
davide.aliprandi@st.com 4:24158c44f02e 696
davide.aliprandi@st.com 4:24158c44f02e 697 case 1:
davide.aliprandi@st.com 4:24158c44f02e 698 //timer_pwm_2A.detach();
davide.aliprandi@st.com 4:24158c44f02e 699 break;
davide.aliprandi@st.com 4:24158c44f02e 700
davide.aliprandi@st.com 4:24158c44f02e 701 case 2:
davide.aliprandi@st.com 4:24158c44f02e 702 //timer_pwm_1B.detach();
davide.aliprandi@st.com 4:24158c44f02e 703 break;
davide.aliprandi@st.com 4:24158c44f02e 704
davide.aliprandi@st.com 4:24158c44f02e 705 case 3:
davide.aliprandi@st.com 4:24158c44f02e 706 //timer_pwm_2B.detach();
davide.aliprandi@st.com 4:24158c44f02e 707 break;
davide.aliprandi@st.com 4:24158c44f02e 708 }
davide.aliprandi@st.com 4:24158c44f02e 709 }
davide.aliprandi@st.com 4:24158c44f02e 710
davide.aliprandi@st.com 4:24158c44f02e 711 /**
davide.aliprandi@st.com 4:24158c44f02e 712 * @brief Set the PWM frequency the for the specified bridge input
davide.aliprandi@st.com 4:24158c44f02e 713 * @param[in] bridgeInput 0 for input 1A, 1 for input 2A,
davide.aliprandi@st.com 4:24158c44f02e 714 * 2 for input 1B, 3 for input 2B
davide.aliprandi@st.com 4:24158c44f02e 715 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 716 */
davide.aliprandi@st.com 4:24158c44f02e 717 void L6206_Board_PwmInit(uint8_t bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 718 {
davide.aliprandi@st.com 4:24158c44f02e 719 }
davide.aliprandi@st.com 4:24158c44f02e 720
davide.aliprandi@st.com 4:24158c44f02e 721 /**
davide.aliprandi@st.com 4:24158c44f02e 722 * @brief Stops the PWM uses for the specified brige input
davide.aliprandi@st.com 4:24158c44f02e 723 * @param[in] bridgeInput 0 for input 1A, 1 for input 2A,
davide.aliprandi@st.com 4:24158c44f02e 724 * 2 for input 1B, 3 for input 2B
davide.aliprandi@st.com 4:24158c44f02e 725 * @retval None
davide.aliprandi@st.com 4:24158c44f02e 726 */
davide.aliprandi@st.com 4:24158c44f02e 727 void L6206_Board_PwmStop(uint8_t bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 728 {
davide.aliprandi@st.com 4:24158c44f02e 729 switch (bridgeInput)
davide.aliprandi@st.com 4:24158c44f02e 730 {
davide.aliprandi@st.com 4:24158c44f02e 731 case 0:
davide.aliprandi@st.com 4:24158c44f02e 732 default:
davide.aliprandi@st.com 4:24158c44f02e 733 pwm_1A.write(0.0);
davide.aliprandi@st.com 4:24158c44f02e 734 break;
davide.aliprandi@st.com 4:24158c44f02e 735
davide.aliprandi@st.com 4:24158c44f02e 736 case 1:
davide.aliprandi@st.com 4:24158c44f02e 737 pwm_2A.write(0.0);
davide.aliprandi@st.com 4:24158c44f02e 738 break;
davide.aliprandi@st.com 4:24158c44f02e 739
davide.aliprandi@st.com 4:24158c44f02e 740 case 2:
davide.aliprandi@st.com 4:24158c44f02e 741 pwm_1B.write(0.0);
davide.aliprandi@st.com 4:24158c44f02e 742 break;
davide.aliprandi@st.com 4:24158c44f02e 743
davide.aliprandi@st.com 4:24158c44f02e 744 case 3:
davide.aliprandi@st.com 4:24158c44f02e 745 pwm_2B.write(0.0);
davide.aliprandi@st.com 4:24158c44f02e 746 break;
davide.aliprandi@st.com 4:24158c44f02e 747 }
davide.aliprandi@st.com 4:24158c44f02e 748 }
brdirais 0:2cb6ce8e07bd 749
brdirais 0:2cb6ce8e07bd 750
davide.aliprandi@st.com 4:24158c44f02e 751 /*** Component's Instance Variables ***/
davide.aliprandi@st.com 4:24158c44f02e 752
davide.aliprandi@st.com 4:24158c44f02e 753 /* ACTION 9 --------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 754 * Declare here interrupt related variables, if needed. *
davide.aliprandi@st.com 4:24158c44f02e 755 * Note that interrupt handling is platform dependent, see *
davide.aliprandi@st.com 4:24158c44f02e 756 * "Interrupt Related Methods" above. *
davide.aliprandi@st.com 4:24158c44f02e 757 * *
davide.aliprandi@st.com 4:24158c44f02e 758 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 759 * + mbed: *
davide.aliprandi@st.com 4:24158c44f02e 760 * InterruptIn feature_irq; *
davide.aliprandi@st.com 4:24158c44f02e 761 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 762
davide.aliprandi@st.com 4:24158c44f02e 763 /* Flag Interrupt. */
davide.aliprandi@st.com 4:24158c44f02e 764 InterruptIn flag_A_irq;
davide.aliprandi@st.com 4:24158c44f02e 765 InterruptIn flag_B_irq;
davide.aliprandi@st.com 4:24158c44f02e 766
davide.aliprandi@st.com 4:24158c44f02e 767 /* ACTION 10 -------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 768 * Declare here other pin related variables, if needed. *
davide.aliprandi@st.com 4:24158c44f02e 769 * *
davide.aliprandi@st.com 4:24158c44f02e 770 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 771 * + mbed: *
davide.aliprandi@st.com 4:24158c44f02e 772 * DigitalOut standby_reset; *
davide.aliprandi@st.com 4:24158c44f02e 773 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 774
davide.aliprandi@st.com 4:24158c44f02e 775 /* Digital In/Out for Flag EN pin */
davide.aliprandi@st.com 4:24158c44f02e 776 DigitalInOut EN_flag_A;
davide.aliprandi@st.com 4:24158c44f02e 777 DigitalInOut EN_flag_B;
davide.aliprandi@st.com 4:24158c44f02e 778
davide.aliprandi@st.com 4:24158c44f02e 779 /* PWM Out pin */
davide.aliprandi@st.com 4:24158c44f02e 780 PwmOut pwm_1A;
davide.aliprandi@st.com 4:24158c44f02e 781 PwmOut pwm_2A;
davide.aliprandi@st.com 4:24158c44f02e 782 PwmOut pwm_1B;
davide.aliprandi@st.com 4:24158c44f02e 783 PwmOut pwm_2B;
davide.aliprandi@st.com 4:24158c44f02e 784
davide.aliprandi@st.com 4:24158c44f02e 785 /* ACTION 11 -------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 786 * Declare here communication related variables, if needed. *
davide.aliprandi@st.com 4:24158c44f02e 787 * *
davide.aliprandi@st.com 4:24158c44f02e 788 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 789 * + mbed: *
davide.aliprandi@st.com 4:24158c44f02e 790 * DigitalOut address; *
davide.aliprandi@st.com 4:24158c44f02e 791 * DevI2C &dev_i2c; *
davide.aliprandi@st.com 4:24158c44f02e 792 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 793
davide.aliprandi@st.com 4:24158c44f02e 794 /* ACTION 12 -------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 795 * Declare here identity related variables, if needed. *
davide.aliprandi@st.com 4:24158c44f02e 796 * Note that there should be only a unique identifier for each component, *
davide.aliprandi@st.com 4:24158c44f02e 797 * which should be the "who_am_i" parameter. *
davide.aliprandi@st.com 4:24158c44f02e 798 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 799 /* Identity */
davide.aliprandi@st.com 4:24158c44f02e 800 uint8_t who_am_i;
davide.aliprandi@st.com 4:24158c44f02e 801
davide.aliprandi@st.com 4:24158c44f02e 802 /* ACTION 13 -------------------------------------------------------------*
davide.aliprandi@st.com 4:24158c44f02e 803 * Declare here the component's static and non-static data, one variable *
davide.aliprandi@st.com 4:24158c44f02e 804 * per line. *
davide.aliprandi@st.com 4:24158c44f02e 805 * *
davide.aliprandi@st.com 4:24158c44f02e 806 * Example: *
davide.aliprandi@st.com 4:24158c44f02e 807 * float measure; *
davide.aliprandi@st.com 4:24158c44f02e 808 * int instance_id; *
davide.aliprandi@st.com 4:24158c44f02e 809 * static int number_of_instances; *
davide.aliprandi@st.com 4:24158c44f02e 810 *------------------------------------------------------------------------*/
davide.aliprandi@st.com 4:24158c44f02e 811 void (*flagInterruptCallback)(void);
davide.aliprandi@st.com 4:24158c44f02e 812
davide.aliprandi@st.com 4:24158c44f02e 813 void (*errorHandlerCallback)(uint16_t error);
davide.aliprandi@st.com 4:24158c44f02e 814
davide.aliprandi@st.com 4:24158c44f02e 815 uint8_t numberOfDevices;
davide.aliprandi@st.com 4:24158c44f02e 816
davide.aliprandi@st.com 4:24158c44f02e 817 uint8_t deviceInstance;
davide.aliprandi@st.com 4:24158c44f02e 818
davide.aliprandi@st.com 4:24158c44f02e 819 deviceParams_t devicePrm;
brdirais 0:2cb6ce8e07bd 820
brdirais 0:2cb6ce8e07bd 821
davide.aliprandi@st.com 4:24158c44f02e 822 /** PWM timer variables */
brdirais 0:2cb6ce8e07bd 823
davide.aliprandi@st.com 4:24158c44f02e 824 bool pwm_1A_activated;
davide.aliprandi@st.com 4:24158c44f02e 825 bool pwm_2A_activated;
davide.aliprandi@st.com 4:24158c44f02e 826 bool pwm_1B_activated;
davide.aliprandi@st.com 4:24158c44f02e 827 bool pwm_2B_activated;
davide.aliprandi@st.com 4:24158c44f02e 828 };
brdirais 0:2cb6ce8e07bd 829
davide.aliprandi@st.com 4:24158c44f02e 830 #endif /* __L6206_CLASS_H */
brdirais 0:2cb6ce8e07bd 831
brdirais 0:2cb6ce8e07bd 832 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
brdirais 0:2cb6ce8e07bd 833
brdirais 0:2cb6ce8e07bd 834
davide.aliprandi@st.com 4:24158c44f02e 835