form of HeloWorld_IHM04A1
Dependencies: FastPWM mbed ST_INTERFACES
Fork of HelloWorld_IHM04A1 by
main.cpp@9:b7fc55bf70b2, 2017-07-21 (annotated)
- Committer:
- cerimis
- Date:
- Fri Jul 21 11:19:39 2017 +0000
- Revision:
- 9:b7fc55bf70b2
- Parent:
- 8:05340e740644
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brdirais | 0:dcc35ef6effc | 1 | /** |
brdirais | 0:dcc35ef6effc | 2 | ****************************************************************************** |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 3 | * @file main.cpp |
brdirais | 0:dcc35ef6effc | 4 | * @author IPC Rennes |
brdirais | 0:dcc35ef6effc | 5 | * @version V1.0.0 |
brdirais | 1:4d9b9123d9e1 | 6 | * @date May 16, 2016 |
brdirais | 0:dcc35ef6effc | 7 | * @brief This example shows how to use 1 IHM04A1 expansion board with |
brdirais | 0:dcc35ef6effc | 8 | * 4 unidirectionnal Brush DC motors. |
brdirais | 0:dcc35ef6effc | 9 | * Each motor has one lead connected to one of the bridge output, |
brdirais | 0:dcc35ef6effc | 10 | * the other lead to the ground. The input bridges are not parallelised. |
brdirais | 0:dcc35ef6effc | 11 | * The demo sequence starts when the user button is pressed. |
brdirais | 1:4d9b9123d9e1 | 12 | * Each time, the user button is pressed, one new motor is activated |
brdirais | 0:dcc35ef6effc | 13 | ****************************************************************************** |
brdirais | 0:dcc35ef6effc | 14 | * @attention |
brdirais | 0:dcc35ef6effc | 15 | * |
brdirais | 0:dcc35ef6effc | 16 | * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> |
brdirais | 0:dcc35ef6effc | 17 | * |
brdirais | 0:dcc35ef6effc | 18 | * Redistribution and use in source and binary forms, with or without modification, |
brdirais | 0:dcc35ef6effc | 19 | * are permitted provided that the following conditions are met: |
brdirais | 0:dcc35ef6effc | 20 | * 1. Redistributions of source code must retain the above copyright notice, |
brdirais | 0:dcc35ef6effc | 21 | * this list of conditions and the following disclaimer. |
brdirais | 0:dcc35ef6effc | 22 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
brdirais | 0:dcc35ef6effc | 23 | * this list of conditions and the following disclaimer in the documentation |
brdirais | 0:dcc35ef6effc | 24 | * and/or other materials provided with the distribution. |
brdirais | 0:dcc35ef6effc | 25 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
brdirais | 0:dcc35ef6effc | 26 | * may be used to endorse or promote products derived from this software |
brdirais | 0:dcc35ef6effc | 27 | * without specific prior written permission. |
brdirais | 0:dcc35ef6effc | 28 | * |
brdirais | 0:dcc35ef6effc | 29 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
brdirais | 0:dcc35ef6effc | 30 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
brdirais | 0:dcc35ef6effc | 31 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
brdirais | 0:dcc35ef6effc | 32 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
brdirais | 0:dcc35ef6effc | 33 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
brdirais | 0:dcc35ef6effc | 34 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
brdirais | 0:dcc35ef6effc | 35 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
brdirais | 0:dcc35ef6effc | 36 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
brdirais | 0:dcc35ef6effc | 37 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
brdirais | 0:dcc35ef6effc | 38 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
brdirais | 0:dcc35ef6effc | 39 | * |
brdirais | 0:dcc35ef6effc | 40 | ****************************************************************************** |
brdirais | 0:dcc35ef6effc | 41 | */ |
brdirais | 0:dcc35ef6effc | 42 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 43 | |
brdirais | 0:dcc35ef6effc | 44 | /* Includes ------------------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 45 | |
brdirais | 0:dcc35ef6effc | 46 | /* mbed specific header files. */ |
brdirais | 0:dcc35ef6effc | 47 | #include "mbed.h" |
brdirais | 0:dcc35ef6effc | 48 | |
brdirais | 0:dcc35ef6effc | 49 | /* Component specific header files. */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 50 | #include "L6206.h" |
brdirais | 0:dcc35ef6effc | 51 | |
brdirais | 0:dcc35ef6effc | 52 | |
brdirais | 0:dcc35ef6effc | 53 | /* Definitions ---------------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 54 | |
brdirais | 0:dcc35ef6effc | 55 | #define MAX_MOTOR (4) |
brdirais | 0:dcc35ef6effc | 56 | |
brdirais | 0:dcc35ef6effc | 57 | |
brdirais | 0:dcc35ef6effc | 58 | /* Variables -----------------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 59 | |
brdirais | 0:dcc35ef6effc | 60 | static volatile uint16_t gLastError; |
brdirais | 0:dcc35ef6effc | 61 | static volatile uint8_t gStep = 0; |
brdirais | 0:dcc35ef6effc | 62 | |
brdirais | 0:dcc35ef6effc | 63 | |
brdirais | 0:dcc35ef6effc | 64 | /* Variables -----------------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 65 | |
brdirais | 0:dcc35ef6effc | 66 | /* Initialization parameters. */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 67 | L6206_init_t init = |
brdirais | 0:dcc35ef6effc | 68 | { |
brdirais | 0:dcc35ef6effc | 69 | L6206_CONF_PARAM_PARALLE_BRIDGES, |
brdirais | 0:dcc35ef6effc | 70 | {L6206_CONF_PARAM_FREQ_PWM1A, L6206_CONF_PARAM_FREQ_PWM2A, L6206_CONF_PARAM_FREQ_PWM1B, L6206_CONF_PARAM_FREQ_PWM2B}, |
cerimis | 9:b7fc55bf70b2 | 71 | {0,0,0,0}, |
cerimis | 9:b7fc55bf70b2 | 72 | {FORWARD,FORWARD,FORWARD,FORWARD}, |
brdirais | 0:dcc35ef6effc | 73 | {INACTIVE,INACTIVE,INACTIVE,INACTIVE}, |
brdirais | 0:dcc35ef6effc | 74 | {FALSE,FALSE} |
brdirais | 0:dcc35ef6effc | 75 | }; |
brdirais | 0:dcc35ef6effc | 76 | |
brdirais | 0:dcc35ef6effc | 77 | /* Motor Control Component. */ |
brdirais | 0:dcc35ef6effc | 78 | L6206 *motor; |
brdirais | 0:dcc35ef6effc | 79 | |
brdirais | 0:dcc35ef6effc | 80 | /* User button on Nucleo board */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 81 | InterruptIn my_button_irq(USER_BUTTON); |
brdirais | 0:dcc35ef6effc | 82 | |
brdirais | 0:dcc35ef6effc | 83 | |
brdirais | 0:dcc35ef6effc | 84 | /* Functions -----------------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 85 | |
brdirais | 0:dcc35ef6effc | 86 | /** |
brdirais | 0:dcc35ef6effc | 87 | * @brief This function is executed in case of error occurrence. |
brdirais | 0:dcc35ef6effc | 88 | * @param error number of the error |
brdirais | 0:dcc35ef6effc | 89 | * @retval None |
brdirais | 0:dcc35ef6effc | 90 | */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 91 | void my_error_handler(uint16_t error) |
brdirais | 0:dcc35ef6effc | 92 | { |
brdirais | 0:dcc35ef6effc | 93 | /* Backup error number */ |
brdirais | 0:dcc35ef6effc | 94 | gLastError = error; |
brdirais | 0:dcc35ef6effc | 95 | |
brdirais | 0:dcc35ef6effc | 96 | /* Enter your own code here */ |
cerimis | 9:b7fc55bf70b2 | 97 | printf("Error: %u\r\n\n",error); |
brdirais | 0:dcc35ef6effc | 98 | } |
brdirais | 0:dcc35ef6effc | 99 | |
brdirais | 0:dcc35ef6effc | 100 | /** |
brdirais | 0:dcc35ef6effc | 101 | * @brief This function is the User handler for the flag interrupt |
brdirais | 0:dcc35ef6effc | 102 | * @param None |
brdirais | 0:dcc35ef6effc | 103 | * @retval None |
brdirais | 0:dcc35ef6effc | 104 | * @note If needed, implement it, and then attach and enable it: |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 105 | * + motor->attach_flag_interrupt(my_flag_irq_handler); |
brdirais | 0:dcc35ef6effc | 106 | */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 107 | void my_flag_irq_handler(void) |
brdirais | 0:dcc35ef6effc | 108 | { |
brdirais | 0:dcc35ef6effc | 109 | /* Code to be customised */ |
brdirais | 0:dcc35ef6effc | 110 | /************************/ |
brdirais | 0:dcc35ef6effc | 111 | /* Get the state of bridge A */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 112 | uint16_t bridgeState = motor->get_bridge_status(0); |
brdirais | 0:dcc35ef6effc | 113 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 114 | if (bridgeState == 0) { |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 115 | if ((motor->get_device_state(0) != INACTIVE)|| |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 116 | (motor->get_device_state(1) != INACTIVE)) { |
brdirais | 0:dcc35ef6effc | 117 | /* Bridge A was disabling due to overcurrent or over temperature */ |
brdirais | 0:dcc35ef6effc | 118 | /* When at least on of its motor was running */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 119 | my_error_handler(0XBAD0); |
brdirais | 0:dcc35ef6effc | 120 | } |
brdirais | 0:dcc35ef6effc | 121 | } |
brdirais | 0:dcc35ef6effc | 122 | |
brdirais | 0:dcc35ef6effc | 123 | /* Get the state of bridge B */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 124 | bridgeState = motor->get_bridge_status(1); |
brdirais | 0:dcc35ef6effc | 125 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 126 | if (bridgeState == 0) { |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 127 | if ((motor->get_device_state(2) != INACTIVE)|| |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 128 | (motor->get_device_state(3) != INACTIVE)) { |
brdirais | 0:dcc35ef6effc | 129 | /* Bridge A was disabling due to overcurrent or over temperature */ |
brdirais | 0:dcc35ef6effc | 130 | /* When at least on of its motor was running */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 131 | my_error_handler(0XBAD1); |
brdirais | 0:dcc35ef6effc | 132 | } |
brdirais | 0:dcc35ef6effc | 133 | } |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 134 | } |
brdirais | 0:dcc35ef6effc | 135 | |
brdirais | 0:dcc35ef6effc | 136 | |
brdirais | 0:dcc35ef6effc | 137 | /* Private functions ---------------------------------------------------------*/ |
brdirais | 0:dcc35ef6effc | 138 | |
brdirais | 0:dcc35ef6effc | 139 | /** |
brdirais | 0:dcc35ef6effc | 140 | * @brief Button Irq |
brdirais | 0:dcc35ef6effc | 141 | * @param None |
brdirais | 0:dcc35ef6effc | 142 | * @retval None |
brdirais | 0:dcc35ef6effc | 143 | */ |
brdirais | 0:dcc35ef6effc | 144 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 145 | void my_button_pressed(void) |
brdirais | 0:dcc35ef6effc | 146 | { |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 147 | my_button_irq.disable_irq(); |
brdirais | 0:dcc35ef6effc | 148 | gStep++; |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 149 | if (gStep > MAX_MOTOR) { |
brdirais | 0:dcc35ef6effc | 150 | gStep = 0; |
brdirais | 0:dcc35ef6effc | 151 | } |
brdirais | 0:dcc35ef6effc | 152 | wait_ms(200); |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 153 | my_button_irq.enable_irq(); |
brdirais | 0:dcc35ef6effc | 154 | } |
brdirais | 0:dcc35ef6effc | 155 | |
brdirais | 0:dcc35ef6effc | 156 | |
brdirais | 0:dcc35ef6effc | 157 | /** |
brdirais | 0:dcc35ef6effc | 158 | * @brief Main program |
brdirais | 0:dcc35ef6effc | 159 | * @param None |
brdirais | 0:dcc35ef6effc | 160 | * @retval None |
brdirais | 0:dcc35ef6effc | 161 | */ |
brdirais | 0:dcc35ef6effc | 162 | int main(void) |
brdirais | 0:dcc35ef6effc | 163 | { |
brdirais | 0:dcc35ef6effc | 164 | /*----- Initialization. -----*/ |
brdirais | 0:dcc35ef6effc | 165 | |
brdirais | 0:dcc35ef6effc | 166 | /* Initializing Motor Control Component. */ |
brdirais | 0:dcc35ef6effc | 167 | motor = new L6206( D2, A4, D5, D4, A0, A1); |
cerimis | 9:b7fc55bf70b2 | 168 | DigitalIn Pin_d4(D4); |
cerimis | 9:b7fc55bf70b2 | 169 | DigitalIn Pin_a0(A0); |
cerimis | 9:b7fc55bf70b2 | 170 | DigitalIn Pin_a1(A1); |
cerimis | 9:b7fc55bf70b2 | 171 | |
cerimis | 9:b7fc55bf70b2 | 172 | Pin_d4.mode(PullNone); |
cerimis | 9:b7fc55bf70b2 | 173 | Pin_a0.mode(PullNone); |
cerimis | 9:b7fc55bf70b2 | 174 | Pin_a1.mode(PullNone); |
cerimis | 9:b7fc55bf70b2 | 175 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 176 | /* When init method is called with NULL pointer, the L6206 parameters are set */ |
brdirais | 0:dcc35ef6effc | 177 | /* with the predefined values from file l6206_target_config.h, otherwise the */ |
cerimis | 9:b7fc55bf70b2 | 178 | /* parameters are set using the init structure values. */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 179 | if (motor->init(&init) != COMPONENT_OK) { |
brdirais | 0:dcc35ef6effc | 180 | exit(EXIT_FAILURE); |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 181 | } |
cerimis | 9:b7fc55bf70b2 | 182 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 183 | /* Attach the function my_flag_irq_handler (defined below) to the flag interrupt */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 184 | motor->attach_flag_interrupt(my_flag_irq_handler); |
brdirais | 0:dcc35ef6effc | 185 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 186 | /* Attach the function my_error_handler (defined below) to the error Handler*/ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 187 | motor->attach_error_handler(my_error_handler); |
brdirais | 0:dcc35ef6effc | 188 | |
brdirais | 0:dcc35ef6effc | 189 | /* Printing to the console. */ |
Davidroid | 7:20ff5668f5fe | 190 | printf("Motor Control Application Example for 4 Motors\r\n\n"); |
brdirais | 0:dcc35ef6effc | 191 | |
brdirais | 0:dcc35ef6effc | 192 | /* Select the configuration with no bridge paralleling, two unidirectionnal motors on bridge A |
brdirais | 0:dcc35ef6effc | 193 | and two unidirectionnal motors on bridge B */ |
cerimis | 9:b7fc55bf70b2 | 194 | //motor->set_dual_full_bridge_config(PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B); |
cerimis | 9:b7fc55bf70b2 | 195 | motor->set_dual_full_bridge_config(PARALLELING_ALL_WITH_IN1A___1_UNDIR_MOTOR); |
brdirais | 0:dcc35ef6effc | 196 | |
brdirais | 1:4d9b9123d9e1 | 197 | /* Set PWM Frequency of bridge A inputs to 1000 Hz */ |
cerimis | 9:b7fc55bf70b2 | 198 | // motor->set_bridge_input_pwm_freq(0,10000); |
brdirais | 0:dcc35ef6effc | 199 | |
brdirais | 1:4d9b9123d9e1 | 200 | /* Set PWM Frequency of bridge B inputs to 2000 Hz */ |
cerimis | 9:b7fc55bf70b2 | 201 | //motor->set_bridge_input_pwm_freq(1,2000); |
cerimis | 9:b7fc55bf70b2 | 202 | motor->set_bridge_input_pwm_freq(0,1000); |
cerimis | 9:b7fc55bf70b2 | 203 | //motor->set_bridge_input_pwm_freq(1,50000); |
cerimis | 9:b7fc55bf70b2 | 204 | Pin_d4.mode(PullNone); |
cerimis | 9:b7fc55bf70b2 | 205 | Pin_a0.mode(PullNone); |
cerimis | 9:b7fc55bf70b2 | 206 | Pin_a1.mode(PullNone); |
brdirais | 0:dcc35ef6effc | 207 | |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 208 | // Attach my_button_pressed function to Irq |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 209 | my_button_irq.fall(&my_button_pressed); |
brdirais | 0:dcc35ef6effc | 210 | |
brdirais | 0:dcc35ef6effc | 211 | /* Infinite loop */ |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 212 | while (true) { |
cerimis | 9:b7fc55bf70b2 | 213 | |
cerimis | 9:b7fc55bf70b2 | 214 | if (gStep == 0) { |
cerimis | 9:b7fc55bf70b2 | 215 | printf("stopping motor 0\r\n"); |
cerimis | 9:b7fc55bf70b2 | 216 | /* Set speed of motor 0 to 5% */ |
cerimis | 9:b7fc55bf70b2 | 217 | motor->hard_hiz(0); |
cerimis | 9:b7fc55bf70b2 | 218 | } |
brdirais | 0:dcc35ef6effc | 219 | |
cerimis | 9:b7fc55bf70b2 | 220 | |
cerimis | 9:b7fc55bf70b2 | 221 | |
cerimis | 9:b7fc55bf70b2 | 222 | if (gStep == 1) { |
cerimis | 9:b7fc55bf70b2 | 223 | printf("Running motor 0 at 1%% of the maximum speed\r\n"); |
cerimis | 9:b7fc55bf70b2 | 224 | /* Set speed of motor 0 to 5% */ |
cerimis | 9:b7fc55bf70b2 | 225 | motor->set_speed(0,100); |
cerimis | 9:b7fc55bf70b2 | 226 | /* start motor 0 */ |
cerimis | 9:b7fc55bf70b2 | 227 | motor->run(0, BDCMotor::FWD); |
cerimis | 9:b7fc55bf70b2 | 228 | |
cerimis | 9:b7fc55bf70b2 | 229 | } |
cerimis | 9:b7fc55bf70b2 | 230 | |
cerimis | 9:b7fc55bf70b2 | 231 | if (gStep == 2) { |
Davidroid | 8:05340e740644 | 232 | printf("Running motor 0 at 5%% of the maximum speed\r\n"); |
cerimis | 9:b7fc55bf70b2 | 233 | /* Set speed of motor 1 to 10 % */ |
cerimis | 9:b7fc55bf70b2 | 234 | motor->set_speed(0,500); |
cerimis | 9:b7fc55bf70b2 | 235 | /* start motor 1 */ |
cerimis | 9:b7fc55bf70b2 | 236 | //motor->run(1, BDCMotor::FWD); |
davide.aliprandi@st.com | 6:b9b32d6c2b40 | 237 | motor->run(0, BDCMotor::FWD); |
brdirais | 0:dcc35ef6effc | 238 | } |
brdirais | 0:dcc35ef6effc | 239 | |
cerimis | 9:b7fc55bf70b2 | 240 | if (gStep == 3) { |
cerimis | 9:b7fc55bf70b2 | 241 | printf("Running motor 0 at 10%% of the maximum speed\r\n"); |
Davidroid | 8:05340e740644 | 242 | /* Set speed of motor 2 to 15 % */ |
cerimis | 9:b7fc55bf70b2 | 243 | motor->set_speed(0,1000); |
brdirais | 0:dcc35ef6effc | 244 | /* start motor 2 */ |
cerimis | 9:b7fc55bf70b2 | 245 | //motor->run(2, BDCMotor::FWD); |
cerimis | 9:b7fc55bf70b2 | 246 | motor->run(0, BDCMotor::FWD); |
brdirais | 0:dcc35ef6effc | 247 | } |
brdirais | 0:dcc35ef6effc | 248 | |
cerimis | 9:b7fc55bf70b2 | 249 | if (gStep == 4) { |
cerimis | 9:b7fc55bf70b2 | 250 | printf("Running motor 0 at 50%% of the maximum speed\r\n"); |
Davidroid | 8:05340e740644 | 251 | /* Set speed of motor 3 to 20 % */ |
cerimis | 9:b7fc55bf70b2 | 252 | motor->set_speed(0,5000); |
brdirais | 0:dcc35ef6effc | 253 | /* start motor 3 */ |
cerimis | 9:b7fc55bf70b2 | 254 | //motor->run(3, BDCMotor::FWD); |
cerimis | 9:b7fc55bf70b2 | 255 | motor->run(0, BDCMotor::FWD); |
brdirais | 0:dcc35ef6effc | 256 | } |
brdirais | 0:dcc35ef6effc | 257 | |
cerimis | 9:b7fc55bf70b2 | 258 | if (gStep >= 0) { |
brdirais | 0:dcc35ef6effc | 259 | wait_ms(1000); |
brdirais | 0:dcc35ef6effc | 260 | |
cerimis | 9:b7fc55bf70b2 | 261 | //motor->hard_hiz(0); |
cerimis | 9:b7fc55bf70b2 | 262 | //motor->hard_hiz(1); |
cerimis | 9:b7fc55bf70b2 | 263 | //motor->hard_hiz(2); |
cerimis | 9:b7fc55bf70b2 | 264 | //motor->hard_hiz(3); |
brdirais | 0:dcc35ef6effc | 265 | |
cerimis | 9:b7fc55bf70b2 | 266 | //wait_ms(1000); |
brdirais | 0:dcc35ef6effc | 267 | } |
brdirais | 0:dcc35ef6effc | 268 | } |
brdirais | 0:dcc35ef6effc | 269 | } |
brdirais | 0:dcc35ef6effc | 270 | |
brdirais | 0:dcc35ef6effc | 271 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
cerimis | 9:b7fc55bf70b2 | 272 |