Update
Dependencies: mbed mbed-rtos X_NUCLEO_IHM02A1
main.cpp@38:3776ee18e56f, 2019-05-13 (annotated)
- Committer:
- scherfa2
- Date:
- Mon May 13 10:11:48 2019 +0000
- Revision:
- 38:3776ee18e56f
- Parent:
- 37:a74d377d8f74
- Child:
- 39:6cc9a40bc8a6
Buttons update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hagenrap | 35:758191d5c6e1 | 1 | /* ------------------------ INCLUDE ----------------------------------------- */ |
hagenrap | 33:de144094bdd1 | 2 | #include "SETUP.h" |
Davidroid | 1:9f1974b0960d | 3 | |
hagenrap | 35:758191d5c6e1 | 4 | /* ---------------------------- END ----------------------------------------- */ |
hagenrap | 35:758191d5c6e1 | 5 | |
hagenrap | 35:758191d5c6e1 | 6 | |
hagenrap | 35:758191d5c6e1 | 7 | /* Zum testen */ |
hagenrap | 35:758191d5c6e1 | 8 | DigitalOut myled(LED1); |
hagenrap | 35:758191d5c6e1 | 9 | DigitalIn mybutton(USER_BUTTON); |
hagenrap | 35:758191d5c6e1 | 10 | |
hagenrap | 35:758191d5c6e1 | 11 | |
hagenrap | 35:758191d5c6e1 | 12 | |
hagenrap | 35:758191d5c6e1 | 13 | /* ----------------------- INITIALISIERUNG ---------------------------------- */ |
hagenrap | 35:758191d5c6e1 | 14 | /* -------------------------------------------------------------------------- */ |
Davidroid | 0:5148e9486cf2 | 15 | |
scherfa2 | 27:23bd03a6a6f6 | 16 | /* Status Spleisser definieren*/ |
scherfa2 | 27:23bd03a6a6f6 | 17 | int StatusSpleisser = ST_SOLO; |
scherfa2 | 27:23bd03a6a6f6 | 18 | |
hagenrap | 35:758191d5c6e1 | 19 | |
scherfa2 | 34:0dee9a606869 | 20 | /*Buttons initialisieren*/ |
hagenrap | 37:a74d377d8f74 | 21 | |
scherfa2 | 38:3776ee18e56f | 22 | //InterruptIn buttonSTART(START_BUTTON); |
scherfa2 | 38:3776ee18e56f | 23 | DigitalIn Button1(START_BUTTON); |
scherfa2 | 34:0dee9a606869 | 24 | volatile bool buttonSTART_pressed = false; // Used in the main loop |
scherfa2 | 34:0dee9a606869 | 25 | volatile bool buttonSTART_enabled = true; // Used for debouncing |
scherfa2 | 34:0dee9a606869 | 26 | Timeout buttonSTART_timeout; // Used for debouncing |
scherfa2 | 34:0dee9a606869 | 27 | |
scherfa2 | 38:3776ee18e56f | 28 | //InterruptIn buttonAbbruch(ABBRUCH_BUTTON); |
scherfa2 | 38:3776ee18e56f | 29 | DigitalIn Button2(ABBRUCH_BUTTON); |
hagenrap | 35:758191d5c6e1 | 30 | volatile bool buttonAbbruch_pressed = false; // Used in the main loop |
hagenrap | 35:758191d5c6e1 | 31 | volatile bool buttonAbbruch_enabled = true; // Used for debouncing |
hagenrap | 35:758191d5c6e1 | 32 | Timeout buttonAbbruch_timeout; // Used for debouncing |
hagenrap | 35:758191d5c6e1 | 33 | |
hagenrap | 35:758191d5c6e1 | 34 | |
scherfa2 | 34:0dee9a606869 | 35 | /*PWMs initialisieren*/ |
hagenrap | 35:758191d5c6e1 | 36 | PwmOut Servo (SERVO_PWM); |
hagenrap | 35:758191d5c6e1 | 37 | PwmOut Cutter_1 (CUTTER_ARC_1); |
hagenrap | 35:758191d5c6e1 | 38 | PwmOut Cutter_2 (CUTTER_ARC_2); |
hagenrap | 35:758191d5c6e1 | 39 | PwmOut Spleisser_1 (SPLEISSER_ARC_1); |
hagenrap | 35:758191d5c6e1 | 40 | PwmOut Spleisser_2 (SPLEISSER_ARC_2); |
hagenrap | 35:758191d5c6e1 | 41 | |
hagenrap | 35:758191d5c6e1 | 42 | /*Lichtschranken*/ |
hagenrap | 35:758191d5c6e1 | 43 | DigitalIn LS_1(LICHTSCHRANKE_1); // HIGH - kein Filament / LOW - Filament |
hagenrap | 35:758191d5c6e1 | 44 | DigitalIn LS_2(LICHTSCHRANKE_2); // HIGH - kein Filament / LOW - Filament /* Mit LS_x.read(); auslesen */ |
hagenrap | 35:758191d5c6e1 | 45 | DigitalIn LS_3(LICHTSCHRANKE_3); // HIGH - kein Filament / LOW - Filament |
scherfa2 | 34:0dee9a606869 | 46 | |
scherfa2 | 27:23bd03a6a6f6 | 47 | /*Input initalisieren für Status Spleisser*/ |
hagenrap | 33:de144094bdd1 | 48 | DigitalIn InputKontrollmodul(COM_SIGNAL); |
hagenrap | 33:de144094bdd1 | 49 | |
scherfa2 | 34:0dee9a606869 | 50 | /* Motor Control Expansion Board. */ |
scherfa2 | 34:0dee9a606869 | 51 | XNucleoIHM02A1 *x_nucleo_ihm02a1_1; |
scherfa2 | 34:0dee9a606869 | 52 | XNucleoIHM02A12 *x_nucleo_ihm02a1_2; |
hagenrap | 33:de144094bdd1 | 53 | |
scherfa2 | 34:0dee9a606869 | 54 | /* Initialization parameters of the motors connected to the expansion board. */ |
scherfa2 | 34:0dee9a606869 | 55 | L6470_init_t init[L6470DAISYCHAINSIZE] = { |
scherfa2 | 34:0dee9a606869 | 56 | /* First Motor. */ |
scherfa2 | 34:0dee9a606869 | 57 | { |
hagenrap | 35:758191d5c6e1 | 58 | 12.0, /* Motor supply voltage in V. */ |
scherfa2 | 34:0dee9a606869 | 59 | 400, /* Min number of steps per revolution for the motor. */ |
scherfa2 | 34:0dee9a606869 | 60 | 1.7, /* Max motor phase voltage in A. */ |
scherfa2 | 34:0dee9a606869 | 61 | 3.06, /* Max motor phase voltage in V. */ |
scherfa2 | 34:0dee9a606869 | 62 | 300.0, /* Motor initial speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 63 | 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */ |
scherfa2 | 34:0dee9a606869 | 64 | 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */ |
scherfa2 | 34:0dee9a606869 | 65 | 992.0, /* Motor maximum speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 66 | 0.0, /* Motor minimum speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 67 | 602.7, /* Motor full-step speed threshold [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 68 | 3.06, /* Holding kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 69 | 3.06, /* Constant speed kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 70 | 3.06, /* Acceleration starting kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 71 | 3.06, /* Deceleration starting kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 72 | 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 73 | 392.1569e-6, /* Start slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 74 | 643.1372e-6, /* Acceleration final slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 75 | 643.1372e-6, /* Deceleration final slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 76 | 0, /* Thermal compensation factor (range [0, 15]). */ |
scherfa2 | 34:0dee9a606869 | 77 | 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */ |
scherfa2 | 34:0dee9a606869 | 78 | 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */ |
scherfa2 | 34:0dee9a606869 | 79 | StepperMotor::STEP_MODE_1_128, /* Step mode selection. */ |
scherfa2 | 34:0dee9a606869 | 80 | 0xFF, /* Alarm conditions enable. */ |
scherfa2 | 34:0dee9a606869 | 81 | 0x2E88 /* Ic configuration. */ |
scherfa2 | 34:0dee9a606869 | 82 | }, |
scherfa2 | 34:0dee9a606869 | 83 | |
scherfa2 | 34:0dee9a606869 | 84 | /* Second Motor. */ |
scherfa2 | 34:0dee9a606869 | 85 | { |
scherfa2 | 34:0dee9a606869 | 86 | 12.0, /* Motor supply voltage in V. */ |
scherfa2 | 34:0dee9a606869 | 87 | 400, /* Min number of steps per revolution for the motor. */ |
scherfa2 | 34:0dee9a606869 | 88 | 1.7, /* Max motor phase voltage in A. */ |
scherfa2 | 34:0dee9a606869 | 89 | 3.06, /* Max motor phase voltage in V. */ |
scherfa2 | 34:0dee9a606869 | 90 | 300.0, /* Motor initial speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 91 | 500.0, /* Motor acceleration [step/s^2] (comment for infinite acceleration mode). */ |
scherfa2 | 34:0dee9a606869 | 92 | 500.0, /* Motor deceleration [step/s^2] (comment for infinite deceleration mode). */ |
scherfa2 | 34:0dee9a606869 | 93 | 992.0, /* Motor maximum speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 94 | 0.0, /* Motor minimum speed [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 95 | 602.7, /* Motor full-step speed threshold [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 96 | 3.06, /* Holding kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 97 | 3.06, /* Constant speed kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 98 | 3.06, /* Acceleration starting kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 99 | 3.06, /* Deceleration starting kval [V]. */ |
scherfa2 | 34:0dee9a606869 | 100 | 61.52, /* Intersect speed for bemf compensation curve slope changing [step/s]. */ |
scherfa2 | 34:0dee9a606869 | 101 | 392.1569e-6, /* Start slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 102 | 643.1372e-6, /* Acceleration final slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 103 | 643.1372e-6, /* Deceleration final slope [s/step]. */ |
scherfa2 | 34:0dee9a606869 | 104 | 0, /* Thermal compensation factor (range [0, 15]). */ |
scherfa2 | 34:0dee9a606869 | 105 | 3.06 * 1000 * 1.10, /* Ocd threshold [ma] (range [375 ma, 6000 ma]). */ |
scherfa2 | 34:0dee9a606869 | 106 | 3.06 * 1000 * 1.00, /* Stall threshold [ma] (range [31.25 ma, 4000 ma]). */ |
scherfa2 | 34:0dee9a606869 | 107 | StepperMotor::STEP_MODE_1_128, /* Step mode selection. */ |
scherfa2 | 34:0dee9a606869 | 108 | 0xFF, /* Alarm conditions enable. */ |
scherfa2 | 34:0dee9a606869 | 109 | 0x2E88 /* Ic configuration. */ |
scherfa2 | 34:0dee9a606869 | 110 | } |
scherfa2 | 34:0dee9a606869 | 111 | }; |
hagenrap | 33:de144094bdd1 | 112 | |
hagenrap | 35:758191d5c6e1 | 113 | /* Motor Objekte */ |
scherfa2 | 34:0dee9a606869 | 114 | L6470B **motors2; |
scherfa2 | 34:0dee9a606869 | 115 | L6470 **motors; |
Davidroid | 0:5148e9486cf2 | 116 | |
hagenrap | 35:758191d5c6e1 | 117 | /* --------------------------------- END ------------------------------------ */ |
hagenrap | 35:758191d5c6e1 | 118 | /* -------------------------------------------------------------------------- */ |
Davidroid | 9:f35fbeedb8f4 | 119 | |
hagenrap | 35:758191d5c6e1 | 120 | |
hagenrap | 35:758191d5c6e1 | 121 | |
hagenrap | 35:758191d5c6e1 | 122 | |
hagenrap | 35:758191d5c6e1 | 123 | |
hagenrap | 35:758191d5c6e1 | 124 | |
hagenrap | 35:758191d5c6e1 | 125 | /* ---------------------------------- MAIN ---------------------------------- */ |
hagenrap | 35:758191d5c6e1 | 126 | /* -------------------------------------------------------------------------- */ |
Davidroid | 0:5148e9486cf2 | 127 | |
Davidroid | 0:5148e9486cf2 | 128 | int main() |
Davidroid | 0:5148e9486cf2 | 129 | { |
hagenrap | 35:758191d5c6e1 | 130 | |
scherfa2 | 34:0dee9a606869 | 131 | /* Initializing Motor Control Expansion Board. */ |
hagenrap | 35:758191d5c6e1 | 132 | x_nucleo_ihm02a1_1 = new XNucleoIHM02A1 (&init[0], &init[1], IRQ_FLAG_MOTOR, IRQ_BUSY_MOTOR, STB_MOTOR, SPI_CS_1, SPI_MOSI, SPI_MISO, SPI_CLK ); |
hagenrap | 35:758191d5c6e1 | 133 | x_nucleo_ihm02a1_2 = new XNucleoIHM02A12(&init[0], &init[1], IRQ_FLAG_MOTOR, IRQ_BUSY_MOTOR, STB_MOTOR, SPI_CS_2, SPI_MOSI, SPI_MISO, SPI_CLK ); |
hagenrap | 35:758191d5c6e1 | 134 | |
scherfa2 | 34:0dee9a606869 | 135 | /* Building a list of motor control components. */ |
scherfa2 | 34:0dee9a606869 | 136 | motors2 = x_nucleo_ihm02a1_2->get_components(); |
hagenrap | 35:758191d5c6e1 | 137 | motors = x_nucleo_ihm02a1_1->get_components(); |
hagenrap | 35:758191d5c6e1 | 138 | |
scherfa2 | 38:3776ee18e56f | 139 | /* Attach ISR to handle button press event |
hagenrap | 35:758191d5c6e1 | 140 | buttonSTART.fall(callback(buttonSTART_onpressed_cb)); |
hagenrap | 35:758191d5c6e1 | 141 | buttonAbbruch.fall(callback(buttonAbbruch_onpressed_cb)); |
scherfa2 | 38:3776ee18e56f | 142 | */ |
hagenrap | 35:758191d5c6e1 | 143 | /* Init PWM */ |
hagenrap | 35:758191d5c6e1 | 144 | Init_Servo(); |
hagenrap | 35:758191d5c6e1 | 145 | Init_Cutter(); |
hagenrap | 35:758191d5c6e1 | 146 | Init_Spleisser(); |
Davidroid | 18:591a007effc2 | 147 | |
hagenrap | 35:758191d5c6e1 | 148 | /*Display*/ |
hagenrap | 35:758191d5c6e1 | 149 | wait_ms(250); |
hagenrap | 35:758191d5c6e1 | 150 | DisplayInit(); |
hagenrap | 35:758191d5c6e1 | 151 | |
hagenrap | 35:758191d5c6e1 | 152 | |
hagenrap | 35:758191d5c6e1 | 153 | |
hagenrap | 35:758191d5c6e1 | 154 | |
hagenrap | 35:758191d5c6e1 | 155 | |
hagenrap | 35:758191d5c6e1 | 156 | |
hagenrap | 35:758191d5c6e1 | 157 | /* -------------------- ---- STATE_MACHINE ------------------------------ */ |
hagenrap | 35:758191d5c6e1 | 158 | while(1) |
scherfa2 | 27:23bd03a6a6f6 | 159 | { |
scherfa2 | 27:23bd03a6a6f6 | 160 | switch (StatusSpleisser) |
scherfa2 | 27:23bd03a6a6f6 | 161 | { |
scherfa2 | 27:23bd03a6a6f6 | 162 | case ST_SOLO: |
hagenrap | 33:de144094bdd1 | 163 | if(InputKontrollmodul == 0) |
scherfa2 | 27:23bd03a6a6f6 | 164 | { |
scherfa2 | 27:23bd03a6a6f6 | 165 | EntrySOLO(); |
scherfa2 | 27:23bd03a6a6f6 | 166 | } |
scherfa2 | 27:23bd03a6a6f6 | 167 | else |
scherfa2 | 27:23bd03a6a6f6 | 168 | { |
scherfa2 | 27:23bd03a6a6f6 | 169 | StatusSpleisser = ST_DUO; |
scherfa2 | 27:23bd03a6a6f6 | 170 | } |
scherfa2 | 27:23bd03a6a6f6 | 171 | break; |
scherfa2 | 27:23bd03a6a6f6 | 172 | case ST_DUO: |
hagenrap | 33:de144094bdd1 | 173 | if(InputKontrollmodul == 1) |
scherfa2 | 27:23bd03a6a6f6 | 174 | { |
scherfa2 | 27:23bd03a6a6f6 | 175 | EntryDUO(); |
scherfa2 | 27:23bd03a6a6f6 | 176 | } |
scherfa2 | 27:23bd03a6a6f6 | 177 | else |
scherfa2 | 27:23bd03a6a6f6 | 178 | { |
scherfa2 | 27:23bd03a6a6f6 | 179 | StatusSpleisser = ST_SOLO; |
scherfa2 | 27:23bd03a6a6f6 | 180 | } |
scherfa2 | 27:23bd03a6a6f6 | 181 | break; |
scherfa2 | 27:23bd03a6a6f6 | 182 | |
scherfa2 | 27:23bd03a6a6f6 | 183 | } |
Davidroid | 22:e81ccf73bc5d | 184 | } |
hagenrap | 35:758191d5c6e1 | 185 | /* ------------------------------ END ----------------------------------- */ |
hagenrap | 35:758191d5c6e1 | 186 | |
hagenrap | 35:758191d5c6e1 | 187 | |
hagenrap | 35:758191d5c6e1 | 188 | |
hagenrap | 35:758191d5c6e1 | 189 | |
Davidroid | 22:e81ccf73bc5d | 190 | } |
hagenrap | 35:758191d5c6e1 | 191 | /* --------------------------------- END ------------------------------------ */ |
hagenrap | 35:758191d5c6e1 | 192 | /* -------------------------------------------------------------------------- */ |