Source_File

Dependencies:   mbed X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Wed Apr 03 07:36:07 2019 +0000
Revision:
27:b6e6afc3b1f7
Parent:
26:caec5f51abe8
Source_File

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:5148e9486cf2 1 /**
Davidroid 0:5148e9486cf2 2 ******************************************************************************
Davidroid 0:5148e9486cf2 3 * @file main.cpp
Davidroid 12:5be6dd48b94a 4 * @author Davide Aliprandi, STMicroelectronics
Davidroid 0:5148e9486cf2 5 * @version V1.0.0
Davidroid 0:5148e9486cf2 6 * @date November 4th, 2015
Davidroid 12:5be6dd48b94a 7 * @brief mbed test application for the STMicroelectronics X-NUCLEO-IHM02A1
Davidroid 1:9f1974b0960d 8 * Motor Control Expansion Board: control of 2 motors.
Davidroid 0:5148e9486cf2 9 ******************************************************************************
Davidroid 0:5148e9486cf2 10 * @attention
Davidroid 0:5148e9486cf2 11 *
Davidroid 0:5148e9486cf2 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
Davidroid 0:5148e9486cf2 13 *
Davidroid 0:5148e9486cf2 14 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 0:5148e9486cf2 15 * are permitted provided that the following conditions are met:
Davidroid 0:5148e9486cf2 16 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 0:5148e9486cf2 17 * this list of conditions and the following disclaimer.
Davidroid 0:5148e9486cf2 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 0:5148e9486cf2 19 * this list of conditions and the following disclaimer in the documentation
Davidroid 0:5148e9486cf2 20 * and/or other materials provided with the distribution.
Davidroid 0:5148e9486cf2 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 0:5148e9486cf2 22 * may be used to endorse or promote products derived from this software
Davidroid 0:5148e9486cf2 23 * without specific prior written permission.
Davidroid 0:5148e9486cf2 24 *
Davidroid 0:5148e9486cf2 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 0:5148e9486cf2 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 0:5148e9486cf2 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 0:5148e9486cf2 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 0:5148e9486cf2 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 0:5148e9486cf2 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 0:5148e9486cf2 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 0:5148e9486cf2 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 0:5148e9486cf2 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 0:5148e9486cf2 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 0:5148e9486cf2 35 *
Davidroid 0:5148e9486cf2 36 ******************************************************************************
Davidroid 0:5148e9486cf2 37 */
Davidroid 0:5148e9486cf2 38
Davidroid 0:5148e9486cf2 39
Davidroid 0:5148e9486cf2 40 /* Includes ------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 41
Davidroid 0:5148e9486cf2 42 /* mbed specific header files. */
Davidroid 0:5148e9486cf2 43 #include "mbed.h"
scherfa2 27:b6e6afc3b1f7 44 #include "main.h"
scherfa2 27:b6e6afc3b1f7 45 #include "PWM.h"
Davidroid 0:5148e9486cf2 46
Davidroid 0:5148e9486cf2 47 /* Helper header files. */
Davidroid 0:5148e9486cf2 48 #include "DevSPI.h"
Davidroid 0:5148e9486cf2 49
Davidroid 0:5148e9486cf2 50 /* Expansion Board specific header files. */
Davidroid 26:caec5f51abe8 51 #include "XNucleoIHM02A1.h"
Davidroid 0:5148e9486cf2 52
Davidroid 0:5148e9486cf2 53
Davidroid 0:5148e9486cf2 54 /* Definitions ---------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 55
Davidroid 0:5148e9486cf2 56 /* Number of movements per revolution. */
Davidroid 0:5148e9486cf2 57 #define MPR_1 4
Davidroid 1:9f1974b0960d 58
Davidroid 1:9f1974b0960d 59 /* Number of steps. */
Davidroid 18:591a007effc2 60 #define STEPS_1 (400 * 128) /* 1 revolution given a 400 steps motor configured at 1/128 microstep mode. */
Davidroid 18:591a007effc2 61 #define STEPS_2 (STEPS_1 * 2)
Davidroid 0:5148e9486cf2 62
Davidroid 0:5148e9486cf2 63 /* Delay in milliseconds. */
Davidroid 1:9f1974b0960d 64 #define DELAY_1 1000
Davidroid 0:5148e9486cf2 65 #define DELAY_2 2000
Davidroid 0:5148e9486cf2 66 #define DELAY_3 5000
Davidroid 0:5148e9486cf2 67
scherfa2 27:b6e6afc3b1f7 68 DigitalOut led1(LED1);
scherfa2 27:b6e6afc3b1f7 69
scherfa2 27:b6e6afc3b1f7 70
scherfa2 27:b6e6afc3b1f7 71
scherfa2 27:b6e6afc3b1f7 72 InterruptIn button1(USER_BUTTON);
scherfa2 27:b6e6afc3b1f7 73 volatile int idx = 0;
scherfa2 27:b6e6afc3b1f7 74 volatile bool button1_pressed = false; // Used in the main loop
scherfa2 27:b6e6afc3b1f7 75 volatile bool button1_enabled = true; // Used for debouncing
scherfa2 27:b6e6afc3b1f7 76 Timeout button1_timeout; // Used for debouncing
scherfa2 27:b6e6afc3b1f7 77
scherfa2 27:b6e6afc3b1f7 78 // Enables button when bouncing is over
scherfa2 27:b6e6afc3b1f7 79 void button1_enabled_cb(void)
scherfa2 27:b6e6afc3b1f7 80 {
scherfa2 27:b6e6afc3b1f7 81 button1_enabled = true;
scherfa2 27:b6e6afc3b1f7 82 }
scherfa2 27:b6e6afc3b1f7 83
scherfa2 27:b6e6afc3b1f7 84 // ISR handling button pressed event
scherfa2 27:b6e6afc3b1f7 85 void button1_onpressed_cb(void)
scherfa2 27:b6e6afc3b1f7 86 {
scherfa2 27:b6e6afc3b1f7 87 if (button1_enabled) { // Disabled while the button is bouncing
scherfa2 27:b6e6afc3b1f7 88 button1_enabled = false;
scherfa2 27:b6e6afc3b1f7 89 button1_pressed = true; // To be read by the main loop
scherfa2 27:b6e6afc3b1f7 90
scherfa2 27:b6e6afc3b1f7 91 if(idx<4){
scherfa2 27:b6e6afc3b1f7 92 idx++;
scherfa2 27:b6e6afc3b1f7 93 }
scherfa2 27:b6e6afc3b1f7 94 else{idx=1;}
scherfa2 27:b6e6afc3b1f7 95
scherfa2 27:b6e6afc3b1f7 96 button1_timeout.attach(callback(button1_enabled_cb), 0.03); // Debounce time 300 ms
scherfa2 27:b6e6afc3b1f7 97 }
scherfa2 27:b6e6afc3b1f7 98 }
Davidroid 0:5148e9486cf2 99
Davidroid 0:5148e9486cf2 100 /* Variables -----------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 101
Davidroid 0:5148e9486cf2 102 /* Motor Control Expansion Board. */
scherfa2 27:b6e6afc3b1f7 103 XNucleoIHM02A1 *x_nucleo_ihm02a1_1;
scherfa2 27:b6e6afc3b1f7 104 //XNucleoIHM02A1 *x_nucleo_ihm02a1_2;
Davidroid 9:f35fbeedb8f4 105 /* Initialization parameters of the motors connected to the expansion board. */
davide.aliprandi@st.com 24:d1f487cb02ba 106 L6470_init_t init[L6470DAISYCHAINSIZE] = {
Davidroid 9:f35fbeedb8f4 107 /* First Motor. */
Davidroid 9:f35fbeedb8f4 108 {
Davidroid 18:591a007effc2 109 9.0, /* Motor supply voltage in V. */
Davidroid 18:591a007effc2 110 400, /* Min number of steps per revolution for the motor. */
Davidroid 18:591a007effc2 111 1.7, /* Max motor phase voltage in A. */
Davidroid 18:591a007effc2 112 3.06, /* Max motor phase voltage in V. */
Davidroid 18:591a007effc2 113 300.0, /* Motor initial speed [step/s]. */
Davidroid 18:591a007effc2 114 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
Davidroid 18:591a007effc2 115 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
Davidroid 18:591a007effc2 116 992.0, /* Motor maximum speed [step/s]. */
Davidroid 18:591a007effc2 117 0.0, /* Motor minimum speed [step/s]. */
Davidroid 18:591a007effc2 118 602.7, /* Motor full-step speed threshold [step/s]. */
Davidroid 18:591a007effc2 119 3.06, /* Holding kval [V]. */
Davidroid 18:591a007effc2 120 3.06, /* Constant speed kval [V]. */
Davidroid 18:591a007effc2 121 3.06, /* Acceleration starting kval [V]. */
Davidroid 18:591a007effc2 122 3.06, /* Deceleration starting kval [V]. */
Davidroid 18:591a007effc2 123 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
Davidroid 18:591a007effc2 124 392.1569e-6, /* Start slope [s/step]. */
Davidroid 18:591a007effc2 125 643.1372e-6, /* Acceleration final slope [s/step]. */
Davidroid 18:591a007effc2 126 643.1372e-6, /* Deceleration final slope [s/step]. */
Davidroid 18:591a007effc2 127 0, /* Thermal compensation factor (range [0, 15]). */
Davidroid 18:591a007effc2 128 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
Davidroid 18:591a007effc2 129 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
Davidroid 18:591a007effc2 130 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
Davidroid 18:591a007effc2 131 0xFF, /* Alarm conditions enable. */
Davidroid 18:591a007effc2 132 0x2E88 /* Ic configuration. */
Davidroid 9:f35fbeedb8f4 133 },
Davidroid 9:f35fbeedb8f4 134
Davidroid 9:f35fbeedb8f4 135 /* Second Motor. */
Davidroid 9:f35fbeedb8f4 136 {
Davidroid 18:591a007effc2 137 9.0, /* Motor supply voltage in V. */
Davidroid 18:591a007effc2 138 400, /* Min number of steps per revolution for the motor. */
Davidroid 18:591a007effc2 139 1.7, /* Max motor phase voltage in A. */
Davidroid 18:591a007effc2 140 3.06, /* Max motor phase voltage in V. */
Davidroid 18:591a007effc2 141 300.0, /* Motor initial speed [step/s]. */
Davidroid 18:591a007effc2 142 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */
Davidroid 18:591a007effc2 143 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */
Davidroid 18:591a007effc2 144 992.0, /* Motor maximum speed [step/s]. */
Davidroid 18:591a007effc2 145 0.0, /* Motor minimum speed [step/s]. */
Davidroid 18:591a007effc2 146 602.7, /* Motor full-step speed threshold [step/s]. */
Davidroid 18:591a007effc2 147 3.06, /* Holding kval [V]. */
Davidroid 18:591a007effc2 148 3.06, /* Constant speed kval [V]. */
Davidroid 18:591a007effc2 149 3.06, /* Acceleration starting kval [V]. */
Davidroid 18:591a007effc2 150 3.06, /* Deceleration starting kval [V]. */
Davidroid 18:591a007effc2 151 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */
Davidroid 18:591a007effc2 152 392.1569e-6, /* Start slope [s/step]. */
Davidroid 18:591a007effc2 153 643.1372e-6, /* Acceleration final slope [s/step]. */
Davidroid 18:591a007effc2 154 643.1372e-6, /* Deceleration final slope [s/step]. */
Davidroid 18:591a007effc2 155 0, /* Thermal compensation factor (range [0, 15]). */
Davidroid 18:591a007effc2 156 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */
Davidroid 18:591a007effc2 157 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */
Davidroid 18:591a007effc2 158 StepperMotor::STEP_MODE_1_128, /* Step mode selection. */
Davidroid 18:591a007effc2 159 0xFF, /* Alarm conditions enable. */
Davidroid 18:591a007effc2 160 0x2E88 /* Ic configuration. */
Davidroid 9:f35fbeedb8f4 161 }
Davidroid 9:f35fbeedb8f4 162 };
Davidroid 9:f35fbeedb8f4 163
Davidroid 0:5148e9486cf2 164
Davidroid 0:5148e9486cf2 165 /* Main ----------------------------------------------------------------------*/
Davidroid 0:5148e9486cf2 166
Davidroid 0:5148e9486cf2 167 int main()
Davidroid 0:5148e9486cf2 168 {
Davidroid 1:9f1974b0960d 169 /*----- Initialization. -----*/
Davidroid 1:9f1974b0960d 170
Davidroid 2:41eeee48951b 171 /* Initializing SPI bus. */
Davidroid 23:073b26366d03 172 #ifdef TARGET_STM32F429
Davidroid 23:073b26366d03 173 DevSPI dev_spi(D11, D12, D13);
Davidroid 23:073b26366d03 174 #else
Davidroid 3:fd280b953f77 175 DevSPI dev_spi(D11, D12, D3);
Davidroid 23:073b26366d03 176 #endif
Davidroid 0:5148e9486cf2 177
Davidroid 5:3b8e19bbf386 178 /* Initializing Motor Control Expansion Board. */
scherfa2 27:b6e6afc3b1f7 179 x_nucleo_ihm02a1_1 = new XNucleoIHM02A1(&init[0], &init[1], A4, A5, D4, A2, &dev_spi);
scherfa2 27:b6e6afc3b1f7 180 // x_nucleo_ihm02a1_2 = new XNucleoIHM02A1(&init[0], &init[1], A4, A5, D4, A2, &dev_spi);
Davidroid 0:5148e9486cf2 181
Davidroid 1:9f1974b0960d 182 /* Building a list of motor control components. */
scherfa2 27:b6e6afc3b1f7 183 L6470 **motors = x_nucleo_ihm02a1_1->get_components();
scherfa2 27:b6e6afc3b1f7 184 //L6470 **motors2 = x_nucleo_ihm02a1_2->get_components();
Davidroid 1:9f1974b0960d 185 /*----- Setting home and marke positions, getting positions, and going to positions. -----*/
Davidroid 1:9f1974b0960d 186
Davidroid 18:591a007effc2 187 /* Setting the home position. */
scherfa2 27:b6e6afc3b1f7 188 //motors[0]->set_home();
Davidroid 18:591a007effc2 189
scherfa2 27:b6e6afc3b1f7 190
Davidroid 0:5148e9486cf2 191
Davidroid 1:9f1974b0960d 192 /*----- Running together for a certain amount of time. -----*/
scherfa2 27:b6e6afc3b1f7 193
scherfa2 27:b6e6afc3b1f7 194 button1.fall(callback(button1_onpressed_cb)); // Attach ISR to handle button press event
Davidroid 0:5148e9486cf2 195
scherfa2 27:b6e6afc3b1f7 196 while(1) {
scherfa2 27:b6e6afc3b1f7 197 if (button1_pressed) { // Set when button is pressed
scherfa2 27:b6e6afc3b1f7 198 button1_pressed = false;
scherfa2 27:b6e6afc3b1f7 199 switch (idx){
scherfa2 27:b6e6afc3b1f7 200 case 1:
scherfa2 27:b6e6afc3b1f7 201 pwm_io(50, 0.0); // 20ms - 0%
scherfa2 27:b6e6afc3b1f7 202 /* Printing to the console. */
scherfa2 27:b6e6afc3b1f7 203 printf("--> Running together for %d seconds.\r\n", DELAY_3 / 1000);
scherfa2 27:b6e6afc3b1f7 204
scherfa2 27:b6e6afc3b1f7 205 motors[1]->prepare_set_acceleration(7000);
scherfa2 27:b6e6afc3b1f7 206 motors[0]->prepare_set_acceleration(7000);
scherfa2 27:b6e6afc3b1f7 207
scherfa2 27:b6e6afc3b1f7 208
Davidroid 1:9f1974b0960d 209
scherfa2 27:b6e6afc3b1f7 210 /* Preparing each motor to perform a run at a specified speed. */
scherfa2 27:b6e6afc3b1f7 211
scherfa2 27:b6e6afc3b1f7 212 motors[1]->prepare_run(StepperMotor::BWD, 800);
scherfa2 27:b6e6afc3b1f7 213 motors[0]->prepare_run(StepperMotor::BWD, 808);
Davidroid 0:5148e9486cf2 214
scherfa2 27:b6e6afc3b1f7 215 /* Performing the action on each motor at the same time. */
scherfa2 27:b6e6afc3b1f7 216 x_nucleo_ihm02a1_1->perform_prepared_actions();
scherfa2 27:b6e6afc3b1f7 217
scherfa2 27:b6e6afc3b1f7 218 break;
scherfa2 27:b6e6afc3b1f7 219 case 2:
scherfa2 27:b6e6afc3b1f7 220 /* Printing to the console. */
scherfa2 27:b6e6afc3b1f7 221 printf("--> Hard Stop.\r\n");
Davidroid 0:5148e9486cf2 222
scherfa2 27:b6e6afc3b1f7 223 /* Preparing each motor to perform a hard stop. */
scherfa2 27:b6e6afc3b1f7 224 for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
scherfa2 27:b6e6afc3b1f7 225 motors[m]->prepare_hard_stop();
scherfa2 27:b6e6afc3b1f7 226 }
scherfa2 27:b6e6afc3b1f7 227
scherfa2 27:b6e6afc3b1f7 228 /* Performing the action on each motor at the same time. */
scherfa2 27:b6e6afc3b1f7 229 x_nucleo_ihm02a1_1->perform_prepared_actions();
scherfa2 27:b6e6afc3b1f7 230 break;
scherfa2 27:b6e6afc3b1f7 231 case 3:
scherfa2 27:b6e6afc3b1f7 232 // while (!button1_pressed) { // Set when button is pressed
scherfa2 27:b6e6afc3b1f7 233 // button1_pressed = false;
scherfa2 27:b6e6afc3b1f7 234 for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
scherfa2 27:b6e6afc3b1f7 235 motors[m]->prepare_set_acceleration(300);
scherfa2 27:b6e6afc3b1f7 236 //motors[m]->prepare_set_speed(1);
scherfa2 27:b6e6afc3b1f7 237 }
scherfa2 27:b6e6afc3b1f7 238 x_nucleo_ihm02a1_1->perform_prepared_actions();
scherfa2 27:b6e6afc3b1f7 239 for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
scherfa2 27:b6e6afc3b1f7 240 // motors[m]->prepare_set_acceleration(7000);
scherfa2 27:b6e6afc3b1f7 241 motors[m]->prepare_set_speed(100);
scherfa2 27:b6e6afc3b1f7 242 }
scherfa2 27:b6e6afc3b1f7 243 x_nucleo_ihm02a1_1->perform_prepared_actions();
scherfa2 27:b6e6afc3b1f7 244 /* motors[1]->move(StepperMotor::FWD, 400*128);
scherfa2 27:b6e6afc3b1f7 245 motors[0]->move(StepperMotor::FWD, 400*128);
scherfa2 27:b6e6afc3b1f7 246 motors[1]->wait_while_active();
scherfa2 27:b6e6afc3b1f7 247 motors[0]->wait_while_active();
scherfa2 27:b6e6afc3b1f7 248 motors[1]->move(StepperMotor::BWD, 400*128);
scherfa2 27:b6e6afc3b1f7 249 motors[0]->move(StepperMotor::BWD, 400*128);
scherfa2 27:b6e6afc3b1f7 250 motors[1]->wait_while_active();
scherfa2 27:b6e6afc3b1f7 251 motors[0]->wait_while_active();
scherfa2 27:b6e6afc3b1f7 252 */
scherfa2 27:b6e6afc3b1f7 253 //while (idx==3){
scherfa2 27:b6e6afc3b1f7 254 pwm_io(40, 0.85); // 20ms - 25%
scherfa2 27:b6e6afc3b1f7 255 wait(0.5);
scherfa2 27:b6e6afc3b1f7 256 motors[1]->run(StepperMotor::BWD,100);
scherfa2 27:b6e6afc3b1f7 257 motors[0]->run(StepperMotor::BWD,101);
scherfa2 27:b6e6afc3b1f7 258 // }
scherfa2 27:b6e6afc3b1f7 259
scherfa2 27:b6e6afc3b1f7 260 /* Waiting. */
scherfa2 27:b6e6afc3b1f7 261 // wait_ms(DELAY_2);
scherfa2 27:b6e6afc3b1f7 262
scherfa2 27:b6e6afc3b1f7 263 break;
scherfa2 27:b6e6afc3b1f7 264 case 4:
scherfa2 27:b6e6afc3b1f7 265
scherfa2 27:b6e6afc3b1f7 266 /* Preparing each motor to set High Impedance State. */
scherfa2 27:b6e6afc3b1f7 267 for (int m = 0; m < L6470DAISYCHAINSIZE; m++) {
scherfa2 27:b6e6afc3b1f7 268 motors[m]->prepare_hard_hiz();
scherfa2 27:b6e6afc3b1f7 269 }
scherfa2 27:b6e6afc3b1f7 270
scherfa2 27:b6e6afc3b1f7 271 /* Performing the action on each motor at the same time. */
scherfa2 27:b6e6afc3b1f7 272 x_nucleo_ihm02a1_1->perform_prepared_actions();
scherfa2 27:b6e6afc3b1f7 273 float zusatz= 0.1;
scherfa2 27:b6e6afc3b1f7 274 // for(int i = 0;i>10;i++){
scherfa2 27:b6e6afc3b1f7 275 //zusatz=zusatz-0.005;
scherfa2 27:b6e6afc3b1f7 276
scherfa2 27:b6e6afc3b1f7 277
scherfa2 27:b6e6afc3b1f7 278 pwm_io2(20000, 0.075); // 20ms - 25%
scherfa2 27:b6e6afc3b1f7 279 wait(1);
scherfa2 27:b6e6afc3b1f7 280 pwm_io2(20000, zusatz); // 20ms - 25%
scherfa2 27:b6e6afc3b1f7 281
scherfa2 27:b6e6afc3b1f7 282 // }
scherfa2 27:b6e6afc3b1f7 283 break;
scherfa2 27:b6e6afc3b1f7 284
scherfa2 27:b6e6afc3b1f7 285 }
scherfa2 27:b6e6afc3b1f7 286 // printf("Button pressed %d\n", idx++);
scherfa2 27:b6e6afc3b1f7 287 // led1 = !led1;
Davidroid 1:9f1974b0960d 288 }
Davidroid 22:e81ccf73bc5d 289 }
scherfa2 27:b6e6afc3b1f7 290
Davidroid 22:e81ccf73bc5d 291 }